Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLorenzo Gularte Alterado mais de 10 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
Pin-Hole Camera Câmara escura - Leonardo da Vinci -1545 Luis-Jacques-Mandé Daguerre (1789-1851)
6
Modelo de câmera x y z Iluminação Objetos Câmara
7
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 =
8
Interseção com a esfera O D titi
9
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
10
Interseção com o plano do triângulo O D P(t i ) V1V1 N
11
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: ou
12
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:
13
Coordenadas baricêntricas como interpolantes V1V1 V2V2 V3V3 PiPi A3A3 A1A1 A2A2 1 1 1 L1L1 L2L2 L3L3
14
Interpolação com coordenadas baricêntricas V1V1 V2V2 V3V3 PiPi A3A3 A1A1 A2A2 ou: C1C1 C2C2 C3C3 U1U1 U2U2 U3U3
15
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.
16
Componente de reflexão difusa N L N N L L I, l, k [0,1 ]
17
Componente de reflexão especular N R V L Brilho -0,500,51 n=4 n=1 n=8 I, l, k [0,1 ]
18
Cálculo do vetor R N L R 1 L L = L / (L*N) H H = N - L H R R = N + H R = unitário (R)
19
Luz direta sobre um ponto N R V
20
Modelo de várias luzes Luz Ambiente
21
Sombra A luz não chega a superfíce
22
Uma revisão
23
Reflexão de outros objetos N V Superfície especular
24
Transparência N V Superfície transparente = sin Lei de Snell:
25
Iluminação considerando R e T transparência redução da reflexão
26
Traçado de Raios Recursivo R1R1 T1T1 R2R2 T2T2 R3R3 L1L1 L3L3 L2L2 R1R1 R2R2 L1L1 L3L3 L2L2 T1T1 T2T2 R3R3
27
Resultado de curso Alunos de CGI98
28
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); }
29
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; }
30
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
31
Normal e cor Pertubar aleatóriamente as normais dos objetos N N A cor de um ponto depende de sua posição num mapa de textura
32
Textura na esfera x y z i j
33
Refinamento Progresivo subdivisão final segunda subdivisão primeira subdivisão amostragem inicial pixels sendo visitados pixels já visitados
34
Modelo da câmera Dados: eye, ref, vup (definem o sistema de coordenadas do olho) abertura do campo fixa de 90 0 eye ref vup Coordenadas dos Objetos eye ref 45 o Vista de cima
35
Calcula o sistema - x e y e z e ref zeze eye vup z0z0 y0y0 x0x0 view z e = – view / ||view|| vup ref eye z0z0 y0y0 x0x0 view dados: eye, ref, vup abertura da câmera dados: eye, ref, vup abertura da câmera view =ref-eye
36
Calcula o sistema - x e y e z e x e = (vup x z e ) / ||vup x z e || ref eye vup z0z0 y0y0 x0x0 view zeze xexe y e = z e x x e ref eye vup z0z0 y0y0 x0x0 view zeze xexe yeye eye vup zeze xexe yeye view
37
Canto inferior da janela no plano de projeção eye z0z0 y0y0 x0x0 A zeze xexe yeye B C P ll = eye + A + B + C P ll = eye - z e - y e - x e P ll Se o ângulo de abertura for 90 0, d=1 e w = h: A = - x e B = - y e C = - x e
38
Lançamento de Raios P ll dx = 2 x e / w dy = 2 y e / h P ll dx = 2 x e / w dy = 2 y e / h P0P0 P P 0 = P u + dx/2 + dy/2; for (i=0; i<=w; i++) { P = P 0 ; for (j=0; j<=h; j++) { P = P + dx; trace o raio (eye, P); } P 0 = P 0 + dy; }
39
Modelo de Lente e Obturador tela (pixels) lente e obturador cena
40
Focalização imagem lente focalização Luz de vários objetos chegam no mesmo ponto confusão didi dfdf d d f
41
Obtenção dos raios plano da imagem lente plano de focalização P A
45
Radiosidade e Ray Tracing
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.