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

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

Algoritmo de Rastreamento de Raios

Apresentações semelhantes


Apresentação em tema: "Algoritmo de Rastreamento de Raios"— Transcrição da apresentação:

1 Algoritmo de Rastreamento de Raios
Computação Gráfica Interativa - Gattass Algoritmo de Rastreamento de Raios 11/11/2018 MGattass Ray Tracing

2 Registros da “camera obscura (latim)”
Computação Gráfica Interativa - Gattass Registros da “camera obscura (latim)” 11/11/2018 Mo-Ti (V século antes de Cristo) – quarto escuro com pequeno orifício Aristótes ( AC) – eclipse do sol Alhazen de Basra (X DC) Leonardo da Vince (XVI DC) ... MGattass Ray Tracing

3 Computação Gráfica Interativa - Gattass
A Câmera Pinhole 11/11/2018 MGattass Ray Tracing

4 Princípios da câmera Pin-Hole
Computação Gráfica Interativa - Gattass Princípios da câmera Pin-Hole 11/11/2018 caixa filme objeto pinhole raios de luz imagem Câmera plano de projeção centro de projeção Projeção cônica O princípio básico da câmera pin-hole consiste em criar uma imagem de um objeto iluminado (que esteja refletindo ou emitindo luz) em um filme através dos raios de luz que partem de cada ponto do objeto e que passam pelo furo de pequenas dimensões. Um ponto importante é que, como os raios de luz são segmentos de reta, o processo segue a matemática de projeções cônicas com o centro de projeção sendo o furo de pequenas dimensões. Pela geometria dos raios de luz e da câmera a imagem projetada fica invertida no filme como sempre ocorre na projeção cônica quando o centro de prjeção está entre o plano de projeção e o objeto. Se transladarmos o plano de projeção para frente do centro de projecão a imagem projetada seria a mesma, a menos de uma escala uniforme e do fato que a inversão não ocorreria. Nesta situação é comum referenciarmos o centro de projeção como olho (eye) imaginando o plano de projeção como sendo uma janela para o mundo virtual. MGattass Ray Tracing

5 Computação Gráfica Interativa - Gattass
11/11/2018 Síntese de imagens Luz Iluminação Pixel (RGB) Câmara xe ye ze eye Objetos yo A geração de imagens a partir de uma modelo matemático de uma cena (cena virtual) requer tres tipos de elementos: (a) um modelo de câmera; (b) um modelo de objetos e (c) um modelos de luzes. O modelo de objeto inclui não somente uma descrição de sua geometria, mas também das suas propriedades de materias que determinam como ele interage com a luz. Ou seja, como ele reflete a luz que incide sobre ele. O problema fundamental consiste em determinar qual a cor do raio luminoso correspondente a parte do plano de projeção associada a cada um dos pixels da tela. Ou seja, dada a natureza retilinea dos raios de luz, o problema consiste em determinar qual a luz emintida e/ou refletida pela superfíce mais próxima do centro de projeção que intercepta este raio. xo zo MGattass Ray Tracing

6 Computação Gráfica Interativa - Gattass
Algoritmo básico 11/11/2018 Objetos Luz Iluminação Câmara xe ye ze 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; MGattass Ray Tracing

7 Definição de uma câmera
Computação Gráfica Interativa - Gattass Definição de uma câmera 11/11/2018 plano de projeção centro de projeção Projeção cônica centro de projeção janela eixo óptico centro o eye w pixels largura b h pixels altura a janela o A largura do plano de projeção ‘b’ e a altura ‘a’ são proporcionais à razão w/h MGattass Ray Tracing

8 Computação Gráfica Interativa - Gattass
Abertura de uma câmera 11/11/2018 f1 f2 fov1 fov2 a A largura do plano de projeção aumenta de acordo com a sua distância MGattass Ray Tracing

9 Computação Gráfica Interativa - Gattass
Eixos de uma câmera 11/11/2018 eixo óptico v u eye xe ye ze eixo horizontal eixo vertical Esta câmera usa os mesmos eixos do OpenGL MGattass Ray Tracing

10 Parâmetros de funções do OpenGL
Computação Gráfica Interativa - Gattass 11/11/2018 Parâmetros de funções do OpenGL Void glPerspective(GLdouble fovy,GLdouble aspect,GLdouble near_,GLdouble far_); ye ze fovy aspect = w/h xe ye ze near far w h u v width height o1 x0 y0 void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height ); MGattass Ray Tracing

