Buscar

Pipeline Visualização 3D

Prévia do material em texto

Pipeline Visualização 
Tridimensional
Computação Gráfica
Adailton José Alves da Cruz 
FACET/UFGD
Sistema de Referência do Universo 3D
y
xz
Três eixos ortogonais
Origem (0,0,0)
z - regra mão direita
Problema:
Como a Cena 3D será visualizada e projetada em uma imagem 2D?
Processo de vizualização
1 - Definição da cena
2 - Especificação do observador virtual
Posição e orientação
Câmera Sintética
Posição da câmera (x,y,z) do SRU
Orientação 
ponto alvo + vetor up
up
alvo
Projeção
Representações bidimensionais de objetos tridimensionais 
Camera 
x
y
z
Plano projetante
projetante
Projeção perspectiva
Centro de projeção está a uma distância finita do plano de projeção
Camera 
x
y
z
Projeção paralela
Centro de projeção está no infinito
Camera 
x
y
z
Funções OpenGL
 obs = posição da câmera
 alv = ponto que define a 
direção de visão
 up = direção “vertical” da 
câmera
Câmera Sintética
gluLookAt(obsx, obsy, obsz,
alvx, alvy, alvz,
upx, upy, upz);
up
alvo
 obs = posição da câmera
 alv = ponto que define a 
direção de visão
 up = vetor da câmera
Projeção Paralela
Projeção Perspectiva
Projeção em Perspectiva
 Volume de visão especificado com
glFrustum(left,right,bottom,top,near,far);
 Não necessariamente gera um v.v. simétrico.
Projeção Perspectiva
 Alternativamente, pode-se usar a rotina
gluPerspective (fovy, aspect, near, far);
 Gera um volume de visão simétrico (direção 
de visão perpendicular ao plano de 
projeção).
Exemplo
void resize( int w, int h ) 
{
glViewport( 0, 0, (GLsizei) w, (GLsizei) h );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 65.0, (GLdouble) w / h,
1.0, 100.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( 0.0, 0.0, 5.0, 
0.0, 0.0, 0.0, 
0.0, 1.0, 0.0 );
}

Outros materiais