Post on 21-Apr-2015
Ambient Occlusion
Disciplina: Fundamentos de Computação Gráfica
Professor : Marcelo Gattass
Allan Carlos Avelino Rocha
Departamento de Informática
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 modelosde 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 1998.
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çãoVisualizaçã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 longodo hemisfério .
Departamento de Informática
Ambient Occlusion
Gems 1 – “Ambient Occlusion” desenvolvido por Matt Pharr eSimon 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 OcclusionProjeçã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 OcclusionResultados na implementação
Departamento de Informática
Ambient OcclusionOutros 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