Ambient Occlusion

25
Ambient Occlusion Disciplina: Fundamentos de Computação Gráfica Professor : Marcelo Gattass Allan Carlos Avelino Rocha Departamento de Informática

description

Departamento de Informática. Ambient Occlusion. Disciplina: Fundamentos de Computação Gráfica Professor : Marcelo Gattass. Allan Carlos Avelino Rocha. Departamento de Informática. Introdução. Motivação:. Iluminação Global Tradicional. Não provoca adequado efeito Realístico. - PowerPoint PPT Presentation

Transcript of Ambient Occlusion

Page 1: Ambient Occlusion

Ambient Occlusion

Disciplina: Fundamentos de Computação Gráfica

Professor : Marcelo Gattass

Allan Carlos Avelino Rocha

Departamento de Informática

Page 2: Ambient Occlusion

Departamento de Informática

Introdução

Iluminação Global Tradicional

• Não provoca adequado efeito Realístico

Motivação:

• Irradiação constante e adirecional

Page 3: Ambient Occlusion

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.

Page 4: Ambient Occlusion

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.

Page 5: Ambient Occlusion

Departamento de Informática

Introdução

Cinema:

Page 6: Ambient Occlusion

Departamento de Informática

Introdução

Page 7: Ambient Occlusion

Departamento de Informática

IntroduçãoVisualização Científica

Page 8: Ambient Occlusion

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 .

Page 9: Ambient Occlusion

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)

Page 10: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Abordagem inside-out X outside-in

Inside-out

Page 11: Ambient Occlusion

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

Page 12: Ambient Occlusion

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);

Page 13: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

,

Shadow Map - bunny

Page 14: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Algoritmo

Page 15: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Textura Projetiva

Projeção de imagens sobre superfícies

Exemplo: projetor de slides

Page 16: Ambient Occlusion

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]

Page 17: Ambient Occlusion

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

Page 18: Ambient Occlusion

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

Page 19: Ambient Occlusion

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){ . . .

Page 20: Ambient Occlusion

Departamento de Informática

Ambient OcclusionResultados na implementação

Page 21: Ambient Occlusion

Departamento de Informática

Ambient OcclusionOutros resultados

Page 22: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Simples difuse shading model

Ambient occlusion

Simples difuse shading model

Matt Phar

Page 23: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Page 24: Ambient Occlusion

Departamento de Informática

Ambient Occlusion

Page 25: Ambient Occlusion

Departamento de Informática

Ambient Occlusion