Pontifícia Universidade Católica do Rio de Janeiro PUC-RJ
Fundamentos da Computação Gráfica
Prof. Marcelo Gattass
Aluno: Bruno Rodrigues Froz
Terceiro Trabalho
Ray Tracing
Rio de Janeiro
2014
Sumário
1.
INTRODUÇÃO .................................................................................................................... 3
2.
PERCEPÇÃO DA IMAGEM E DA COR ............................................................................ 4
3.
1.
Imagem ............................................................................................................................. 4
2.
Cor .................................................................................................................................... 5
RAY TRACING .................................................................................................................... 6
3.1.
Sombra ......................................................................................................................... 7
3.2.
Luz ................................................................................................................................ 8
3.2.1
Luz Ambiente ........................................................................................................ 8
3.2.2
Difusa .................................................................................................................... 9
3.2.3
Luz Especular ...................................................................................................... 10
3.2.4
Modelo de Iluminação de Phong ......................................................................... 10
3.2.5
Reflexão .............................................................................................................. 11
3.3.
4.
Objetos ....................................................................................................................... 12
3.4.1
Esfera................................................................................................................... 12
3.4.2
Triângulo ............................................................................................................. 14
ESTUDO DE CASO ........................................................................................................... 16
4.1.
O primeiro raio .......................................................................................................... 16
4.2.
Iluminação ambiente ................................................................................................. 17
4.3.
Iluminação difusa ...................................................................................................... 17
4.4.
Iluminação Especular ............................................................................................... 18
4.5.
Modelo de Phong ....................................................................................................... 18
4.6.
Triângulos .................................................................................................................. 19
4.7.
Cenário ....................................................................................................................... 20
4.8.
Sombra ....................................................................................................................... 20
4.9.
Reflexão ...................................................................................................................... 21
4.10. Cena completa ............................................................................................................ 22
4.11. Profundidade .............................................................................................................. 23
CONCLUSÃO ............................................................................................................................ 25
1. INTRODUÇÃO
O avanço da tecnologia e da ciência ao longo dos anos foi em grande parte
responsabilidade da evolução da Ciência da Computação. Um dos motivos disso é a
necessidade humana de reduzir o esforço de suas ações o máximo possível,
automatizando processos do dia-a-dia. Uma forma de automatizar é prevendo o que
acontecerá em uma situação antes que ela aconteça. Uma das áreas da Ciência da
Computação que auxilia no desenvolvimento de formas de simulação e predição de
situações reais em um espaço simulado é a Computação Gráfica. Além dessa função, a
Computação Gráfica é bastante difundida no mundo do entretenimento, como em filmes
e em jogos.
A Computação Gráfica nada mais é do que uma forma de representar e estudar a geração
de imagens a partir de dados. A geração das imagens – e possivelmente, de cenas
contendo-as – é um dos problemas mais explorados da Ciência da Computação. Diversas
técnicas de criação de imagens em ambientes 2D e 3D foram desenvolvidos, porém, ainda
não há uma técnica perfeitamente genérica. A representação de uma imagem que
corresponda a um ambiente 3D pode ser feita de diversas formas.
Uma das técnicas de geração de imagens é o Ray Tracing. O Ray Tracing é um algoritmo
que simula o caminho inverso da chegada da luz refletida dos objetos até os olhos do
observador, gerando uma imagem 2D do objeto e do ambiente ao redor.
A grande desvantagem desta técnica é sua performance. Porém principal vantagem do
Ray Tracing é que ele pode gerar imagens com características muito realistas. A
independência de cada raio lançado para gerar a imagem também é uma vantagem, por
que facilita na paralelização do algoritmo, para melhora de performance.
O objetivo deste trabalho é desenvolver um Ray Tracing simples, que mostre a geração
das imagens e alguns efeitos básicos do algoritmo.
O trabalho é dividido em 4 Seções. A primeira explica sucintamente a formação das
imagens e das cores. A segunda mostra todo o conhecimento necessário para construir
um Ray Tracing bem simples. A terceira Seção mostra o Ray Tracing básico construído
e alguns objetos e cenas para exemplificar. Por fim, uma conclusão sobre o trabalho e
alguns pontos que foram descobertos ao longo do desenvolvimento.
2. PERCEPÇÃO DA IMAGEM E DA COR
Para entender como funciona o Ray Tracing, é necessário entender como é gerada uma
imagem no ambiente real.
1. Imagem
Ibn al-Haytham (c. 965-1039) foi o primeiro a perceber que nós enxergamos os objetos.
Ele observou que através de partículas que viajam do sol até os objetos, refletem nos
objetos e chegam aos nossos olhos, nos permitindo vê-los. A Figura 1 mostra como seria
esse modelo.
Figura 1 – Modelo de Haytham para a geração de imagens
Sabemos atualmente que essas partículas se chamam Fótons []. O modelo de Haytham
não está errado, porém, não é tão simples assim. Na verdade, vários fótons atingem o
mesmo objeto e os mesmos pontos, e grupos vão ser refletido direções diferentes. A
probabilidade de um deles alcançar os olhos humanos é alta somente por que estão em
uma quantidade bem grande, no mundo real. A Figura 2 mostra como a situação real
acontece.
Figura 2 – Fótons atingindo a superfície do objeto.
Além desse comportamento dos fótons, dependendo do material do objeto, eles podem
ter três comportamentos distintos: O fóton pode ser transmitido, refratado ou refletido.
2. Cor
A cor do objeto depende basicamente do material do objeto e da cor da fonte de luz
transmitida. Quando um fóton de luz atinge a superfície do objeto, ele pode ser absorvido
ou refletido pelo material. A combinação desses fótons refletidos e alcançando o olho
humano que será a cor do ponto do objeto.
Exemplificando, uma fonte de luz branca iluminando um objeto vermelho. Os fótons de
cores vermelhas serão refletidos e os demais absorvidos pelo objeto. Os fótons vermelhos
alcançarão os o observador, e o objeto será percebido pela cor vermelha.
Com essas informações, concluímos que se não há luz em um ambiente, não enxergamos.
Assim como se não há objetos no ambiente, não enxergamos a luz.
3. RAY TRACING
O Ray Tracing é um algoritmo de renderização de objetos 3D descritos, representados em
um plano 2D. A ideia por trás dessa técnica é simular a trajetória contrária dos raios de
luz, enviando um raio na direção do objeto e descobrindo a direção da luz incidente logo
em seguida.
A Figura 3 mostra a trajetória do raio lançado pelo observador.
Figura 3 – Demonstração do caminho oposto do raio de luz.
De forma bem sucinta, a principal vantagem dessa técnica é que não é necessário calcular
todas as direções do raio de luz para poder demonstrar os objetos, somente uma
quantidade limitada por um plano 2D e um ponto de origem.
A Figura 4 mostra os principais componentes desse algoritmo.
Figura 4 – Ray Tracing detalhado.
Um ponto de origem define o raio de origem (Ray Origin). Desse ponto, é definido um
escopo de câmera (Virtual Camera), que limita o campo de visão do ponto de origem a
um tamanho específico. Cada unidade desse tamanho será representada por um pixel de
uma imagem. Tendo o campo de visão e o ponto de origem, um raio é atirado (Primary
Ray), até interceptar um objeto. Ao intercepta-lo, o segundo raio é traçado a partir do
ponto interceptado e com direção à fonte de luz (Secundary Ray). Caso não haja nenhum
obstáculo entre o ponto interceptado e a luz, as características do objeto são representadas
na imagem.
Alguns elementos são necessários para adicionar realismo nos objetos, para representar o
mundo real de forma mais efetiva. Alguns desses elementos são a iluminação global
(fonte de luz), iluminação ambiente, difusa, especular, reflexão, refração e outros.
3.1.
Sombra
Onde há luz, há sombra, no mundo real. De forma semelhante, as sombras das cenas
devem ser representadas no ambiente 3D. Uma forma de fazer isso no ray tracing é
utilizar um segundo raio, chamado de raio de sombra (Shadow Ray), ou raio secundário
(Secundary Ray), que traça a trajetória do ponto que houve interseção com um objeto até
a fonte de luz. Caso haja uma interseção com outro objeto nessa trajetória, ali há sombra.
A Figura 5 ilustra essa situação.
Figura 5 – Shadow Ray.
3.2.
Luz
Como discutido na Seção 2, quando não há luz, não enxergamos a cena. A luz é a
componente principal para mostrar um objeto em uma cena e definir todos os outros
elementos de um ambiente 3D.
A luz pode ser tratada em uma cena como um objeto, sendo definida então uma posição
no espaço. Assim como pode ser tratada como um elemento abstrato, ou a combinação
dos dois.
A luz influencia também na cor dos objetos. Uma luz de cor branca é responsável apenas
por mostrar as características descritas de um objeto. Porém, se a cor da luz for diferente,
o objeto será mostrado com uma cor diferente.
Há formas abstratas de luz – ou seja, que influenciam na cena, mesmo não sendo um
objeto explícito - em uma cena. Três formas abstratas são a luz ambiente, difusa e
especular.
3.2.1
Luz Ambiente
A luz ambiente é uma forma de compensar a falta de iluminação em certas partes da cena. Assim,
um os objetos sempre serão visíveis, mesmo não havendo incidência direta de luz nele. É o
modelo mais simples de calcular luz indireta.
A luz ambiente é calculada através da Equação 1.
𝐼𝐴 = 𝐼𝑎 ∗ 𝐾𝑎
(Equação 1)
Onde 𝐼𝐴 é a luz ambiente incidida no objeto 𝐼𝑎 é a intensidade de luz ambiente, uma constante
que influencia em todos os objetos da cena e é definida pelo usuário. O termo 𝐾𝑎 é o coeficiente
de reflexão ambiente do objeto, que abrange um valor entre 0 e 1 e corresponde ao material do
objeto.
3.2.2
Difusa
A iluminação difusa coloca em prática um efeito que ilumina com mais intensidade as
partes de um objeto que estão mais próximas – em outras palavras, mais visíveis – da
fonte de luz. De forma mais algébrica, os pontos da superfície do objeto em que seus
vetores Normal têm os menores ângulos com o vetor da direção da luz, ou seja, perto de
0º, são mais iluminados, e os que tem os maiores ângulos são menos iluminados, ou não
iluminados (próximo de 90º). A Figura 6 demonstra a teoria da difusa.
Figura 6 – Teoria da iluminação difusa. No Case 1, o ângulo entre a normal e o raio incidente é
grande, havendo menos iluminação. No Case 2, há mais iluminação que no Case 1, por que o
ângulo foi diminuído. No Case 3, a iluminação é quase perfeita, e mais evidente do que nos outros
Cases.
A iluminação difusa é calculada através da Equação 2.
𝐼𝐷 = 𝐼𝐿 ∗ 𝐾𝑑 ∗ cos(𝜃) = 𝐼𝐿 ∗ 𝐾𝑑 ∗ 𝑁. 𝐿
(Equação 2)
Onde 𝐼𝐷 é a Iluminação Difusa, 𝐼𝐿 é a iluminação da fonte de luz, 𝐾𝑑 é a constante de reflexão
difusa, um número entre 0 e 1 e que depende do material do objeto. Note que o cos(𝜃), onde θ é
o ângulo entre a normal e o raio de luz, pode ser representado pelo produto escalar entre a Normal
N e o raio de luz L. Se o produto escalar der um valor negativo, a fonte de luz está atrás do ponto
que está sendo analisado, então o valor usado na equação deve ser 0.
3.2.3
Luz Especular
A iluminação especular representa a reflexão da luz no objeto difuso. Esse efeito é
observado no mundo real em objetos com material liso, que refletem em parte a luz
incidida sobre ele nos pontos onde a direção da luz é mais próxima da normal. A Figura
7 mostra os vetores desse modelo de reflexão de luz.
Figura 7 – Vetores da iluminação especular. L é o raio da fonte de luz, R é o raio refletido. V é o
raio traçado pelo observador, onde α é o ângulo entre V e o raio refletido. N é a normal.
Na prática, a especular mostra a direção da luz incidida sobre o objeto na própria
superfície do objeto.
A Equação 3 mostra como calcular essa iluminação especular.
𝐼𝑆 = 𝐼𝐿 ∗ 𝐾𝑠 ∗ cos(𝛼)𝑛
(Equação 3)
Onde 𝐼𝑆 é a iluminação especular, 𝐾𝑠 é a constante de reflexão especular, um número entre 0 e 1
que depende do material do objeto e cos(𝛼)𝑛 é o cosseno do ângulo entre o raio traçado pelo
observador e o raio refletido elevado por uma variável chamada “Specular Power” (em tradução
livre, Poder Especular), que determina o tamanho do brilho especular. Essa variável é um valor
que varia de 1 até valores muito grandes, e quanto maior, mais suave é o brilho da especular.
3.2.4
Modelo de Iluminação de Phong
O modelo de iluminação de Phong é uma forma de representar os componentes citados
acima e uni-los, de maneira a representar o objeto de forma mais realista.
De acordo com o modelo de Phong, a iluminação total é a soma da iluminação ambiente
com a difusa e com a especular. A Equação 4 mostra como ela é calculada, juntando as
Equações 1, 2 e 3.
𝐼𝑇 = 𝐼𝑎 ∗ 𝐾𝑎 + 𝐼𝐿 ∗ 𝐾𝑑 ∗ 𝑁. 𝐿 + 𝐼𝐿 ∗ 𝐾𝑠 ∗ cos(𝛼)𝑛
(Equação 4)
Onde 𝐼𝑇 é a intensidade total. O modelo de Phong será mostrado em prática no estudo de casos,
na Seção 4.
3.2.5
Reflexão
Dependendo do material do objeto, ele pode ter uma característica peculiar: a reflexão.
Um objeto pode refletir outros objetos ao que incidem nele. A forma de fazer é um
complemento do algoritmo do Ray Tracing, sendo bastante importante e difundida. Para
fazer a reflexão, quando o raio traçado pela câmera atinge um objeto que reflete, a partir
do ponto que houve a interseção é traçado outro raio, um raio secundário é atirado em na
direção do raio refletido até interceptar outro objeto. A cor do primeiro objeto (o objeto
espelho) será a cor do segundo objeto encontrado. A Figura 8 mostra essa trajetória.
Figura 8 – Trajetória da reflexão.
Através dessa explicação é possível perceber que o algoritmo do raio traçado é recursivo,
pois se um objeto espelho encontrar outro objeto espelho nesse caminho, o algoritmo deve
lançar mais um raio. O ponto de parada dessa recursão deve ser uma variável de controle
extra, pois corre o risco da recursão ser infinita. Normalmente essa variável é chamada
de Profundidade (Depth) e é escolhida pelo usuário. Quanto maior a profundidade, mais
recursões serão utilizadas.
Parte do raio traçado, quando atinge um objeto, pode ter outro comportamento. Esse
comportamento é conhecido como Refração, e é um complemento da reflexão, pois
alguns objetos se comportam como refletores e refratores. Um exemplo clássico é a água.
Para equilibrar a quantidade de reflexão e a quantidade e refração em um objeto, é
utilizado uma variável oriunda da Equação de Fresnel.
Nesse trabalho, a refração será suprimida e apenas citada por conveniência. A reflexão
foi implementada, devida a sua simplicidade.
3.3.
Objetos
As características dos objetos são muito importantes para a visualização em uma cena.
Cada objeto tem uma característica própria, sendo elas principalmente baseadas nas suas
formas. Conhecer o objeto é de extrema importância, pois suas características de forma
deverão ser bem formalizadas, para o cálculo da interseção.
Neste trabalho foram implementadas duas formas de objetos: A esfera e o triângulo.
Ambos são suficientes para criar uma cena bem simples e testar as propriedades do Ray
Tracing.
3.4.1 Esfera
A esfera é considerada a forma mais simples de objetos na cena 3D, pois o cálculo de sua
intercepção é bem simples, computacionalmente falando.
Há duas formas simples de calcular a interseção de um Ray Tracing com uma esfera. Uma
solução geométrica e uma solução analítica. Por ser mais simples e mais efetivo
computacionalmente, a forma geométrica será descrita.
A Figura 9 mostra os componentes algébricos de um raio incidindo em uma esfera.
Figura 9 – Raio passando por dois pontos de uma esfera.
Um raio disparado pelo Ray Tracing pode ser representado pela Equação 5.
𝑜 + 𝑡𝑟
(Equação 5)
Onde o é o ponto de origem, r é o vetor de direção do raio e t é um parâmetro de distância,
onde variando ele, percorremos por qualquer ponto do raio.
Em outras palavras, podemos encontrar o ponto P e o P’ utilizando a Equação 6.
𝑃 = 𝑜 + 𝑡0 𝑟
𝑃′ = 𝑜 + 𝑡1 𝑟
(Equação 6)
Onde t0 e t1 são as distâncias da origem o aos pontos que o raio passa pela esfera.
Utilizando a Figura 9 como base, sabemos os valores de L e de r, sendo a distância da
origem ao centro do objeto e a direção do raio, respectivamente. Podemos descobrir o
valor de tca através do produto escalar entre L e r, de acordo com a Equação 7.
𝑡𝑐𝑎 = 𝐿 . 𝑟
(Equação 7)
Sabemos que esse produto escalar representa duas situações: Ele é o valor da projeção de
L no raio traçado e se ele for negativo, ambos estão apontando para direções diferentes.
Se esse valor for negativo, não nos interessa, pois há interseção somente atrás da câmera,
logo, descartamos.
Utilizando o Teorema de Pitágoras, podemos descobrir o valor de d, como na Equação 8.
2
𝑑2 = 𝑡𝑐𝑎
+ 𝐿2
(Equação 8)
Desenvolvendo essa equação, podemos analisar o valor de d. Se ele for menor que 0 ou
se d é maior que o raio da esfera, o raio traçado erra a esfera, não havendo interseção.
Tendo o valor de d, temos todos os valores necessários para calcular thc. A Equação 9
mostra que é possível utilizar o teorema de Pitágoras novamente para descobrir esse valor
e, consequentemente, os valores de t0 e t1..
2
𝑑2 + 𝑡ℎ𝑐
= 𝑟𝑎𝑑𝑖𝑢𝑠 2
𝑡ℎ𝑐 = √𝑟𝑎𝑑𝑖𝑢𝑠 2 − 𝑑2
(Equação 9)
𝑡0 = 𝑡𝑐𝑎 − 𝑡ℎ𝑐
𝑡1 = 𝑡𝑐𝑎 + 𝑡ℎ𝑐
3.4.2
Triângulo
O triângulo possivelmente é o objeto mais importante a ser renderizado. Ele é a base de
todos os polígonos, que são divididos em triângulos para terem uma forma no Ray
Tracing. Os triângulos são formas muito simples, definidos por 3 pontos (vértices) e um
plano formado entre os três.
Há várias formas de calcular a interseção do Ray Tracing com os triângulos. A forma
utilizada nesse trabalho foi o algoritmo de Moller-Trumbore.
O algoritmo de Moller-Trumbore é considerado uma das técnicas mais rápidas de se
calcular a interseção com triângulos. Uma explicação sucinta da técnica será feita abaixo.
Podemos calcular um ponto dentro de um triângulo através da Equação 10.
𝑃 = 𝑤𝐴 + 𝑢𝐵 + 𝑣𝐶
(Equação 10)
Onde P é o ponto, A, B e C são os vértices do triângulo e w, u e v são oriundas da forma
parametrizada da equação e são constantes que representam as distâncias dos vértices aos
pontos dentro do triângulo. A soma desses três últimos termos é igual a 1. Sabendo que
w pode ser representado por (1-u-w) e utilizando a Equação 5, do ponto na reta formada
pelo raio traçado, podemos obter a Equação 11.
𝑜 − 𝐴 = −𝑡𝐷 + 𝑢(𝐵 − 𝐴) + 𝑣(𝐶 − 𝐴)
(Equação 11)
Essa Equação 11 pode ser representada como uma operação de matrizes. Por
conveniência e para visar a simplicidade, essas operações serão omitidas nesse trabalho.
A Figura 10 mostra algumas informações algébricas que podemos extrair dessa mudança
de representação de bases.
Figura 10 – Dependendo da direção do raio, o determinante da forma matricial do triângulo
muda é positivo ou negativo.
Os vértices do triângulo podem representar vetores. Dependendo dos vetores formados –
ou seja, dos vértices utilizados, da ordem que foram utilizados e das direções encontradas
– o vetor Normal do triângulo muda de direção. A regra da mão direita e da mão esquerda
são apropriadas para descobrir para qual direção o vetor será calculado e depende do
sistema de coordenadas do sistema.
As variáveis u e v são calculadas através da Equação 12.
𝑢=
(0−𝑣0) .(𝑟𝑎𝑦 𝑋 (𝑣2−𝑣0))
)
𝑑𝑒𝑡
𝑢=
(𝑟𝑎𝑦 . (𝑜−𝑣0 𝑋 (𝑣1−𝑣0)))
)
𝑑𝑒𝑡
(Equação 12)
Onde v0, v1 e v2 são vértices do triângulo, o é a origem do raio traçado, ray é a direção
do raio traçado e det é o determinante obtido na Equação 11.
4. ESTUDO DE CASO
Para testar a teoria do Ray Tracing o algoritmo foi implementado. Os escopos dos códigos
serão omitidos nesse trabalho. Porém, um passo a passo do algoritmo será mostrado
através dos resultados alcançados. Nos passos a seguir, serão utilizados somente duas
formas geométricas, a esfera e o triângulo. A imagem será definida com o tamanho de
800x600, e o campo de visão da câmera foi definido com o valor 50. A câmera está
posicionada na posição (0,0,25) e os objetos descritos dentro ou fora do campo de visão.
O exemplo a seguir contém somente uma fonte de luz.
4.1.
O primeiro raio
O primeiro passo do algoritmo é descrever o primeiro raio. A regra é simples: o raio
traçado encontrou um objeto, o valor da cor da sua superfície é pintado na imagem. A
Figura 11 mostra o primeiro resultado para uma esfera posicionada na origem (0,0,0).
Figura 11 – Resultado dos primeiros raios traçados.
4.2.
Iluminação ambiente
Após encontrar o objeto, a iluminação ambiente foi isolada em um componente. O
Resultado está na Figura 12. A iluminação, utilizando a equação para seu cálculo,
representa 20% da iluminação original do objeto, valor alcançado por livre arbítrio.
Figura 12 – Iluminação Ambiente
4.3.
Iluminação difusa
Semelhante à iluminação ambiente, o componente da iluminação difusa foi isolado e a
Figura 13 mostra o resultado para o mesmo objeto utilizado.
Figura 13 – Iluminação Difusa.
4.4.
Iluminação Especular
O componente da iluminação especular foi separado e a Figura 14 mostra o resultado.
Figura 14 – Iluminação Especular.
4.5.
Modelo de Phong
Utilizando o modelo de iluminação de Phong, os 3 componentes previamente calculados
são somados formando uma nova imagem, como mostrado na Figura 15.
Figura 15 – Modelo de Phong para o objeto estudado.
4.6.
Triângulos
Assim como as esferas, alguns triângulos foram testados na cena. Como os triângulos são
a base para qualquer polígono existente, podemos fazer praticamente qualquer forma de
polígono não circular existente. A Figura 16 mostra um triângulo renderizado na cena.
Figura 16 – Triângulo construído.
Assim, podemos criar novas formas. A Figura 17 mostra um plano formado por dois
triângulos e será utilizada na cena.
Figura 17 – Dois triângulos coplanares.
4.7.
Cenário
Utilizando os triângulos, um cenário foi construído e colocado no ambiente. A Figura
18 mostra esse cenário com os triângulos.
Figura 18 – Cenário construído. Por escolha, o fundo da imagem é da cor branca.
4.8.
Sombra
Outro componente importante a ser colocado em uma cena é a sombra. A Figura 19
mostra a sombra formada no cenário. Nesse caso, a sombra tem uma compensação de
iluminação global, como discutido na Seção 3.
Figura 19 – Objeto e sombra calculados na cena.
4.9.
Reflexão
Objetos com reflexão são a base principal da ideia por trás da recursão do Ray Tracing,
então esses objetos devem ser demonstrados na cena. A Figura 20 mostra um objeto
reflexivo na cena construída.
Figura 20 – Objeto com reflexão adicionado na cena.
Além da reflexão na esfera, os triângulos também podem conter essa propriedade. Na
Figura 21 é mostrado a reflexão nos triângulos que representam uma das paredes na
cena.
Figura 21 – Parede refletindo.
4.10. Cena completa
A cena finalmente é construída com vários objetos. Ela é demonstrada na Figura 22.
Figura 22 – Cena completa. Objetos colocados na frente e atrás da câmera.
4.11. Profundidade
Um ponto importante a discutir a partir desse momento são os efeitos da recursão da
reflexão. Como discutido na Seção 3, quanto maior a variável de controle da profundidade
da recursão, mais reflexos serão vistos na cena, enquanto elas existirem.
A importância desse atributo no Ray Tracing é o fato de que quanto maior o valor,
também é maior o custo computacional. Logo, é necessário conhecer a cena para escolher
um bom valor para essa profundidade, de forma que não prejudique nem a performance
e nem a aparência da cena. A Figura 23 mostra outra cena desenvolvida, onde outro objeto
formado por triângulos e colocado em um ambiente com vários espelhos e com a
profundidade com o valor 1 – ou seja, somente uma recursão. A Figura 24 e 25 são
semelhantes, mas com os valores de profundidade sendo 2 e 5, respectivamente.
Figura 23 – Ray Tracing com o valor 1 na profundidade.
Figura 24 – Ray Tracing com o valor 2 na profundidade.
Figura 25 – Ray Tracing com o valor 5 na profundidade.
CONCLUSÃO
O Ray Tracing é um algoritmo bastante explorado e difundido na Computação Gráfica.
Ele contém componentes que podem representar um mundo 3D com muita fidelidade
com a realidade. Apesar de ser sua maior vantagem, o ponto fraco desta técnica consiste
na complexidade computacional: ele ainda é um algoritmo que requer muito
processamento para ser executado em tempo real.
Este trabalho explicou com detalhes as técnicas básicas que compõe o Ray Tracing, e foi
desenvolvido um programa para executar um algoritmo bem simples.
Apesar da sua fraqueza em relação à performance (dependendo da cena, o programa
demorava de 5 à 14 segundos para renderizar a cena), sua implementação é bem fácil de
ser reproduzida.
Os programadores de Computação Gráfica almejam executar esse algoritmo com os
componentes necessários para representar o maior realismo possível e em tempo real.
Esse objetivo ainda está engatinhando, mas a otimização do algoritmo e incremento do
poder computacional no futuro podem permitir isso.
Download

Terceiro Trabalho Ray Tracing - PUC-Rio