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
Download

Ambient Occlusion - PUC-Rio