Ray Tracing / Ray Casting

Documentos relacionados
Ray Tracing (Traçado de Raios)

Pipeline Gráfico Cluter & Durand, MIT

Resumo. Ray Tracing. Introdução. Ray Casting Básico. Idéia

Assunto última aula. Flat Shading

Modelos Globais de Iluminação

Leandro Paganotti Brazil Rosane Minghim Computação Gráfica ICMC USP

Visualização por Computador: Teoria, Prática e Aplicações

Algoritmos de Iluminação Global

Pipeline Gráfico Cluter & Durand, MIT

Coloração (Shading)e Iluminação global

Remoção de Superfícies Escondidas

INF 1366 Computação Gráfica Interativa. Anti-Aliasing; Eliminação de Superfícies Escondidas. Alberto B. Raposo

aula 21 Tecnicas de Iluminação Global IC/UFF 2017 Aura

Computação Gráfica e Áreas Correlatas

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Pipeline Gráfico. Clipping (Recorte) Por que o recorte? INF 1366 Computação Gráfica Interativa. Clipping (Recorte)

Iluminação e Sombreamento

Raytracing. 35T56 Sala 3E3 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 DIM102

Terceiro Trabalho Ray Tracing

Introdução. Rendering: Ray Tracing. Introdução. Introdução. Introdução. Introduction

Introdução à Computação Gráfica Ray Tracing. Claudio Esperança Paulo Roma Cavalcanti

Ray Tracing e Ray Casting

Fundamentos da Computação Gráfica

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

ILUMINAÇÃO E. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

O que é? Como funciona?

Introdução ao Processamento e Síntese de imagens Rendering 2016

Características Principais. Introdução à Computação Gráfica Ray Tracing. Ray Casting. Contexto Histórico. Claudio Esperança Paulo Roma Cavalcanti

Processamento Gráfico

Radiosidade. Radiosidade. Iluminação Direta e Indireta. Color Bleeding a cor do objeto é transmitida. Parcela Difusa em RT

Ray-Tracing. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 13 Apontamentos CG

Iluminação. André Tavares da Silva. baseado nos materiais de aula de Marcelo Walter, Claudio Esperança e Paulo Cavalcanti

Ray-Tracing. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 13 Apontamentos CG

Visibilidade Ray-Tracing

aula 9 IC/UFF

Determinação da Visibilidade

Iluminação e Sombreamento

Modelos Globais de Iluminação

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 10 de Agosto de 2010

Iluminação e Sombreamento

Iluminação. Computação Gráfica LEI / LCC Departamento de Informática Universidade do Minho

Nº Nome: Relação de aspecto é o quociente entre a altura e a largura de uma janela ou um viewport.

Iluminação e Sombreamento

Iluminação Global. André Tavares da Silva.

Introdução ao Ray Tracing

Computaçã. Processamento Gráfico Computação Visual. Histórico. Histórico (dispositivos vetoriais) Visão Computacional. Gráfica. Síntese.

Rendering Volumétrico Direto A versão resumida. Haim Levkowitz Maria Cristina F. de Oliveira Rosane Minghim

Realismo Visual. Aula 11 UFF

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

POV-Ray. André Tavares da Silva.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

Realismo. Isabel Harb Manssour. Porto Alegre, maio de Realismo. Modelos de Cor. Modelos de Cor. Modelos de Cor

O Problema de Visibilidade. Computação Gráfica Recorte. Onde Acontece? O que é Recorte? Renato Ferreira

Modelação de Formas Geométricas

Thanks to Isabel Harb Manssour Marcelo Cohen

Revisão. Soraia Raupp Musse

Computação Gráfica. Ray Tracing

5 Integrando objetos sintéticos à cena real

Transformações 3D. Soraia Raupp Musse

Um Algoritmo para a Visualização de um Terreno com Objetos

1º Teste Computação Gráfica

Iluminação e Sombreamento

3. Achar a equação da esfera definida pelas seguintes condições: centro C( 4, 2, 3) e tangente ao plano π : x y 2z + 7 = 0.

