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 ( ).

4 Canaletto (Giovanni Antonio Canal) ( ).

5 Câmaras Câmara escura - Leonardo da Vinci Luis-Jacques-Mandé Daguerre ( )

6 Pin-Hole Camera Câmara escura - Leonardo da Vinci Luis-Jacques-Mandé Daguerre ( )

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 = 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 A2A 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 #LIGHT #SPHERE #BOX

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 ii tt 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

45

46

47

48 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