Departamento de Informática Ambient Occlusion Allan Carlos Avelino Rocha Disciplina: Fundamentos de Computação Gráfica Professor : Marcelo Gattass Introdução Departamento de Informática Motivação: Iluminação Global Tradicional • Não provoca adequado efeito Realístico • Irradiação constante e adirecional Introdução Departamento de Informática Motivação: Ambient Environment • Efeito mais realístico •Ambient Occlusion 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. Introdução Departamento de Informática Ambient Occlusion Primeiro apresentado por Zhukov, Iones e Kronin em “An ambient light illumination model” , em 1998. Landis and Christensen, em “RenderMan in Production”, em 2002. 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 Departamento de Informática 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 . Ambient Occlusion Departamento de Informática 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) , Ambient Occlusion Abordagem inside-out X outside-in Inside-out Departamento de Informática Ambient Occlusion Departamento de Informática Outside-in Menor custo computacional Obtém bons resultados quando comparado ao ray tracing Pode ser mapeada para implementação em Gpu , Ambient Occlusion Departamento de Informática 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); Ambient Occlusion Departamento de Informática Shadow Map - bunny , Ambient Occlusion Algoritmo Departamento de Informática Ambient Occlusion Departamento de Informática Textura Projetiva Projeção de imagens sobre superfícies Exemplo: projetor de slides Ambient Occlusion Departamento de Informática Projeção de um ponto Montando a matriz de projeção Recuperar as matrizes ModelView e Projection glGetFloatv(GL_MODELVIEW_MATRIX, lightViewMatrix); glGetFloatv(GL_PROJECTION_MATRIX, lightProjectionMatrix); 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] Ambient Occlusion Departamento de Informática 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 Ambient Occlusion Departamento de Informática Projeção de um ponto Aplicando a matriz a um ponto onde temos: é 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 Ambient Occlusion Departamento de Informática 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){ . . . Ambient Occlusion Resultados na implementação Departamento de Informática Ambient Occlusion Outros resultados Departamento de Informática Ambient Occlusion Departamento de Informática Matt Phar Ambient occlusion Simples difuse shading model Ambient Occlusion Departamento de Informática Ambient Occlusion Departamento de Informática Ambient Occlusion Departamento de Informática