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