11 Parâmetros intrínsecos (do OpenGL) parte 2 – Câmera mais geral
Computação Gráfica Interativa - Gattass Parâmetros intrínsecos (do OpenGL) parte 2 – Câmera mais geral 11/11/2018 void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); ye v ze xe far u near near xe left right ze MGattass Ray Tracing

12 Parâmetros internos ou intrínsecos
Computação Gráfica Interativa - Gattass Parâmetros internos ou intrínsecos 11/11/2018 Primários: Derivados: near = plano próximo (distância focal) far = plano distante w  h pixels fovy = campo de visão MGattass Ray Tracing

13 Posicionamento da câmera (parâmetros externos ou extrínsecos)
Computação Gráfica Interativa - Gattass Posicionamento da câmera (parâmetros externos ou extrínsecos) 11/11/2018 eye = centro óptico center = ponto de visada, up = direção para cima vista lateral eye center up x0 z0 y0 up eye fovy center Coordenadas dos Objetos near far MGattass Ray Tracing

14 Calculo do sistema do olho - xe ye ze
Computação Gráfica Interativa - Gattass 11/11/2018 Calculo do sistema do olho - xe ye ze up dados: eye, center, up eye view = center - eye z0 y0 x0 center center ze eye up z0 y0 x0 view MGattass Ray Tracing

15 Calculo do sistema do olho - xe ye ze
Computação Gráfica Interativa - Gattass 11/11/2018 Calculo do sistema do olho - xe ye ze vup ze xe eye view z0 y0 x0 center center eye up z0 y0 x0 view ze xe ye eye up ze xe ye center MGattass Ray Tracing

16 Um modelo de câmera (para traçado de raios)
Computação Gráfica Interativa - Gattass Um modelo de câmera (para traçado de raios) 11/11/2018 xe ye ze u v o1 eye pxy d yo Eq. do raio xo zo Direção do raio MGattass Ray Tracing

17 Computação Gráfica Interativa - Gattass
Lançamento de Raios 11/11/2018 o1 pxy 1 2 x 3 h-1 u w-1 v y w pixels em b h pixels em a Vetores unitários que definem o plano Ponto no plano de projeção MGattass Ray Tracing

18 Canto inferior esquerdo da janela no plano near (ou far)
Computação Gráfica Interativa - Gattass 11/11/2018 Canto inferior esquerdo da janela no plano near (ou far) ye ze xe eye plano near y0 canto inferior esquerdo x0 z0 MGattass Ray Tracing

19 Computação Gráfica Interativa - Gattass
Resultando 11/11/2018 xe ye ze u v o1 eye pxy d yo Ponto no plano de projeção xo zo MGattass Ray Tracing

20 Tipo Abstrato de Dados: Camera em C
Computação Gráfica Interativa - Gattass Tipo Abstrato de Dados: Camera em C 11/11/2018 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 ); MGattass Ray Tracing

21 Computação Gráfica Interativa - Gattass
Objeto câmera 11/11/2018 Dados: fov, w, h, near, far, eye, center, up Inicialização (pré-processamento): Lançamento de raios: o + td MGattass Ray Tracing

22 Computação Gráfica Interativa - Gattass
Modelagem dos Objetos 11/11/2018 Implícita: Por fronteira: p p3 p2 dados: centro c raio r p1 MGattass Ray Tracing

23 Interseção de um raio com uma esfera
Computação Gráfica Interativa - Gattass Interseção de um raio com uma esfera 11/11/2018 o d ti MGattass Ray Tracing

24 Objeto esfera: métodos
Computação Gráfica Interativa - Gattass Objeto esfera: métodos 11/11/2018 Interseção: Resolver eq. de segundo grau com esses coeficientes se ti > 0 : Normal: c pi MGattass Ray Tracing

25 Interseção com o plano do triângulo
Computação Gráfica Interativa - Gattass Interseção com o plano do triângulo 11/11/2018 o d p3 n p1 p2 Distância do olho ao plano Projeção de d na direção da normal do plano MGattass Ray Tracing

26 Ponto interno a triângulo
Computação Gráfica Interativa - Gattass Ponto interno a triângulo 11/11/2018 p3 v31 v12 v23 p2 p1 MGattass Ray Tracing

27 Coordenadas baricêntricas
Computação Gráfica Interativa - Gattass Coordenadas baricêntricas 11/11/2018 p3 v23 Áreas dos triângulos v31 A3 A1 A2 p1 v12 p2 pi é interior se L1, L2 e L3 [0..1] MGattass Ray Tracing

28 Coordenadas baricêntricas como funções interpolantes
Computação Gráfica Interativa - Gattass Coordenadas baricêntricas como funções interpolantes 11/11/2018 p3 A1 A2 pi L1 p1 A3 1 p2 L2 1 A coordenada do ponto pi pode ser encontrada através da foruma acima L3 1 MGattass Ray Tracing

