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

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

MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno.

Cópias: 2
MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno.

MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno.

Apresentações semelhantes


Apresentação em tema: "MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno."— Transcrição da apresentação:

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 ( AC) – eclipse do sol 3.Alhazen de Basra (X DC) 4.Leonardo da Vince (XVI DC)...

3 Canaletto (Giovanni Antonio Canal) ( ). 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 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 A2A 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 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 v3v

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

73

74

75 MGattass Radiosidade e Ray Tracing Klaus Mueller, Stony Brook University, Computer Science (CSE 564) global illumination standard raytracing


Carregar ppt "MGattass Algoritmo de Rastreamento de Raios. MGattass Registros da camera obscura (latim) 1.Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno."

Apresentações semelhantes


Anúncios Google