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.

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

3 MGattass A Câmera Pinhole

4 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

5 MGattass Síntese de imagens xoxo zozo Objetos Pixel (RGB) Luz Iluminação yoyo Câmara xexe yeye zeze eye

6 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

7 Definição de uma câmera A largura do plano de projeção b e a altura a são proporcionais à razão w/h MGattass 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

8 MGattass Abertura de uma câmera f1f1 f2f2 fov 1 fov 2 a A largura do plano de projeção aumenta de acordo com a sua distância

9 MGattass Eixos de uma câmera eixo óptico v u eye xexe yeye zeze eixo horizontal eixo vertical Esta câmera usa os mesmos eixos do OpenGL

10 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

11 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

12 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:

13 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

14 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

15 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

16 MGattass Um modelo de câmera (para traçado de raios) zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d Direção do raio Eq. do raio

17 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 Ponto no plano de projeção Vetores unitários que definem o plano

18 MGattass Canto inferior esquerdo da janela no plano near (ou far) eye z0z0 y0y0 x0x0 zeze xexe yeye plano near canto inferior esquerdo

19 MGattass Resultando zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d Ponto no plano de projeção

20 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 );

21 MGattass Objeto câmera Inicialização (pré-processamento): Lançamento de raios: o + td Dados: fov, w, h, near, far, eye, center, up

22 MGattass Modelagem dos Objetos Implícita: Por fronteira: p dados: centro c raio r p1p1 p2p2 p3p3

23 MGattass Interseção de um raio com uma esfera o d titi

24 MGattass Objeto esfera: métodos Interseção: se t i > 0 : c pipi Normal: Resolver eq. de segundo grau com esses coeficientes

25 MGattass Interseção com o plano do triângulo o d p1p1 n p2p2 p3p3 Distância do olho ao plano Projeção de d na direção da normal do plano

26 MGattass Ponto interno a triângulo p1p1 p2p2 p3p3 v 31 v 12 v 23

27 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 Áreas dos triângulos

28 Coordenadas baricêntricas como funções interpolantes A coordenada do ponto p i pode ser encontrada através da foruma acima MGattass p1p1 pipi A3A3 A1A1 A2A2 1 1 1 L1L1 L2L2 L3L3 p3p3 p2p2

29 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 Assim como ocorre com coordenadas, também é possível descobrir coordenadas de textura ou cores interpoladas dentro do triângulo

30 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)

31 MGattass O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos?

32 MGattass Área aparente energia luminosa energia luminosa I (lumens)

33 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

34 MGattass Componente de reflexão difusa - /2 0 /2 1

35 MGattass Outras maneiras de se escrever: I, l, k [0,1 ] Eq. 1

36 MGattass Luz difusa mais ambiente:

37 MGattass Componente de reflexão especular I, l, k [0,1 ] Eq.2 Brilho -0,500,51 n=4 n=1 n=8

38 MGattass Reflexão especular

39 MGattass Reflexão especular luz refletida

40 MGattass Cálculo da reflexão de um vetor sobre outros hh LnLn

41 MGattass Distribuição da luz direta sobre um ponto AmbientDiffuse Specular

42 MGattass Modelo de várias luzes uma reflexão apenas para cada fonte de luz

43 MGattass Sombra A luz não chega a superfíce

44 MGattass Modelo de várias luzes e sombra

45 MGattass Fontes de luz especiais: Onidirecional Fonte: Mauricio Hofmam

46 MGattass Fontes de luz especiais: Direcional Fonte: Mauricio Hofmam

47 MGattass Fontes de luz especiais: Farolete Fonte: Mauricio Hofmam

48 MGattass Uma revisão

49 MGattass Reflexão de outros objetos Superfície especular

50 MGattass Transparência Objeto transparente lei de Snell

51 MGattass Cálculo do Raio Refratado i t

52 MGattass Advertência: Refração não é simples!

53 MGattass Iluminação considerando superfícies refletoras e objetos transparentes redução da transparência redução da reflexão

54 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

55 MGattass Resultado de curso Alunos de CGI98

56 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); }

57 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; }

58 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

59 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

60 MGattass Sistema de coordenada de textura na esfera x y z i j x

61 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

62 MGattass Textura no triângulo e coordenadas baricêntricas p1p1 v 12 v 23 v 31 A3A3 A1A1 A2A2 p2p2 p3p3

63 MGattass Textura

64 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

65 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

66 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

67 MGattass Anti-alias (a) original (b) uniforme(c) jittered pixel

68 MGattass Refinamento Progresivo subdivisão final segunda subdivisão primeira subdivisão amostragem inicial pixels sendo visitados pixels já visitados

69

70

71

72 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