Ray Tracing
Felipe Baldino Moreira
Fundamentos de Computação Gráfica
Prof. Marcelo Gatass
Ray Tracing
•
•
•
•
•
•
•
•
•
O algoritmo ray tracing é um algoritmo recursivo que consiste em projetar, a partir do observador, um vector (raio) por cada um dos
pixels constituintes da nossa cena/imagem, vector este que irá intersectar os objetos que formam a cena em análise. As intersecções a
que estão sujeitos cada um dos vectores projetados tem que ser confirmadas para todos os objetos que compõe a imagem a fim de
determinar qual o que está mais próximo do observador.
Se um determinado raio não intersectar nenhum objeto no seu trajeto, é atribuído ao pixel, por onde o raio passa, a cor do fundo da
cena. No caso de o raio intersectar algum objeto, e após ter-se confirmado que esta é a intersecção mais próxima do observador para
esse mesmo raio, é necessário determinar a cor do pixel correspondente. Para tal é necessário calcular a iluminação no ponto da cena
que o raio atinge, iluminação esta que pode ser proveniente diretamente de fontes de luz, pode ser luz proveniente de outro objecto
que por reflexão ilumina o ponto que estamos a analisar, pode ser luz refratada transmitida através do objeto e que assim ilumina o
ponto, ou pode ainda ser uma combinação de mais do que uma destas formas de iluminação, que é a situação mais comum.
Para a determinação das componentes de luz que atingem o ponto em análise, o algoritmo recorre a três tipos de raios diferentes a que
chamamos de raios secundários.
Raios refletidos;
Raios refratados;
Raios de sombra.
Cada um destes raios possui características e objetivos diferentes que podem, facilmente, ser identificados pelo seu nome. A partir da
intersecção destes raios secundários com os objetos, e de acordo com a informação que cada um deles transporta, o algoritmo calcula
então as características da luz e qual a contribuição para a iluminação do ponto de intersecção do raio primário com o objeto.
Como podemos observar na figura um único raio pode ser refletido e refratado indefinidamente, subdividindo-se em vários raios
secundários, formando assim uma árvore de raios, mais ou menos, complexa, de acordo com a composição da nossa cena. Para
conseguirmos processar esta informação, necessitamos de estabelecer um limite máximo de subdivisões. Um dos métodos utilizados
para terminar a inspeção recursiva dos raios secundários, acontece quando a contribuição retornada pelos raios secundários para um
determinado pixel, se torna inferior a um determinado valor mínimo previamente definido, ou então tal com referimos anteriormente,
quando um raio primário não intersecta qualquer objeto dentro dos limites da cena pré-estabelecidos atribuindo nesse caso a cor de
fundo ao pixel em análise.
As sombras são verificadas através de raios secundários que são lançados a partir do ponto de intersecção do raio primário com o
objeto, em direção ao foco de luz. Se no seu trajeto o raio voltar a cruzar-se com um objeto, é porque o ponto em análise se encontra
na sombra, se não, é porque recebe luz direta.
O Algoritmo de Raycasting
Algoritmo
• Para cada ponto(i,j) da tela
• Calcule uma linha reta unindo o olho do observador a um
ponto (i,j) da tela;
• Descubra as interseções desta reta com os objetos 3D que
estão atrás da tela;
• Se houve interseções, pinte o ponto com a cor do objeto
mais próximo. Caso contrário pinte o ponto com a cor do
fundo
Intersecção Raio Cena
Ray Tracing Vs Ray Casting
• Ao contrário do Ray Casting, não considera somente
para a intersecção com as superfícies visíveis
• O raio intersecta com os objetos e continua a saltar ao
redor da cena, coletando várias contribuições de
intensidades
• Muitas extensões do algoritmos básico de Ray Tracing
foram desenvolvidas para aumentar o realismo da cena
• Cenas construídas por Ray Tracing podem ser
altamente realísticas, principalmente quando a cena
contém objetos brilhantes
O modelo de Raio do Ray tracing
Sobre do Ray Tracing
•
•
•
•
•
•
•
•
•
O algoritmo de Ray Tracing é formado por diversas chamadas recursivas
Tal recursão é necessária para determinar a interação do raio com os objetos da
cena e produzir os efeitos de reflexão, sombra e transparência
Os raios provenientes de reflexão e refração são chamados raios secundários
Para facilitar o cálculo das intersecções dos raiso com os objetos, normalmente se
utiliza uma arvore a raytracing tree que contém todos os objetos da cena.
A cada intersecção, o modelo de iluminação é computado para determinar a
contribuição da intensidade
O valor da intensidade é armazenado na posição do correspondente nó de
superfície na Ray-Tracing Tree
O “raio de sombra”, que une o ponto do objeto que foi atingido ao ponto de luz. Se
entre o ponto e a luz existir um outro objeto opaco, este ponto estará na sombra.
Raio de Reflexão é lançado um novo raio visual a partir do ponto atingido, só que
na direção de reflexão. Este ponto terá a cor calculada a partir do raio refletido.
Raio de Refração : é um raio refratado através de um material transparente
Ray Tracing : Algoritmo
Para cada ponto(i,j) da tela
Calcule uma linha reta unindo o olho do observador a um ponto (i,j)
da tela;
Descubra as interseções desta reta com os objetos 3D que estão atrás
da tela;
Se houve interseção, determinar o objeto mais próximo:
Computar contribuição da luz ambiente
Para cada fonte de luz, determinar a visibilidade (detecção d sombra).
Se a fonte for visível, somar a contribuição de reflexão difusa.
Se limite de recursão não foi atingido: somar contribuição de reflexão
especular acompanhado o raio refletido, e somar contribuição de
transmissão acompanhando o raio refratado.
Caso contrário pinte o ponto com a cor do fundo.
O Algoritmo do Ray Tracing
• O algoritmo de Ray Tracing é formado por diversas chamadas
recursivas
• Tal recursão é necessária para determinar a interação do raio com
os objetos da cena e produzir os efeitos de reflexão, sombra e
transparência
• Os raios provenientes de reflexão e refração são chamados raios
secundários
• Para facilitar o cálculo das intersecções dos raiso com os objetos,
normalmente se utiliza uma arvore a raytracing tree que contém
todos os objetos da cena.
• A cada intersecção, o modelo de iluminação é computado para
determinar a contribuição da intensidade
• O valor da intensidade é armazenado na posição do
correspondente nó de superfície na Ray-Tracing Tree
Cálculos
Reflexção e Sombra
Raio Refratado
A Saída do Programa
O código
implementado segue
anexo em pdf com a
explicação.
Download

Ray Tracing - PUC-Rio