Reflexões e Sombras em Superfícies Planares Animação e Visualização Tridimensional Prof. João Madeiras Pereira Instituto Superior Técnico 2005/2006

Computação Gráfica II

Técnicas de rendering. Realismo

Introdução. 1 Introdução

Iluminação e FotoRealismo: Fundamentos

Rendering. Processo Físico de Geração de uma Imagem. Rendering

Computação Gráfica - 09

Computação Gráfica - 09

Transformações Geométricas

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

PEF 5743 Computação Gráfica Aplicada à Engenharia de Estruturas

Computação Gráfica Transformações Projetivas

Computação Gráfica Abel J. P. Gomes. Engenharia Informática (5385) - 2º ano, 2º semestre Matemática (5828) - 2º ano, 2º semestre

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Computação Gráfica e Áreas Correlatas

REFLEXÃO E REFRAÇÃO DA LUZ

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. Luiz Felipe Simões Hoffmann

REFLEXÃO DA LUZ. i = r. PRIMEIRA LEI DA REFLEXÃO RI, N e RR são coplanares (pertencem ao mesmo plano). SEGUNDA LEI DA REFLEXÃO

A terceira dimensão. Modelagem tridimensional Elaboração tridimensional Realidade virtual

Computação Gráfica. Computação Gráfica. Visão Geral. Sistema Gráfico. Introdução à Computação Gráfica e areas relacionadas

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE MATEMÁTICA LISTA DE EXERCÍCIOS DE MAT243-CÁLCULO III

Introdução à Computação Gráfica Aliasing e Ray Tracing Distribuído. Claudio Esperança Paulo Roma Cavalcanti

Objetos definidos no seu próprio sistema de coordenadas

Opto-Mechanical Design Group (Iris e pupilas)

Introdução ao Processamento e Síntese de imagens Recorte 2D

Objetos definidos no seu próprio sistema de coordenadas

Rendering. Processo Físico de Geração de uma Imagem. Rendering. Síntese de Imagens 3D. Foto-realismo em CG

Transformações Geométricas para Visualização 3D

5. Técnicas de Iluminação

Cap Ondas Eletromagnéticas

INF 2063 Tópicos em CG III

Cap 23 - Ótica Geométrica

Transcrição:

INF 1366 Computação Gráfica Interativa Ray Tracing (Traçado de Raios) Alberto B. Raposo abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/inf1366/index.htm Ray Tracing / Ray Casting Como computar a irradiação de um raio de luz? Angel Figure 6.2 1

Ray Casting Forma mais simples de Ray Tracing Raios através do plano de visualização Plano de visualização Posição do observador Máquina de ray casting de Durer Albrecht Durer, Século XVI Cluter & Durand, MIT 2

Máquina de ray casting de Durer Cluter & Durand, MIT Máquina de ray casting de Durer Cluter & Durand, MIT 3

Ray Casting Para cada amostra (pixel) Construa raio da posição do observador através do plano de visualização feito no sentido contrário: do olho para fonte de luz. Assim, só calculamos os raios que geram alguma coisa visível Encontre a primeira superfície que o raio intercepta Calcule a cor baseada no modelo de iluminação (ex., Phong) Ray Casting Raios através do plano de visualização Posição do olho Amostras no plano de visualização 4

Ray Casting Implementação Simples: Image RayCast(Camera camera, Scene scene, int width, int height) { Image image = new Image(width, height); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j); Intersection hit = FindIntersection(ray, scene); image[i][j] = GetColor(hit); return image; Ray Casting Implementação Simples: Image RayCast(Camera camera, Scene scene, int width, int height) { Image image = new Image(width, height); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j); Intersection hit = FindIntersection(ray, scene); image[i][j] = GetColor(hit); return image; 5

