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.