1.11k likes | 1.21k Views
Algoritmo de Rastreamento de Raios. Perspectiva e tamanhos relativos. Perspectiva e tamanhos relativos. Iluminação e posição. O que está na frente? A que distância do apoio?. Sombra. Oclusão. Proposto no século XX!. Gradiente de textura. Efeitos Passivos.
E N D
Iluminação e posição O que está na frente? A que distância do apoio?
Proposto no século XX! Gradiente de textura
Efeitos Passivos • Inerentes a aparência do mundo externo • Independem dos nossos olhos • Fotografias parecem 3D
Camera obscura Plymouth, UK Camera Obscura - San Francisco The Camera Obscura at the Cliff House is one of several remaining camera obscuras in the world. The device is an ancient precursor to modern photography, and well worth a visit, especially if you haven't previously visited a camera obscura.
Pintores Ponto de fuga Canaletto (Giovanni Antonio Canal) (1697-1768).
ye ze xe zo yo xo Dois enfoques: Raios Traçado de Raios Para cada pixel da tela Defina um raio Para cadaobjeto da cena Calcule o objetovisível Para cadaluz da cena Lance um raio Para cadaobjeto da cena Teste se o objetofazsombra Calculesuailuminação Complexidade maior que O(num. depixels num. de objetos2)
Doisenfoques: ZBuffer ye ze xe Calcule a cor de cadavertice Projetecadatriângulo Projeteosvértices no plano de projeção Rasterize o triângulogerandooosfragmentosquevão para cada pixel Aquelesfragmentosqueestiverem a frente dos framentosjádepositadosrecebem nova cor e a profundidade do pixel é atualizada.
A Câmara “Pinhole” e seu modelo centro de projeção plano de projeção plano de projeção eixo óptico raios eixos do plano de projeção
Traçado de Raios Luz Pixel (RGB) Câmara ye Iluminação ze eye xe Objetos yo xo zo
Algoritmo básico ye Câmara Luz ze xe Iluminação Objetos 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;
Definição de uma câmera janela hp (pixels) h (metros) o centro óptico eye eixo óptico o Projeção cônica centro de projeção wp (pixels) w (metros* ) plano de projeção janela centro de projeção (*) metros ou outra unidade de comprimento
Abertura de uma câmera fovy1 fovy2 h df1 df2
Eixos de uma câmera eixo vertical v ye eixo óptico ze eye xe u eixo horizontal janela ye t (top) r (right) l (left) hp (pixels) h xe o b (bottom) wp (pixels) w
Parâmetros de funções do OpenGL ye w ye aspect = w/h fovy v ze ze h xe height n(near) y0 width f (far) o1 u x0 void glPerspective(GLdouble fovy,GLdouble aspect,GLdouble near_,GLdouble far_); void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height );
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_ ); ye v ze xe far u near near xe left right ze
Parâmetros internos ou intrínsecos Primários: Derivados: n=plano próximo f = plano distante wp hp pixels fovy= campo de visão
Posicionamento da câmera(parâmetros externos ou extrínsecos) up y0 eye center x0 z0 eye = centro óptico center = ponto de visada, up = direção para cima vista lateral up fovy eye center Coordenadas dos Objetos near far
Calculo do sistema do olho - xe ye ze view = center - eye y0 up ze x0 eye z0 view y0 center x0 z0 up dados: eye, center, up eye center
Calculo do sistema do olho - xe ye ze ye xe ze up eye y0 center ye up ze x0 xe eye z0 view y0 center x0 z0 vup ze xe eye view center
Um modelo de câmera v ye pxy ze eye o1 xe u d yo xo zo
Lançamento de Raios v h-1 h pixels na altura pxy y 2 1 o1 x u w-1 3 0 1 2 w pixels na base
Canto inferior esquerdo da janela no plano near (ou far) ye ze xe eye plano near y0 canto inferior esquerdo x0 z0
Resultando v ye pxy ze eye o1 xe u d yo xo zo
Tipo Abstrato de Dados: Camera em C struct _Camera { /* Definição da câmera */ Vector eye, center, up; float fovy; float n,f; int wp,hp; /* Parametros derivados */ float df; float w,h; Vector xe,ye,ze; }; typedef struct _Camera Camera; Camera* camCreate( Vector eye, Vector at, Vector up, double fovy, double _near, double _far, int wp, int hp ); Ray camGetRay( Camera camera, double x, double y );
Objeto câmera Inicialização (pré-processamento): Dados: fovy, wp, hp, n, f, eye, center,up Lançamento de raios: o + td Dados: x, y
Modelagem dos Objetos Por fronteira: Implícita: p p3 p2 dados: centroc raio r p1
Superfíciesimplícitasem grades Cartesianas y f(x,y,z) R a x z • Seja f(x,y,z), umafunçãoamostradaem R3 Objetivo: • Visualizarumaisosuperfície S definidapor f(x,y,z) = a.
Classificação do Voxel 1.0 Osso Branco (1,1,1) Músculo Vermelho (1,0,0) Gordura Amarelo (1,1,0) ar 1.0 0 Voxel opacidade valor cor
Objeto esfera: métodos (dados o, d, c,r ) pi c Interseção: se ti > 0 : Normal:
Interseção com o plano do triângulo o p3 d n p1 p2
Ponto interno a triângulo v23 v31 v12 p3 p2 p1
Coordenadas baricêntricas A1 v23 A2 A3 v12 p3 v31 p1 p2 pié interior seL1, L2 e L3 [0..1]
Coordenadas baricêntricas como funções interpolantes p3 A1 A2 pi L1 A3 p1 1 p2 L2 1 L3 1
Interpolação de cor e coordenada de textura através das coordenadas baricêntricas c3 u3 p3 A1 A2 ou: pi A3 p1 p2 c1 u1 c2 u2
Forma otimizada de calculo o d p3 n p1 p2 Tomas Möller, Ben TrumboreFast, Minimum Storage Ray/Triangle Intersection
Forma otimizada de cálculo o d p3 n p1 p2
Caixa alinhada com os eixos d=(dx, dy, dz) o ti (xmax, ymax, zmax) (xmin, ymin, zmin) y x z
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: 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)
O que conseguiriamos se simplesmente atribuissemos aos pixels a cor dos objetos?
Área aparente energia luminosa I (lumens) energia luminosa I (lumens)
Modelo de reflexão de superfíces Lambertianas luz incidente luz incidente luz incidente • Reflete igualmente em todas as direções • A intensidade é proporcional ao co-seno
Componente de reflexão difusa 1 - /2 0 /2
Outras maneiras de se escrever: Eq. 1 I, l, k [0 ,1 ]