A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.

Apresentações semelhantes


Apresentação em tema: "Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio."— Transcrição da apresentação:

1

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

42

43

44

45 Radiosidade e Ray Tracing


Carregar ppt "Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio."

Apresentações semelhantes


Anúncios Google