Ambient Occlusion Disciplina: Fundamentos de Computação Gráfica Professor : Marcelo Gattass Allan Carlos Avelino Rocha Departamento de Informática
Introdução Iluminação Global Tradicional Não provoca adequado efeito Realístico Motivação: Irradiação constante e adirecional
Departamento de Informática Introdução Ambient Environment Motivação: Ambient Occlusion Efeito mais realístico Método de shading usado para ajudar a adicionar realismo a modelos de reflexão local, tendo em conta a atenuação da luz devido a oclusão.
Departamento de Informática Introdução Ambient Occlusion Primeiro apresentado por Zhukov, Iones e Kronin em “An ambient light illumination model”, em Landis and Christensen, em “RenderMan in Production”, em 2002.
Departamento de Informática Introdução Cinema:
Departamento de Informática Introdução
Departamento de Informática Introdução Visualização Científica
Departamento de Informática Ambient Occlusion Definição: Ambient occlusion refere-se a atenuação da luz ambiente devido a oclusão de uma geometria próxima: onde, Visibilidade de um ponto p ao longo do hemisfério.
Departamento de Informática Ambient Occlusion Gems 1 – “Ambient Occlusion” desenvolvido por Matt Pharr e Simon Green, 2004., Informação necessária Acessibilidade do ponto Média da direção unoccluded (bent normal)
Departamento de Informática Ambient Occlusion Abordagem inside-out X outside-in Inside-out
Departamento de Informática Ambient Occlusion, Outside-in Menor custo computacional Obtém bons resultados quando comparado ao ray tracing Pode ser mapeada para implementação em Gpu
Departamento de Informática Ambient Occlusion Shadow Mapping glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); gluLookAt(eyex,eyey,eyez, atx,aty,atz, upx,upy,upz); bunny->Draw(); glReadPixels(0,0,width,height,GL_DEPTH_COMPONENT,GL_FLOAT,shadowMap);
Departamento de Informática Ambient Occlusion, Shadow Map - bunny
Departamento de Informática Ambient Occlusion Algoritmo
Departamento de Informática Ambient Occlusion Textura Projetiva Projeção de imagens sobre superfícies Exemplo: projetor de slides
Departamento de Informática Ambient Occlusion Projeção de um ponto Montando a matriz de projeção glGetFloatv(GL_MODELVIEW_MATRIX, lightViewMatrix); glGetFloatv(GL_PROJECTION_MATRIX, lightProjectionMatrix); Recuperar as matrizes ModelView e Projection Alinhamento do plano de projeção do espaço de Clipping para o espaço de Textura Espaco de clipping varia de [-1,1] Espaco de textura varia de [0, 1]
Departamento de Informática Ambient Occlusion Projeção de um ponto Montando a matriz de projeção Correção Então tem-se que a matriz de projeção é dada por
Departamento de Informática Ambient Occlusion Projeção de um ponto Aplicando a matriz a um ponto temos: onde é ponto projetado no espaço de textura. Feito isso para obter o ponto em coordenadas cartesianas basta fazer: P(s/q,t/q,r/q,1). s/q e t/q posição x,y de um texel r/q distância do ponto ao plano de projeção
Departamento de Informática Ambient Occlusion Implementação VECTOR4D point(x,y,z,w); VECTOR4D result = textureMatrix*point; double s = result.GetX()/result.GetW(); double t = result.GetY()/result.GetW(); double p = result.GetZ()/result.GetW(); int newx = width*s; int newy = height*t; float depth = bunny->shadowMap[index(newx,newy,width)]; if ( p <= depth+1e-3){...
Departamento de Informática Ambient Occlusion Resultados na implementação
Departamento de Informática Ambient Occlusion Outros resultados
Departamento de Informática Ambient Occlusion Simples difuse shading model Ambient occlusion Simples difuse shading model Matt Phar
Departamento de Informática Ambient Occlusion
Departamento de Informática Ambient Occlusion
Departamento de Informática Ambient Occlusion