Visibilidade em Computação
Gráfica
Natasha Sayuri
José Yauri
Conteúdo:





Motivação
Objetivos
Introdução
Problemas de visibilidade
Algoritmos:
◦ Em relação ao observador:
 Linhas ocultas
 Superfícies ocultas
◦ Em relação à fonte de luz

Conclusões
Motivação

Determinar a visibilidade de linhas e superfícies foi uns dos
principais problemas a resolver pela nascente computação gráfica,
dos anos 70; atualmente, com o incremento da complexidade da
cena (centos, mil e milhões de segmentos e polígonos), a
visibilidade ainda continua sendo crucial na síntese de imagens de
uma cena 3D.
Objetivos

Objetivo geral
◦ Fazer um estudo e classificação dos algoritmos de visibilidade em computação
gráfica.

Objetivos específicos
◦ Elaborar um estudo dos algoritmos de visibilidade em relação ao observador e
em relação às fontes de luz.
◦ Apresentar as técnicas de programação utilizadas em OpenGL para determinar
a visibilidade de uma cena (Z-Buffer e Back-Culling).
◦ Apresentar o traçado de raio (Raytracing) de PovRay na determinação de
visibilidade.
Visibilidade em OpenGL

OpenGL suporta diretamente o Z-Buffer (ou teste de profundidade) e eliminação
de superfícies ocultas (back-face culling).

Teste de Profundidade: em OpenGL e GLUT:
◦ Inicializar o contexto de OpenGL e alocar um espaço e memória para o buffer
de profundidade.
glutInitDisplayMode(GLUT_RGB A| GLUT_DOUBLE | GLUT_DEPTH);
◦ Logo, habilitar o teste de profundidade:
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
◦ Durante a renderizacao de um novo quadro, o buffer de profundidade deve ser
limpado:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Teste de profundidade em OpenGl

Projeção em perspectiva, sem ativar gl_depth_test
Teste de profundidade em OpenGl

Projeção em perspectiva, sem ativar gl_depth_test
Teste de profundidade em OpenGl

Projeção em perspectiva, com GL_DEPTH_TEST
Teste de profundidade em OpenGl

Projeção em perspectiva, com GL_DEPTH_TEST
Back Face Culling em OpenGL

Projeção em perspectiva, rasterização de polígonos com linhas.
Back Face Culling em OpenGL

Projeção em perspectiva, rasterização de polígonos com linhas e eliminação de
linhas escondidas ativado..
glEnable(GL_CULL_FACE); // Não pintar as faces escondidas
Back Face Culling em OpenGL

Projeção em perspectiva, rasterização de polígonos com linhas e eliminação de
linhas escondidas ativado..
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);
//Não pintar as faces frontais
Download

Visibilidade em Computação Gráfica