Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouTomás Ferra Alterado mais de 10 anos atrás
1
MGattass Algoritmo de Rastreamento de Raios
2
MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno orifício 2.Aristótes (384-322 AC) – eclipse do sol 3.Alhazen de Basra (X DC) 4.Leonardo da Vince (XVI DC)...
3
Canaletto (Giovanni Antonio Canal) (1697-1768). Pintores Ponto de fuga
4
MGattass Evolução da Camera obscura para as Câmaras fotográficas Luis-Jacques-Mandé Daguerre (1839)Câmara escura - Leonardo da Vinci -1545
5
MGattass A Câmra Pinhole
6
MGattass Princípios da câmera Pin-Hole caixa filme objeto pinhole raios de luz imagem Câmera plano de projeção centro de projeção Projeção cônica
7
MGattass Síntese de imagens xoxo zozo Objetos Pixel (RGB) Luz Iluminação yoyo Câmara xexe yeye zeze eye
8
MGattass Algoritmo básico Para cada pixel da tela Lance uma raio; Para cada objeto da cena Calcule a interseção do raio com este o objeto; Armazene a interseção mais próxima; Se o raio interceptou algum objeto Calcule a contribuição das luzes neste ponto; Pinte o pixel com esta cor; Objetos Luz Iluminação Câmara xexe yeye zeze
9
MGattass Definição de uma câmera w pixels largura b h pixels altura a janela o centro de projeção janela eixo óptico centro óptico o eye plano de projeção centro de projeção Projeção cônica
10
MGattass Abertura de uma câmera f1f1 f2f2 fov 1 fov 2 a
11
MGattass Eixos de uma câmera eixo óptico v u eye xexe yeye zeze eixo horizontal eixo vertical
12
MGattass Parâmetros de funções do OpenGL Void glPerspective(GLdouble fovy,GLdouble aspect,GLdouble near_,GLdouble far_); aspect = w/h xexe yeye zeze near far w h yeye zeze fovy void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height ); u v width height o1o1 x0x0 y0y0
13
MGattass Parâmetros intrínsecos (do OpenGL) parte 2 – Câmera mais geral void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); yeye zeze v near u xexe xexe zeze leftright far
14
MGattass Parâmetros internos ou intrínsecos near = plano próximo (distância focal) fovy = campo de visão w h pixels far = plano distante Primários:Derivados:
15
MGattass Posicionamento da câmera (parâmetros externos ou extrínsecos) eye = centro óptico center = ponto de visada, up = direção para cima Coordenadas dos Objetos eye center fovy vista lateral up eye center up x0x0 z0z0 y0y0 near far
16
MGattass Calculo do sistema do olho - x e y e z e center zeze eye up z0z0 y0y0 x0x0 view up center eye z0z0 y0y0 x0x0 dados: eye, center, up dados: eye, center, up view = center - eye
17
MGattass Calculo do sistema do olho - x e y e z e center eye vup z0z0 y0y0 x0x0 view zeze xexe center eye up z0z0 y0y0 x0x0 view zeze xexe yeye eye up zeze xexe yeye center
18
MGattass Um modelo de câmera zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d
19
MGattass Lançamento de Raios o1o1 p xy 1 0 2 x 3 h-1 u w-1 v 1 2 y w pixels em b h pixels em a
20
MGattass Canto inferior esquerdo da janela no plano near (ou far) eye z0z0 y0y0 x0x0 zeze xexe yeye plano near canto inferior esquerdo
21
MGattass Resultando zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d
22
MGattass Tipo Abstrato de Dados: Camera em C struct _Camera { /* Definição da câmera */ Vector eye, center, up; float fovy; float nearp,farp; int w,h; /* Parametros derivados */ float f; float a,b; Vector xe,ye,ze; }; typedef struct _Camera Camera; Camera* camCreate( Vector eye, Vector at, Vector up, double fovy, double nearp, double farp, int w, int h ); Ray camGetRay( Camera camera, double x, double y );
23
MGattass Objeto câmera Inicialização (pré-processamento): Lançamento de raios: o + td Dados: fov, w, h, near, far, eye, center, up
24
MGattass Modelagem dos Objetos Implícita: Por fronteira: p dados: centro c raio r p1p1 p2p2 p3p3
25
MGattass Interseção de um raio com uma esfera o d titi
26
MGattass Objeto esfera: métodos Interseção: se t i > 0 : c pipi Normal:
27
MGattass Interseção com o plano do triângulo o d p1p1 n p2p2 p3p3
28
MGattass Ponto interno a triângulo p1p1 p2p2 p3p3 v 31 v 12 v 23
29
MGattass Coordenadas baricêntricas p1p1 v 12 v 23 v 31 p i é interior se L 1, L 2 e L 3 [0..1] A3A3 A1A1 A2A2 p2p2 p3p3
30
MGattass Coordenadas baricêntricas como funções interpolantes p1p1 pipi A3A3 A1A1 A2A2 1 1 1 L1L1 L2L2 L3L3 p3p3 p2p2
31
MGattass Interpolação de cor e coordenada de textura através das coordenadas baricêntricas ou: p1p1 pipi A3A3 A1A1 A2A2 p3p3 p2p2 c1c1 u1u1 c2c2 u2u2 c3c3 u3u3
32
MGattass Caixa alinhada com os eixos x y z (x min, y min, z min ) (x max, y max, z max ) o d=(d x, d y, d z ) titi
33
MGattass Motivação: Uma cena simples Camera: eye = (100,40,40), center = (0,0,0), up=(0,1,0), fov=90 º, near = 30, far=230, w=230, h=230. Esfera: c = (0,20,0), r = 25, cor azul = (0,0,1) Caixas alinhadas com os eixos: p 0 = (-80,-50,-50), p 1 = (50,-45,50) e cor amarela = (0.7,0.7,0) p 0 = (-80,-50,-60), p 1 = (50,50,-50) e cor amarela = (0.7,0.7,0) Luz Pontual: Posição=(60,120,40) e intensidade RGB l=(0.8,0.8,0.8)
34
MGattass O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos?
35
MGattass Área aparente energia luminosa energia luminosa I (lumens)
36
MGattass Modelo de reflexão de superfíces Lambertianas luz incidente 1.Reflete igualmente em todas as direções 2.A intensidade é proporcional ao co-seno
37
MGattass Componente de reflexão difusa - /2 0 /2 1
38
MGattass Outras maneiras de se escrever: I, l, k [0,1 ] Eq. 1
39
MGattass Luz difusa mais ambiente:
40
MGattass Componente de reflexão especular I, l, k [0,1 ] Eq.2 Brilho -0,500,51 n=4 n=1 n=8
41
MGattass Reflexão especular
42
MGattass Reflexão especular luz refletida
43
MGattass Cálculo da reflexão de um vetor sobre outros hh LnLn
44
MGattass Distribuição da luz direta sobre um ponto AmbientDiffuse Specular
45
MGattass Modelo de várias luzes uma reflexão apenas para cada fonte de luz
46
MGattass Sombra A luz não chega a superfíce
47
MGattass Modelo de várias luzes e sombra
48
MGattass Fontes de luz especiais: Onidirecional Fonte: Mauricio Hofmam
49
MGattass Fontes de luz especiais: Direcional Fonte: Mauricio Hofmam
50
MGattass Fontes de luz especiais: Farolete Fonte: Mauricio Hofmam
51
MGattass Uma revisão
52
MGattass Reflexão de outros objetos Superfície especular
53
MGattass Transparência Objeto transparente lei de Snell
54
MGattass Cálculo do Raio Refratado i t
55
MGattass Advertência: Refração não é simples!
56
MGattass Iluminação considerando superfícies refletoras e objetos transparentes redução da transparência redução da reflexão
57
MGattass Natureza recursiva do algoritmo de Rastreamento de Raios R1R1 T1T1 R2R2 T2T2 R3R3 L1L1 L3L3 L2L2 R1R1 R2R2 L1L1 L3L3 L2L2 T1T1 T2T2 R3R3
58
MGattass Resultado de curso Alunos de CGI98
59
MGattass Algoritmo de traçado de raios Color trace (Scene scene, Vector3d eye, Vector3d 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 ( scene, object, ray, point, normal, depth)); } return BACKGROUND; } Color trace (Scene scene, Vector3d eye, Vector3d 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 ( scene, object, ray, point, normal, depth)); } return BACKGROUND; } selecione o centro de projeção(eye) 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(eye) 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); }
60
Color shade (Scene scene, Object object, Vector3D ray, Vector3D point, Vector3D normal, int depth) { color = termo ambiente do material do objeto ; for (cada luz) { L = vetor unitário na direção de point para a posição da luz; if (L normal>0) { if (a luz não for bloqueada no ponto) { color += componente difusa (Eq.1) + componente especular (Eq.2) } } if (depth >= maxDepth) return color; if (objeto é refletor) { rRay = raio na direção de reflexão; rColor = trace(scene, point, rRay, depth+1); reduza rColor pelo coeficente de reflexão especular e some a color; } return color; } Color shade (Scene scene, Object object, Vector3D ray, Vector3D point, Vector3D normal, int depth) { color = termo ambiente do material do objeto ; for (cada luz) { L = vetor unitário na direção de point para a posição da luz; if (L normal>0) { if (a luz não for bloqueada no ponto) { color += componente difusa (Eq.1) + componente especular (Eq.2) } } if (depth >= maxDepth) return color; if (objeto é refletor) { rRay = raio na direção de reflexão; rColor = trace(scene, point, rRay, depth+1); reduza rColor pelo coeficente de reflexão especular e some a color; } return color; }
61
MGattass Texturas u v 1.0 0 u 0 v u 0 v Texturas 2D = Imagens onde o domínio é u, v [0,1]×[0,1] R 2
62
MGattass Sistemas de coordenada de textura na caixa u v u v x y z u v (1,1) (0,0) face x=x max
63
MGattass Sistema de coordenada de textura na esfera x y z i j x
64
MGattass Sistema de coordenada de textura no triângulo u v (u 1,v 1 ) (u 2,v 2 ) (u 3,v 3 ) u1= u3u1= u3 u2u2 v1= v2v1= v2 v3v3 1 2 3
65
MGattass Textura no triângulo e coordenadas baricêntricas p1p1 v 12 v 23 v 31 A3A3 A1A1 A2A2 p2p2 p3p3
66
MGattass Textura
67
MGattass Texturas de rugosidade (bump textures) e Texturas de deslocamentos (displacement mapping) Pertubar aleatóriamente as normais dos objetos Pertubar aleatóriamente as posições dos pontos
68
MGattass Textura ambiente (environment maps) x y z u v (0,0) (1,1) face dos raios x>y e x>z y=-x y=x z=-x z=x
69
MGattass Tratamento anti-alias Lance um raio para cada sub-pixel Faça uma média dos valores obtidos dx, dy = variáveis randômicas dx dy a sub-pixels pixel
70
MGattass Anti-alias (a) original (b) uniforme(c) jittered pixel
71
MGattass Refinamento Progresivo subdivisão final segunda subdivisão primeira subdivisão amostragem inicial pixels sendo visitados pixels já visitados
72
MGattass Radiosidade e Ray Tracing Klaus Mueller, Stony Brook University, Computer Science (CSE 564) global illumination standard raytracing
73
Feb 3 rd, 2003Afrigraph 2003 Todays State of the Art - Some Snapshots
79
MGattass Aceleracao do RT Cálculos mais eficientes Uso de uma Kd Tree
80
MGattass
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.