29 Computação Gráfica Interativa - Gattass
Interpolação de cor e coordenada de textura através das coordenadas baricêntricas 11/11/2018 c3 u3 p3 A1 A2 ou: pi p1 A3 c1 u1 p2 c2 u2 Assim como ocorre com coordenadas, também é possível descobrir coordenadas de textura ou cores interpoladas dentro do triângulo MGattass Ray Tracing

30 Motivação: Uma cena simples
Computação Gráfica Interativa - Gattass Motivação: Uma cena simples 11/11/2018 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: p0 = (-80,-50,-50), p1 = (50,-45,50) e cor amarela = (0.7,0.7,0) p0 = (-80,-50,-60), p1 = (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) MGattass Ray Tracing

31 Computação Gráfica Interativa - Gattass
O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos? 11/11/2018 MGattass Ray Tracing

32 Computação Gráfica Interativa - Gattass
Área aparente 11/11/2018 energia luminosa I (lumens) energia luminosa I (lumens) MGattass Ray Tracing

33 Modelo de reflexão de superfíces Lambertianas
Computação Gráfica Interativa - Gattass Modelo de reflexão de superfíces Lambertianas 11/11/2018 luz incidente luz incidente luz incidente Reflete igualmente em todas as direções A intensidade é proporcional ao co-seno MGattass Ray Tracing

34 Componente de reflexão difusa
Computação Gráfica Interativa - Gattass 11/11/2018 Componente de reflexão difusa - /2 /2 1 MGattass Ray Tracing

35 Outras maneiras de se escrever:
Computação Gráfica Interativa - Gattass 11/11/2018 Outras maneiras de se escrever: Eq. 1 I, l, k  [0 ,1 ] MGattass Ray Tracing

36 Luz difusa mais ambiente:
Computação Gráfica Interativa - Gattass 11/11/2018 Luz difusa mais ambiente: MGattass Ray Tracing

37 Componente de reflexão especular
Computação Gráfica Interativa - Gattass 11/11/2018 Componente de reflexão especular Brilho -1 -0,5 0,5 1 n=4 n=1 n=8 Eq.2 I, l, k  [0 ,1 ] MGattass Ray Tracing

38 Computação Gráfica Interativa - Gattass
Reflexão especular 11/11/2018 MGattass Ray Tracing

39 Computação Gráfica Interativa - Gattass
Reflexão especular 11/11/2018 luz refletida MGattass Ray Tracing

40 Cálculo da reflexão de um vetor sobre outros
Computação Gráfica Interativa - Gattass Cálculo da reflexão de um vetor sobre outros 11/11/2018 h h Ln MGattass Ray Tracing

41 Distribuição da luz direta sobre um ponto
Computação Gráfica Interativa - Gattass Distribuição da luz direta sobre um ponto 11/11/2018 Ambient Diffuse Specular MGattass Ray Tracing

42 Computação Gráfica Interativa - Gattass
Modelo de várias luzes 11/11/2018 para cada fonte de luz uma reflexão apenas MGattass Ray Tracing

43 Computação Gráfica Interativa - Gattass
11/11/2018 Sombra A luz não chega a superfíce MGattass Ray Tracing

44 Modelo de várias luzes e sombra
Computação Gráfica Interativa - Gattass Modelo de várias luzes e sombra 11/11/2018 MGattass Ray Tracing

45 Fontes de luz especiais: Onidirecional
Computação Gráfica Interativa - Gattass Fontes de luz especiais: Onidirecional 11/11/2018 MGattass Fonte: Mauricio Hofmam Ray Tracing

46 Fontes de luz especiais: Direcional
Computação Gráfica Interativa - Gattass Fontes de luz especiais: Direcional 11/11/2018 MGattass Fonte: Mauricio Hofmam Ray Tracing

47 Fontes de luz especiais: Farolete
Computação Gráfica Interativa - Gattass Fontes de luz especiais: Farolete 11/11/2018 MGattass Fonte: Mauricio Hofmam Ray Tracing

48 Computação Gráfica Interativa - Gattass
Uma revisão 11/11/2018 MGattass Ray Tracing

49 Reflexão de outros objetos
Computação Gráfica Interativa - Gattass 11/11/2018 Reflexão de outros objetos q Superfície especular MGattass Ray Tracing

50 Computação Gráfica Interativa - Gattass
11/11/2018 Transparência q1 Objeto transparente h1 h2 lei de Snell q2 MGattass Ray Tracing