Construindo Raio Através de um Pixel Up direction Plano de visualização back towards P 0 right V Ray: P = P 0 + tv P Construindo Raio Através de um Pixel Exemplo 2D Θ = meio ângulo do frustum d = distância ao plano de visualização right = towards x up P1 = P 0 + d*towards d*tan(θ)*right P2 = P 0 + d*towards + d*tan(θ)*right P 0 P = P1 + (i/width + 0.5) * (P2 - P1) = P1 + (i/width + 0.5) * 2*d*tan (Θ)*right V = (P - P 0 ) / P - P 0 right Θ towards d V P1 P P2 Raio: P = P 0 + tv 2*d*tan(Θ) P P 2 2 0 = dist( P, P0 ) = ( xp xp ) + ( y ) 0 P yp 0 6

Ray Casting Implementação Simples: Image RayCast(Camera camera, Scene scene, int width, int height) { Image image = new Image(width, height); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { Ray ray = ConstructRayThroughPixel(camera, i, j); Intersection hit = FindIntersection(ray, scene); image[i][j] = GetColor(hit); return image; Interseção do raio com a cena É o que consome a maior parte do algoritmo de ray trace. Interseções com diferentes primitivas geométricas Esfera Triângulo Grupos de primitivas (cena) 7

Interseção Raio-Esfera Raio: P = P 0 + tv Esfera: P - C 2 - r 2 = 0 P P V r P 0 C Interseção Raio-Esfera Raio: P = P 0 + tv Esfera: P C 2 = r 2 Substituindo P: P 0 + tv - C 2 = r 2 ( C) + t V ) ( P C) 2 ( + t V ) P = 0 0 r P 0 V P r C P 2 [ r ] = 0 2 [ V V ] t + [ 2V ( P C) ] t + ( P C) ( P C) 0 0 0 8

Interseção Raio-Esfera 2 [ r ] = 0 2 [ V V ] t + [ 2V ( P C) ] t + ( P C) ( P C) Equação do 2 o grau: a t 2 i 0 + b t + c = 0 Solução: b ± b 2 4ac t = 2a i i 0 0 V P 0 P r C P Onde: a = V 2 = 1 b = 2 V (P 0 - C) c = P 0 C 2 - r 2 Se a direção do raio estiver normalizada! Interseção Raio-Esfera se = b 2 4ac > 0 : t t 1 2 b = 2a b + = 2a t min( t, t i = 1 2) P 0 V P r C P se t i > 0 : (se t 1 e t 2 < 0, raio não intercepta esfera) P = 0 P( ti ) = P + tiv P ' = 0 P( t j ) = P + t jv t j = max( t 1, t2) 9

Interseção Raio-Esfera Precisa do vetor normal no ponto de interseção P para cálculo da iluminação N = (P - C) / P - C N P 0 V P r C Interseção Raio-Esfera Ray Tracing seria muito simples se mundo fosse composto apenas por esferas... Cluter & Durand, MIT 10

Interseção Raio-Triângulo Primeiro, ache a interseção do raio com o plano do triângulo Depois verifique se o ponto de interseção está dentro do triângulo P V P 0 Interseção Raio-Plano Raio: P = P 0 + tv Plano: (P A) N = 0 Substituindo P: (P 0 + tv - A) N = 0 Solução: t i = (A - P 0 ) N / (V N) P = P 0 + t i V V P N A Ponto qualquer do plano P 0 11

Interseção Raio-Triângulo Verifica se P está dentro do triângulo parametricamente Computa α, β: P = α (T 2 -T 1 ) + β (T 3 -T 1 ) T 3 Checa se ponto está dentro: 0 α 1 e 0 β 1 e α + β 1 T 1 β P V α T 2 P 0 Outras Interseções Cone, cilindro, elipsóide: Similar à esfera Box Procura interseção com 3 faces (planos) frontais e retorna o mais próximo do observador Polígono convexo Similar ao triângulo (verifica algebricamente se ponto de interseção com plano está dentro do polígono) Polígono côncavo Interseção com plano igual, mas o teste para saber se ponto está dentro do polígono é bem mais complexo 12

Otimizações no processo de cálculo das interseções Tenta-se diminuir os polígonos a serem testados para interseção: Bounding volumes (caixas ou esferas) Divisão hierárquica do espaço Uniforme Não-uniforme (quadtree, octree) Ray Casting Iluminação Direta Traça raios primários a partir da câmera Iluminação direta apenas de luzes não-bloqueadas I = ) n I E + K AI A + ( K + L D ( N L) K S ( V R) SLI L 13

Sombras Termo de sombra (S i ) diz se fontes de luz estão bloqueadas Trace o raio da interseção com o objeto até cada fonte L i S i = 0 se raio está bloqueado, S i = 1 caso contrário 0 < S i < 1 soft shadows (truque) E A A n I = I + K I + ( K ( N L) + K ( V R) ) S I L D S L L Traçado de Raios Recursivo M. Gattass, PUC-Rio R 2 L 2 R 1 T1 L 1 L 3 T 2 R 3 L 1 R 1 L 2 T 1 L 3 R 2 R3 T 2 14

Ray Tracing recursivo efeitos de segunda ordem Traça raios secundários a partir das superfícies de intersecção Iluminação global (reflexão especular e transparência) I = I + K I + ( K ( N L) + K ( V R) ) S I + K I + K I n Alberto ERaposo APUC-Rio A L D S L L R R T T Reflexões Especulares Traça raio secundário na direção da reflexão Avalia radiância ao longo do raio secundário e a inclui no modelo de iluminação. Radiância para o raio refletido I = I + K I + ( K ( N L) + K ( V R) ) S I + K I + K I n Alberto ERaposo APUC-Rio A D S L L RI L R T T 15

Reflexões Especulares M. Gattass, PUC-Rio Raio refletido : p( t) = p + t rˆ i nˆ rˆ θ θ p i vˆ Superfície especular Transparência Traça raio secundário na direção da refração Avalia radiância ao longo do raio secundário e a inclui no modelo de iluminação Radiância do raio refratado I = I + K I + ( K ( N L) + K ( V R) ) S I + K I + K I n Alberto ERaposo APUC-Rio A D S L L R R T I L T 16

Transparência Coeficiente de transparência é a fração do raio transmitido K T = 1 para objeto transparente, K T = 0 para opaco 0 < K T < 1 para objeto semi-transparente Coefiente de transparência I = I + K I + ( K ( N L) + K ( V R) ) S I + K I + K I n Alberto ERaposo APUC-Rio A D S L L R R K L T T Cálculo do raio refratado (transparência) Para superfícies muito finas, pode-se ignorar mudança de direção do raio Assume que luz atravessa superfície e segue em linha reta N Θ i η i η r T Θr L T Θ i T L 17

Cálculo do raio refratado (transparência) Para objetos sólidos, aplique Lei de Snell: η sin Θ r r = η sin Θ i η i η r i T Θr N Θ i L T ηi = ( cos Θi cos Θr ) N η r ηi L η r Exemplo de refração Enright, D., Marschner, S. and Fedkiw, R. 18

Resumo Ray casting (iluminação direta) Geralmente usa simplificações analíticas para a emissão das fontes de luz e para a reflectância das superfícies Ray tracing recursivo (iluminação global) Incorpora sombras, reflexões especulares, e refrações Tudo isso é uma aproxmação, para tornar viável computacionalmente a geração das imagens foto-realistas Resultado de curso Alunos de CGI98 M. Gattass, PUC-Rio 19

Resultado de curso Alunos de CGI2004.2 A. Raposo, PUC-Rio Resultado de curso Alunos de FCG2005.2 M. Gattass, PUC-Rio 20

Algoritmo de traçado de raios selecione selecione o o centro centro de de projeção(eye) projeção(eye) e e uma uma janela janela no no plano plano de de projeção projeção for for (cada (cada pixel pixel da da tela) tela) { { determine determine o o raio raio ray ray que que vai vai do do centro centro de de projeção projeção ao ao pixel; pixel; pixel pixel = = trace trace ( ( scene, scene, eye, eye, ray, ray, 1); 1); M. Gattass, PUC-Rio Color Color trace trace (Scene (Scene scene, scene, Vector3d Vector3d eye, eye, Vector3d Vector3d ray, ray, int int depth) depth) { { determine determine a a interseção interseção mais mais próxima próxima com com um um objeto objeto if if (intercepta (intercepta objeto) objeto) { { calcule calcule a a normal normal no no ponto ponto de de interseção interseção return return ( ( shade shade ( ( scene, scene, object, object, ray, ray, point, point, normal, normal, depth)); depth)); return return BACKGROUND; BACKGROUND; Color Color shade shade (Scene (Scene scene, scene, Object Object object, object, Vector3D Vector3D ray, ray, Vector3D Vector3D point, point, Vector3D Vector3D normal, normal, int intdepth) {{ color color = termo termoambiente ambientedo do material material do do objeto objeto ;; for for (cada (cadaluz) luz) {{ L = vetor vetorunitário unitáriona nadireção direçãode de point point para paraa a posição posiçãoda daluz; if if (L (L normal>0) normal>0) {{ if if (a (a luz luznão nãofor for bloqueada bloqueadano no ponto) ponto) {{ color color += += componente componentedifusa (Eq.difusa) (Eq.difusa) + componente componenteespecular especular (Eq. (Eq. especular) especular) if if (depth (depth >= >= maxdepth) maxdepth) return return color; color; if if (objeto (objetoé érefletor) {{ rray rray = raio raiona nadireção direçãode de reflexão; reflexão; rcolor rcolor = trace(scene, trace(scene, point, point, rray, rray, depth+1); depth+1); reduza reduzarcolor rcolorpelo pelocoeficente coeficentede de reflexão reflexãoespecular especulare e some some a a color; color; return return color; color; M. Gattass, PUC-Rio 21

Para o trabalho http://www.tecgraf.puc-rio.br/cd/ Outra opção http://www.tecgraf.puc-rio.br/im/ 22

Exemplos: Ray Tracing "Warm Up" Norbert Kern (2001) Exemplos: Ray Tracing http://www.irtc.org/ 23

Exemplos: Ray Tracing http://www.irtc.org/ Exemplos: Ray Tracing http://www.povray.org/ 24

Radiosidade fotografia: Escultura de J. Ferren Painéis difusos diagrama: observador Cluter & Durand, MIT Radiosidade vs. Ray Tracing Escultura original de John Ferren iluminada por trás pela luz do dia. Imagem gerada por ray tracing. Imagem gerada por Ray tracer padrão não radiosidade. consegue simular a interreflexão da luz entre as superfícies difusas. Cluter & Durand, MIT 25

Radiosidade vs. Ray Tracing Ray tracing é algoritmo no espaço da imagem Se câmera se move, precisa recomeçar cálculo Radiosidade é computada no espaço de objeto View-independent (só não pode mover as fontes de luz) Pode pré-computar iluminação complexa Cluter & Durand, MIT Radiosidade Assume-se que superfícies são lambertianas ideiais (difusas) refletem luz incidente igualmente em todas as direções Cena é dividida em conjunto depequenas áreas (patches). A radiosidade, B i, do patch i é a taxa total de energia que sai da superfície. A radiosidade sobre um patch é constante. ω' x' Cluter & Durand, MIT 26

Equação de Radiosidade L(x',ω') = E(x',ω') + ρ x' (ω,ω')l(x,ω)g(x,x')v(x,x') da Superfícies perfeitamente difusas (não direcionais): B x' = E x' + ρ x' B x G(x,x')V(x,x') Cluter & Durand, MIT Exemplos: Radiosidade Lightscape http://www.lightscape.com 27

Exemplos: Radiosidade Program of Computer Graphics, Cornell University. Note a iluminação indireta do teto. Informações Adicionais Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002. Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995. Rogers, D. F., Procedural Elements for Computer Graphics. McGraw-Hill, 1985 Marcelo Gattass: notas de aula. http://www.tecgraf.pucrio.br/~mgattass/cg.html Refs. online (ray tracing): http://www.irtc.org/ http://www.acm.org/tog/resources/rtnews/html/ http://www.povray.org/ http://www.siggraph.org/education/materials/hypergraph/raytrace/rtrace0.htm http://www.siggraph.org/education/materials/hypergraph/raytrace/rt_java/raytr ace.html 28