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.

Slides:



Advertisements
Apresentações semelhantes
Daniel de Vasconcelos Campos
Advertisements

Traçado de raios em tempo real Paulo Ivson
II Projeto de PG Thiago Augusto Souza do Nascimento.
Planos.
Real Time Rendering.
Modelos de ILuminação Alex F. V. Machado.
Claudio Esperança Paulo Roma Cavalcanti
O que é Iluminação? Fenômeno físico resultante da interação de fótons com uma superfícieFenômeno físico resultante da interação de fótons com uma superfície.
Parte 1 – Conceitos de Real Time Rendering. a. Pipeline Gráfico.
Iluminação e Sombreamento
24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227
Navegador de cenas com openGL e rastreamento de raios
INF Computação Gráfica
Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Ismael Andrade Pimentel
Algoritmo de Rastreamento de Raios
Computação Gráfica Interativa - Gattass
Parâmetros Geométricos de Câmeras
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.
04/07/07 RTDistribuído César Palomo 1 Fundamentos de CG Prof Marcelo Gattass 2007-s01 Trabalho 3 – Ray Tracing Distribuído César Palomo.
Linha de produção de imagens com o OpenGL™ (OpenGL Rendering Pipeline)
Alberto B. Raposo e Marcelo Gattass
A terceira dimensão.
Computação Gráfica: Aula8: Iluminação
Computação Gráfica: Rendering e Rasterização
Computação Gráfica: Aula6: Iluminação
Ray Tracing.
PSI-2652: Processamento, Síntese e Análise de Imagens II Rodrigo Debczynski Fernandes – n°USP Prof. Marcio Lobo.
Visão Computacional Imagem: Reflexão
Iluminação e FotoRealismo: Ray Tracing Distribuído Luís Paulo Peixoto dos Santos
An Improved Illumination Model for Shaded Display
Iluminação e FotoRealismo: Ray Tracing Distribuído Luís Paulo Peixoto dos Santos
Computação Gráfica: Aula6: Iluminação
Leis da Reflexão.
Introdução à Computação Gráfica Projeções
Transformações Geométricas
Ray Tracing Patrícia Cordeiro Pereira Pampanelli
Carlos Oliveira Modelos de Reflexão.
FUNDAMENTOS DE COMPUTACION GRAFICA Jessica Palomares
Ray Tracing Felipe Baldino Moreira Fundamentos de Computação Gráfica
Estimação da direção de múltiplas fontes de luz Baseado no artigo Estimation of Illuminant Direction and Intensity of Multiple Light Sources, de W. Zhou.
Visão Computacional Formação da Imagem
ÓPTICA GEOMÉTRICA PREGOLINI.
Stochastic Supersampling e Distributed Ray Tracing
Iluminação e Sombreamento
Traçado de Raios e Modelos de Iluminação por Marcelo Gattass Departamento de Informática PUC-Rio.
Ray Tracing Anderson Tavares Bacharelado em Ciência da Computação
Computação Gráfica – Visibilidade
por Rodrigo Botelho da Silva
1 Iluminação Global Rodrigo de Toledo UFRJ, CG1,
Computação Gráfica – Transformações Projetivas
Ray Tracing Estocástico e Distribuido Aruquia Barbosa.
Visualização Tridimensional
Algoritmo de Rastreamento de Raios
Prof. Marcelo Gattass Gustavo Lopes Mourad.
Visualização Tridimensional. Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais.
Visão Computacional Formação da Imagem Radiometria
Modelo e Câmera e Projeção no OpenGL
Apresentação 2 Aumento do realismo : texturas e sombras, evolução dos modelos de reflexões locais.
Ray Tracing Autor: Osvaldo Ramos Tsan Hu Orientador: Prof. Marcio Lobo.
Conceitos Básicos de Óptica Geométrica
Computação Gráfica: Aula6: Iluminação
Rendering Por Adinan Aguiar.
Introdução à Computação Gráfica Iluminação
Introdução à Computação Gráfica Ray Tracing Claudio Esperança Paulo Roma Cavalcanti.
Computação Gráfica – Transformações Projetivas
Algoritmo de Rastreamento de Raios
Algoritmo de Rastreamento de Raios
Algoritmo de Rastreamento de Raios
Transcrição da apresentação:

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 orifício 2.Aristótes ( AC) – eclipse do sol 3.Alhazen de Basra (X DC) 4.Leonardo da Vince (XVI DC)...

Canaletto (Giovanni Antonio Canal) ( ). Pintores Ponto de fuga

MGattass Evolução da Camera obscura para as Câmaras fotográficas Luis-Jacques-Mandé Daguerre (1839)Câmara escura - Leonardo da Vinci -1545

MGattass A Câmra Pinhole

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

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

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

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

MGattass Abertura de uma câmera f1f1 f2f2 fov 1 fov 2 a

MGattass Eixos de uma câmera eixo óptico v u eye xexe yeye zeze eixo horizontal eixo vertical

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

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

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:

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

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

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

MGattass Um modelo de câmera zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d

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

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

MGattass Resultando zozo xoxo yoyo xexe yeye zeze u v o1o1 eye p xy d

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

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

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

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

MGattass Objeto esfera: métodos Interseção: se t i > 0 : c pipi Normal:

MGattass Interseção com o plano do triângulo o d p1p1 n p2p2 p3p3

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

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

MGattass Coordenadas baricêntricas como funções interpolantes p1p1 pipi A3A3 A1A1 A2A L1L1 L2L2 L3L3 p3p3 p2p2

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

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

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)

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

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

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

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

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

MGattass Luz difusa mais ambiente:

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

MGattass Reflexão especular

MGattass Reflexão especular luz refletida

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

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

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

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

MGattass Modelo de várias luzes e sombra

MGattass Fontes de luz especiais: Onidirecional Fonte: Mauricio Hofmam

MGattass Fontes de luz especiais: Direcional Fonte: Mauricio Hofmam

MGattass Fontes de luz especiais: Farolete Fonte: Mauricio Hofmam

MGattass Uma revisão

MGattass Reflexão de outros objetos Superfície especular

MGattass Transparência Objeto transparente lei de Snell

MGattass Cálculo do Raio Refratado i t

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

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

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

MGattass Resultado de curso Alunos de CGI98

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

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

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

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

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

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

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

MGattass Textura

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

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

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

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

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

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

Feb 3 rd, 2003Afrigraph 2003 Todays State of the Art - Some Snapshots

MGattass Aceleracao do RT Cálculos mais eficientes Uso de uma Kd Tree

MGattass