51 Cálculo do Raio Refratado
Computação Gráfica Interativa - Gattass Cálculo do Raio Refratado 11/11/2018 qi qt MGattass Ray Tracing

52 Advertência: Refração não é simples!
Computação Gráfica Interativa - Gattass Advertência: Refração não é simples! 11/11/2018 MGattass Ray Tracing

53 Iluminação considerando superfícies refletoras e objetos transparentes
Computação Gráfica Interativa - Gattass Iluminação considerando superfícies refletoras e objetos transparentes 11/11/2018 redução da reflexão redução da transparência MGattass Ray Tracing

54 Natureza recursiva do algoritmo de Rastreamento de Raios
Computação Gráfica Interativa - Gattass 11/11/2018 Natureza recursiva do algoritmo de Rastreamento de Raios R2 R1 L2 T1 L1 L3 T2 R3 L1 R1 T1 L2 L3 R2 T2 R3 MGattass Ray Tracing

55 Computação Gráfica Interativa - Gattass
Resultado de curso 11/11/2018 MGattass Alunos de CGI98 Ray Tracing

56 Algoritmo de traçado de raios
Computação Gráfica Interativa - Gattass 11/11/2018 Algoritmo de traçado de raios 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); } 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; MGattass Ray Tracing

57 Computação Gráfica Interativa - Gattass
11/11/2018 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; } Ray Tracing

58 Computação Gráfica Interativa - Gattass
Texturas 11/11/2018 u v 1.0 u 1.0 v u 1.0 v Texturas 2D = Imagens onde o domínio é u, v [0,1]×[0,1]  R2 MGattass Ray Tracing

59 Sistemas de coordenada de textura na caixa
Computação Gráfica Interativa - Gattass Sistemas de coordenada de textura na caixa 11/11/2018 face x=xmax (0,0) v u u (1,1) (0,0) v v (0,0) u y x z MGattass Ray Tracing

60 Sistema de coordenada de textura na esfera
Computação Gráfica Interativa - Gattass Sistema de coordenada de textura na esfera 11/11/2018 z y i x x j MGattass Ray Tracing

61 Sistema de coordenada de textura no triângulo
Computação Gráfica Interativa - Gattass Sistema de coordenada de textura no triângulo 11/11/2018 u v (u1,v1) (u2,v2) (u3,v3) 3 u1= u3 u2 v1= v2 v3 2 1 MGattass Ray Tracing

62 Textura no triângulo e coordenadas baricêntricas
Computação Gráfica Interativa - Gattass Textura no triângulo e coordenadas baricêntricas 11/11/2018 p3 v23 v31 A1 A2 A3 p1 v12 p2 MGattass Ray Tracing

63 Computação Gráfica Interativa - Gattass
Textura 11/11/2018 MGattass Ray Tracing

64 Computação Gráfica Interativa - Gattass
11/11/2018 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 MGattass Ray Tracing

65 Textura ambiente (environment maps)
Computação Gráfica Interativa - Gattass Textura ambiente (environment maps) 11/11/2018 face dos raios x>y e x>z z=x (1,1) z y=-x y y=x x v (0,0) u z=-x MGattass Ray Tracing

66 Tratamento anti-alias
Computação Gráfica Interativa - Gattass 11/11/2018 Tratamento anti-alias dx dy a sub-pixels pixel dx, dy = variáveis randômicas Lance um raio para cada sub-pixel Faça uma média dos valores obtidos MGattass Ray Tracing

67 Computação Gráfica Interativa - Gattass
Anti-alias 11/11/2018 pixel pixel pixel (a) original (b) uniforme (c) “jittered” MGattass Ray Tracing

68 Refinamento Progresivo
Computação Gráfica Interativa - Gattass 11/11/2018 Refinamento Progresivo amostragem inicial primeira subdivisão subdivisão final segunda subdivisão pixels sendo visitados pixels já visitados MGattass Ray Tracing

69 Computação Gráfica Interativa - Gattass
11/11/2018 Ray Tracing

70 Computação Gráfica Interativa - Gattass
11/11/2018 Ray Tracing

71 Computação Gráfica Interativa - Gattass
11/11/2018 Ray Tracing

72 Radiosidade e Ray Tracing
Computação Gráfica Interativa - Gattass Radiosidade e Ray Tracing 11/11/2018 standard raytracing global illumination MGattass Klaus Mueller, Stony Brook University, Computer Science (CSE 564) Ray Tracing


Carregar ppt "Algoritmo de Rastreamento de Raios"

Apresentações semelhantes


Anúncios Google