380 likes | 501 Views
Universidade Católica de Pelotas. Computação Gráfica. Ray Tracing. por Rodrigo Botelho da Silva. Prof. Dr. Paulo Roberto Gomes Luzzardi. 1. Introdução 2. Histórico 3. Ray Tracing 4. Ray Casting 5. Ray Tracing (continuação) 6. Ray Tracing Recursivo 6.1. Sombra 6.2. Reflexão
E N D
Universidade Católica de Pelotas Computação Gráfica Ray Tracing por Rodrigo Botelho da Silva Prof. Dr. Paulo Roberto Gomes Luzzardi
1. Introdução 2. Histórico 3. Ray Tracing 4. Ray Casting 5. Ray Tracing (continuação) 6. Ray Tracing Recursivo 6.1. Sombra 6.2. Reflexão 6.3. Refração 6.4. Transparência (Refração) 6.5. Antialising Sumário 7. Ray Tracing Distribuido 7.1. Depth of Field 7.2. Motion Blur 7.3. Penumbra 7.4. Reflexão Borrada 7.5. Translucência 8. Ray Tracing Parametrizado 9. Radiosidade com Ray Tracing 10. Imagens 11. Referências
1. Introdução • A Computação Gráfica se divide em duas áreas: Modelagem e Visualização. • Ray Tracing é um método de visualização de imagens. • É considerada a mais poderosa e de simples implementação dentre as existentes. Em compensação é dificilmente usada em aplicações em tempo real, pois são necessárias várias horas para a renderização da cena, obtendo um alto grau de realismo. • É capaz de gerar imagens apartir de cenas consideradas de alta complexidade, ou seja, por possuírem muitos objetos e efeitos de sombras, reflexos, refração, texturas e sombreamento das superfícies visíveis. • Simula a propagação da luz e a interação dela com os objetos de uma cena.
2. Histórico • Em 1968, Appel desenvolveu um algoritmo para determinar sombras em um cena, e se um ponto visível estaria na zona de sombra ou não. Esse algoritmo serve de base para todas as implementações do algoritmo de Ray Tracing. • Em 1968, Goldstein, e em 1971, Nadel, desenvolveram algoritmos para calculo de trajetóriasbalisticas e particulasnucleares. Algum tempo depois, conjuntamente com o algoritmo de Appel, foram aplicados na geraçãodeimagens. • Em 1979, Kay introduziu modificações no algoritmo para o cálculomaiscorreto de iluminaçãoespecular e refraçãodaluz.
2. Histórico • Em 1980, Whitted melhorou a refraçãodaluz. Criou imagens impressionantes para a época por causa de sua qualidade. • O algoritmo sofreualterações em 1984, possibilitando efeitos de penumbra, motionblur, depthoffield, entre outros. • Em 1989, Séquim e Smyryl introduziram formalmente a técnica de RayTracingParametrizado.
3. Ray Tracing • Simula a geometria ótica envolvida no trajetodosraiosdeluzqueviajampeloespaçodacena. • Normalmente, os raios de luz vindo dos objetos chegam aos nosso olhos. Por motivos computacionais, esse processo é feito aocontrário. Supostamente os raios que saem dos olhos do observador e que passam pela tela, percorrema cena. • Pintamos a tela com a cor do objetomaispróximo.
3. Ray Tracing – Algoritmo Básico Para cada ponto da tela • Calcule uma linha reta unindo o olho do observador a este ponto • Descubra as interseções desta reta com os objetos 3D que estão atrás da tela • Pinte o ponto com a cor do objeto mais próximo
3. Ray Tracing • Ray Tracing gasta de 75% a 95% do tempo total de processamentocomintersecções. A Eficiência neste ponto afeta significativamente o tempodeprocessamento. • O cálculodacor é influenciado pela iluminação que nele incide, pela textura e pela rugosidadedoobjeto. • Lançar os raios no caminho tradicional é impraticável, pois de uma fontedeluz partem bilhõesdefótons, formadores de raios luminosos, sabendo que uma pequeníssima parte deles chegam ao olho do observador. Simular isso seria anosderenderização para uma cena simples.
4. Ray Casting • Versão simplificada do Ray Tracing. • Usado para remover ou ignorar faces ocultas. Utiliza a informação das intersecções para isso. • Não avalia efeitos da cena usando lançamento de raios secundários, e sim utilizando métodos matemáticos para isso. Elimina o custo computacional exigido para o cálculo de reflexões, refrações e zonas de sombra. • Método mais apropriado para a renderização em jogos 3D de tempo-real.
5. Ray Tracing • O algoritmo de Ray Tracing deve considerar os seguintes pontos: - Os raios primários são disparados apartir de um observador, de forma que cada um deles corresponda a um pixel da tela. - O raio percorre o espaço podendo atingir um objeto ou sair da cena. - Se o raio atingir um objeto, o ponto de intersecção é calculado. As contribuições das fontes de luz para cada ponto, levando em conta a sombra de outros objetos, também são calculadas. - Se o objeto for opaco, a soma dessas contribuições será a intensidade luminosa total naquele ponto. - Caso não for opaco, as contribuições devidas aos reflexos, e refrações, serão também computadas. O pixel correspondente pode ser exibido. - Se não houver intersecção, o pixel terá a cor de fundo. - Para o cálculo dos efeitos presentes em uma cena, são utilizados raios secundários. Estes são disparados apartir dos pontos de intersecção dos raios primários com os objetos da cena. Os raios secundários são disparados recursivamente, sendo que eles também podem vir a realizar chamadas recursivas.
6. Ray Tracing Recursivo • O algoritmo de Ray Tracing se torna recursivo apartir do momento que consideramos os efeitos realísticos presentes na cena. Para o cálculo deste utiliza-se raios secundários, gerados na intersecção dos raios primários com os objetos da cena. • O algoritmo então executa as seguintes tarefas: - Traça um raio apartir do observador, cruzando por um dos pixels da tela onde desejasse representar a cena; - Determina qual é o primeiro objeto que intercepta esse raio; - Calcula a cor nesse ponto do objeto, considerando as características dele e a luz ambiente. - Se o objeto é reflexivo, traçar um novo raio apartir desse ponto na direção calcula como a de reflexo. - Se o objeto é transparente, traçar um novo raio apartir desse ponto. - Considera a cor dos objetos interseccionados, até finalmente sair da cena ou chega a fonte de luz, usando isso para determinar a cor do pixel e se há sombras.
6.1. Sombra • A inclusão de sombra com Ray Tracing é dada pelo cálculo de um vetor V em direção a luz partindo de um ponto. Se o vetor interseccionar com qualquer objeto da cena quer dizer que o ponto está na sombra e a luz do mesmo é diminuída, caso contrário ele está na luz. • No exemplo, os pontos P1 e P2 geram os vetores V1 e V2 respectivamente. Ambos são projetos em direção a luz, e V1 chega até a luz, mas V2 é obstruído por um objeto.
6.2. Reflexão • Um raio de luz atingindo a superfície, e é refletido segundo a lei da ótica que diz que o raio é refletido na mesma direção que incidiu sobre a superfície. Assim podemos visualizar como se um novo raio fosse lançado apartir desse ponto, só que na direção da reflexão. Esse ponto será calculado apartir do raio refletido.
6.3. Refração • Desvio gerado pela penetração da luz no objeto. O cálculo de refração leva em consideração a Lei da Refração, que determina que um raio de luz sempre sofre um desvio na sua trajetória quando transita por meios com densidades diferentes. • Objetos transparente funcionam como filtros. Por um objeto verde é iluminado por uma fonte de luz, deixar passar apenas luz verde, absorvendo os componentes vermelho e azul.
6.4. Iluminação • O cálculo da interação da luz com a cena ainda é um grande problema. Ainda não existe um modelo computacional que consiga descrever perfeitamente esse fenômeno. • Existem vários modelo, exemplo o de Phong, constituído de 3 componentes de iluminação: ambiente, difusa e especular.
Iluminação - Ambiente • Gera uma iluminação constante em todos os pontos do objeto • Depende da cor do objeto.
Iluminação - Difusa • Se a superfície é perfeitamente difusa, ela reflete igualmente em todas as direções. • Depende da cor do objeto e a posição da luz. • Acontece quando a superfície do objeto é opaca ou escura. • Cria um efeito degrade no objeto.
Iluminação - Especular • A superfície aparecerá brilhante para uma única direção do observador, as demais permaneceram escuras.
6.5. Antialising • Problema muito encontrado em imagens geradas por computador, onde notamos o desagradável efeito escada. • Falha na geração da imagem devido a natureza discreta do monitor. • O Ray Tracing nos possibilita acionar a opção para tratamento de anti-alising. • Solucionar esse problema é impossível, pois corresponde a um problema físico, mas podemos usar técnicas satisfatórias. • Uma técnica usada é a supersambling (super-amostragem), que se trata de que devemos lançar mais raios por pixel, calculando suas intensidades, assim tratando sub-pixels, e calculando depois uma média aritmética ou ponderada desses valores. O tempo de processamento aumenta a medida que o número de raios lançados por pixel aumenta.
Sem tratamento de alising Com tratamento de alising
7. Ray Tracing Distribuido • Diferencia-se do Ray Tracing Clássico quando falamos em lançamentos de raios. Ele utiliza vários raios distribuídos no tempo (borramento por movimento ou “motion blur”) e no espaço (profundidade de campo ou “depth of field”). • É utilizado o modelo de câmera com lentes ao invés do modelo de “pinhole”.
7.1. Depth of Field • Efeito que considera somente os objetos que estão focalizados estão no plano de focalização, ao contrário do modelo de pinhole onde todos estão focalizados.
7.2. Motion Blur • Essa técnica consiste em dar a cena um efeito semelhante ao de uma fotografia com objetos em movimento. • Objeto fotografado em movimento parece desfocado ou embaçado. • Considera a velocidade do objeto no momento que está sendo fotografado.
7.3. Penumbra • Fonte de luz é parcialmente obstruída. • O cálculo de penumbra, os raios secundários devem ser distribuidos e lançados de acordo com a área relativa da fonte de luz. Sem Penumbra Com Penumbra
7.4. Reflexão Borrada • O efeito de reflexão borrada(blurry reflection) é obtido com a distribuição dos raios de reflexão sobre a direção de reflexão. Com Blurry Reflection Sem Blurry Reflection
7.5. Translucência • Os raios devem ser distribuídos de acordo com a direção principal da luz transmitida. Tal distribuição é definida pela função de transmissão especular. Ray Tracing Clássico Ray Tracing Distribuido
8. Ray Tracing Parametrizado • Renderizar a cena, guardando, para cada pixel da imagem, a árvore de raios que contém todas as informações geométricas utilizadas. • Logo após, podemos modificar os parâmetros óticos dos objetos (cor, textura,coeficientes especular, difuso, transparente, etc.), obtendo então uma nova imagem apenas reavaliando na árvore de raios de cada pixel as equações de shading. • Grande quantidade de memória necessária para armazenar as árvores de raios de cada pixel da cena. • É útil para depurar interativamente uma cena,ajustando suas características, não precisandocalcular novamente as interseções dos raios com os objetos. Isto aumenta a velocidade de renderização em até 150 vezes
9. Radiosidade com Ray Tracing • Considerado, juntamente com o Ray Tracing, como o melhor método para gerar imagens realistas, • Radiosidade consegue tratar de forma correta a reflexão da luz em superfícies difusas, coisa que não é possível com o Ray Tracing tradicional. Deste modo, efeitos como penumbras e fontes de luz com área são avaliadas corretamente. • Radiosiadade não consegue tratar superfíciesespeculares, o que é feito em Ray Tracing.
11. Referências • AZEVEDO, E., CONCI, A., Computação Gráfica – Teoria e Prática, Editora Elsevier, 2003. • SILVA, F.W.S.V., Introdução ao Ray Tracing, COPPE-UFRJ, 1999. • http://disciplinas.ist.utl.pt/leic-cg/programa/livro/Raytracing.pdf • http://disciplinas.ist.utl.pt/leic-cg/laboratorio/aulas_pov/aula_1/introducao.html • http://www.cin.ufpe.br/~marcelow/Marcelow/raycife.html • http://www.tecgraf.puc-rio.br/~mgattass/fcg/trb07/gmoreira/T3/index.htm • http://www.inf.ufsc.br/~awangenh/CG/raytracing/iluminacao.html • http://pt.wikipedia.org/wiki/Ray_casting