Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAmanda Lupercio Alterado mais de 9 anos atrás
2
Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio
3
Pinturas: produção de imagens Avercamp, Hendrick (1585-1634).
4
Canaletto (Giovanni Antonio Canal) (1697-1768).
5
Câmaras Câmara escura - Leonardo da Vinci -1545 Luis-Jacques-Mandé Daguerre (1789-1851)
6
Pin-Hole Camera Câmara escura - Leonardo da Vinci -1545 Luis-Jacques-Mandé Daguerre (1789-1851)
7
Modelo de câmera x y z Iluminação Objetos Câmara
8
Traçado de raios: raios e objetos implícitos x y z x = x 0 + t (x 1 - x 0 ) y = y 0 + t (y 1 - y 0 ) z = z 0 + t (z 1 - z 0 ) (x-x c ) 2 + (y-y c ) 2 + (z-z c ) 2 = R 2 -b ± b 2 - 4ac 2a t =
9
Interseção com a esfera O D titi
10
P0P0 P1P1 x = x 0 + t (x 1 - x 0 ) y = y 0 + t (y 1 - y 0 ) z = z 0 + t (z 1 - z 0 ) z x y Ax + By + Cz + D = 0 0 1 3 A0A0 A3A3 A1A1 L 0 = A 0 / A T L 1 = A 1 / A T L 2 = A 2 / A T L i [0,1 ] P é interior se e somente se Raios e objetos descritos pela fronteira
11
Interseção com o plano do triângulo O D P(t i ) V1V1 N
12
Ponto no interior de um triângulo V1V1 V2V2 V3V3 PiPi PePe a 12 a 23 a 31 N P é interior se t 1, t 2 e t 3 tem o mesmo sentido, ou seja:
13
Coordenadas baricêntricas V1V1 V2V2 V3V3 PiPi PePe a 12 a 23 a 31 N P é interior se L 1, L 2 e L 3 [0..1] A3A3 A1A1 A2A2 Mais ainda:
14
Coordenadas baricêntricas como interpolantes V1V1 V2V2 V3V3 PiPi A3A3 A1A1 A2A2 1 1 1 L1L1 L2L2 L3L3
15
Interpolação com coordenadas baricêntricas V1V1 V2V2 V3V3 PiPi A3A3 A1A1 A2A2 ou: C1C1 C2C2 C3C3 U1U1 U2U2 U3U3
16
Exemplo: uma esfera e duas paredes z x y #SURFACE 20. 20. 100. 160. 160. 60. #LIGHT 40. 120. 0. 255 255 255 #SPHERE 0 25.0 0.0 20.0 0.0 #BOX 1 -80. -50. -50. 50. -45. 50. 1 -80. -50. -60. 50. 50. -50.
17
Componente de reflexão difusa N L N N L L I, l, k [0,1 ]
18
Componente de reflexão especular N R V L Brilho -0,500,51 n=4 n=1 n=8 I, l, k [0,1 ]
19
Cálculo do vetor R N L R anan atat atat
20
Luz direta sobre um ponto N R V
21
Modelo de várias luzes Luz Ambiente
22
Sombra A luz não chega a superfíce
23
Uma revisão
24
Reflexão de outros objetos N V Superfície especular
25
Cálculo do Raio Refletido N V RrRr atat atat anan a n = (V.N)N a t = a n - V R r = a n + a t R r = 2(N.V)N - V PiPi Raio = P i +t R r
26
Transparência N V Superfície transparente = sin sin Lei de Snell:
27
Cálculo do Raio Refratado N V atat anan a t = (V.N)N - V sin i = ||a t || sin t = i sin i / t cos t = sqrt(1 - sin 2 t ) R r = sin t T - cos t N PiPi Raio = P i +t R t -N RtRt ii tt T
28
Iluminação considerando R e T transparência redução da reflexão
29
Traçado de Raios Recursivo R1R1 T1T1 R2R2 T2T2 R3R3 L1L1 L3L3 L2L2 R1R1 R2R2 L1L1 L3L3 L2L2 T1T1 T2T2 R3R3
30
Resultado de curso Alunos de CGI98
31
Algoritmo de traçado de raios rtColor trace ( rtRay ray, int depth) { determine a interseção mais próxima com um objeto if (intercepta objeto) { calcule a normal no ponto de interseção return ( shade ( object, ray, intersection, normal, depth); } return BACKGOUND; } rtColor trace ( rtRay ray, int depth) { determine a interseção mais próxima com um objeto if (intercepta objeto) { calcule a normal no ponto de interseção return ( shade ( object, ray, intersection, normal, depth); } return BACKGOUND; } selecione o centro de projeção e uma janela no plano de projeção for (cada pixel da tela) { determine o raio ray que vai do centro de projeção ao pixel; pixel = trace ( ray, 1); } selecione o centro de projeção e uma janela no plano de projeção for (cada pixel da tela) { determine o raio ray que vai do centro de projeção ao pixel; pixel = trace ( ray, 1); }
32
rtColor shade ( rtObject object, rtRay ray, int depth, rtPoint point, rtNormal normal, int depth) { rtColor color, rColor, sColor; rtRay rRay, tRay, sRay; color = termo ambiente; for (cada luz) { sRay = raio para o ponto de luz; if (sRay normal>0) { calcule quanto de luz é bloqueada por superfícies opacas e transparentes e use para computar as componentes difusa e especular } } if (depth >= maxDepth) return color; if (objeto é refletor) { rRay = raio na direção de refleção; rColor = trace( rRay, depth+1); reduza rColor pelo coeficente de refleção especular e some a color; } if (objeto é transparente) { tRay = raio na direção de refração; if (reflexão total não ocorre} { tColor = trace( tRay, depth+1); reduza tColor pelo coeficente de refração especular e some a color; } } return color; } rtColor shade ( rtObject object, rtRay ray, int depth, rtPoint point, rtNormal normal, int depth) { rtColor color, rColor, sColor; rtRay rRay, tRay, sRay; color = termo ambiente; for (cada luz) { sRay = raio para o ponto de luz; if (sRay normal>0) { calcule quanto de luz é bloqueada por superfícies opacas e transparentes e use para computar as componentes difusa e especular } } if (depth >= maxDepth) return color; if (objeto é refletor) { rRay = raio na direção de refleção; rColor = trace( rRay, depth+1); reduza rColor pelo coeficente de refleção especular e some a color; } if (objeto é transparente) { tRay = raio na direção de refração; if (reflexão total não ocorre} { tColor = trace( tRay, depth+1); reduza tColor pelo coeficente de refração especular e some a color; } } return color; }
33
Tratamento anti-alias Pixel Lance um raio para cada sub-pixel Faça uma média dos valores obtidos Sub-Pixels... dx dy dx, dy = variáveis randômicas
34
Normal e textura Pertubar aleatóriamente as normais dos objetos N N’ A cor de um ponto depende de sua posição num mapa de textura
35
Textura na esfera x y z i j
36
Refinamento Progresivo subdivisão final segunda subdivisão primeira subdivisão amostragem inicial pixels sendo visitados pixels já visitados
37
Modelo da câmera Dados: eye, at, up (definem o sistema de coordenadas do olho) fovy (define a abertura da câmera) near, far (define distancias de interesse) w, h (resolução da tela, número de pixels na horizontal e vertical, respect.) eye at up Coordenadas dos Objetos eye at fovy Vista lateral up x0x0 z0z0 y0y0 near far
38
Calcula o sistema - x e y e z e at zeze eye up z0z0 y0y0 x0x0 view z e = – view / ||view|| up at eye z0z0 y0y0 x0x0 view dados: eye, at, up dados: eye, at, up view =at-eye
39
Calcula o sistema - x e y e z e x e = (up x z e ) / ||up x z e || ref eye vup z0z0 y0y0 x0x0 view zeze xexe y e = z e x x e ref eye up z0z0 y0y0 x0x0 view zeze xexe yeye eye up zeze xexe yeye view
40
Canto inferior esquerdo da janela no plano (near ou far) P ll = eye - Az e - By e -C x e eye z0z0 y0y0 x0x0 A zeze xexe yeye B C yeye zeze A B B fovy/2 B = A tan(fovy/2) 2B h pixels 2C w pixels C = B.w / h Vista lateral Pixel quadrado: Vista no plano Plano near: A = near Plano far: A = far
41
Lançamento de Raios P ll u = 2 C x e / w v = 2 B y e / h P 102 i 3 j P = P ll + j u + i v
42
Modelo de Lente e Obturador tela (pixels) lente e obturador cena
43
Focalização imagem lente focalização Luz de vários objetos chegam no mesmo ponto confusão didi dfdf d d f
44
Obtenção dos raios plano da imagem lente plano de focalização P A
48
Radiosidade e Ray Tracing
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.