INF 1366 – Computação Gráfica Interativa
Câmeras e Transformações Projetivas
Alberto B. Raposo e Marcelo Gattass
[email protected]
http://www.tecgraf.puc-rio.br/~abraposo/INF1366
Alberto Raposo – PUC-Rio
Cena em Computação Gráfica
• 3 etapas
– Especificação:
• Modelagem geométrica, transformações básicas
(rotação, translação, escalamento), etc.
– Visualização
• Qual porção da cena é vista
– Renderização
• Como visualizar
Alberto Raposo – PUC-Rio
Transformações
Projetivas
Projetivas
Afins
Similaridades
Linear
Euclidianas
Escalamento
Identidade
Translação
Rotação
Alberto Raposo – PUC-Rio
Escalaento
Isotrópico
Perspectiva
Reflexão
Shear
Visualização e Projeção
Modelos 3D
camera setup
viewport
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Projeção
Representação de 3 dimensões
em meios 2D
John Dingliana, 2004
Alberto Raposo – PUC-Rio
No início
Alberto Raposo – PUC-Rio
Aprimoramentos...
http://www.stedwards.edu/hum/randle
/s32/SSgotpint/FrameSet.htm
http://www.personal.us.es/jcordero/DISTANCIA/cap_09.htm
Alberto Raposo – PUC-Rio
Câmera escura
Alberto Raposo – PUC-Rio
Câmeras fotográficas
Câmara escura - Leonardo da Vinci -1545
Alberto Raposo – PUC-Rio
Luis-Jacques-Mandé Daguerre (1839)
Câmeras atuais
Alberto Raposo – PUC-Rio
Pinhole
Alberto Raposo – PUC-Rio
Geometria da projeção cônica
Câmera
imagem
objeto
caixa
pinhole
filme
raios de luz
Projeção cônica
plano de projeção
Alberto Raposo – PUC-Rio
centro de projeção
Plano e Janela de Projeção
• Plano de projeção:
– Plano onde é projetada a
imagem
– Infinito
Projeção cônica
plano de projeção
• Janela de projeção:
– Porção retangular do
plano de projeção onde é
vista a imagem (é a
“janela” por onde se vê o
mundo, ou a “tela” do
quadro, por exemplo)
Alberto Raposo – PUC-Rio
centro de projeção
Projeção cônica
f
X
Y
x f , y f
Z
Z
p  [ x, y ]T  p  [ x, y, f ]T
Alberto Raposo – PUC-Rio
Taxonomia de Projeções
Alberto Raposo – PUC-Rio
Projeções Planas Cônicas
A
Ap
B
Bp
 realista
 não preserva escala
 não preserva ângulos
Projeções Planas Paralelas
N
A
Ap
B
Bp
 pouco realista
 preserva paralelismo
 possui escala conhecida
Perspectiva vs. Paralela
• Perspectiva
+ Tamanho varia inversamente à distância: realista
– Distância e ângulos (em geral) não preservados
– Linhas paralelas (em geral) não permanecem
paralelas
• Paralela
+
+
–
–
Boa para medições precisas
Linhas paralelas permanecem paralelas
Ângulos (em geral) não são preservados
Aparência menos realista
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Taxonomia de Projeções
Alberto Raposo – PUC-Rio
Projeção Paralela
• Centro de projeção no infinito
– Direção de projeção (DOP) é a mesma para
todos os pontos
View
Plane
DOP
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Projeções Ortográficas
• DOP perpendicular ao view plane
Front
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Top
Side
Projeção Ortográfica Simples
• Projeta todos os pontos ao longo do eixo z
para o plano z = 0
MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
x´
y´
z´
1
=
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
x
y
z
1
Projeções Oblíquas
• DOP não é perpendicular ao view plane
  45
Cavalier
o
(DOP  = 45 )
tan() = 1
Alberto Raposo – PUC-Rio
  63 .4
Cabinet
o
(DOP  = 63.4 )
tan() = 2
D. Brogan, Univ. of Virginia
Projeções Cavaleiras (Cavalier) e
Cabinetes (Cabinet)
y
y
M
1
(1,1,1)

k
1
x
z
3
T(1,0,0) = (1,0,0)
T(0,1,0) = (0,1,0)
T(0,0,1) = ( -k cos , -k sin  , 0)
x
2
1
M
0

0
0
1
0
 k cos 
 k sin  


0

Taxonomia de Projeções
Alberto Raposo – PUC-Rio
Transformação Perspectiva
MIT EECS 6.837,
Durand and Cutler
• Descoberta por Donatello, Brunelleschi, e DaVinci
durante o Renascentismo
• Objetos mais próximos parecem maiores
• Linhas paralelas convergem em um único ponto
(ponto de fuga)
Alberto Raposo – PUC-Rio
Projeções de um cubo
• Paralelas
1
1
1
1/2
1
1


planta ou
elevação
iso-métrica
Cabinete
(=45 ou 30)
• Cônicas
1 pto de fuga
2 ptos de fuga
Cavaleira
(=45 ou 60)
Projeções Clássicas
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Projeção Perspectiva
• Quantos pontos de fuga?
3-Point
Perspective
2-Point
Perspective
1-Point
Perspective
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Perspectiva na pintura
Filippo Lippi, La Anunciación (1442)
(sem perspectiva)
Alberto Raposo – PUC-Rio
(com perspectiva)
Projeções Cônicas e Ponto de Fuga
Vermeer, “La lección de música”
Alberto Raposo – PUC-Rio
Projeção cônica
f
X
Y
x f , y f
Z
Z
p  [ x, y ]T  p  [ x, y, f ]T
Alberto Raposo – PUC-Rio
Projeção Perspectiva
View
plane
X
P (x, y, z)
x’ = ?
(0,0,0)
Z
n
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Projeção cônica simples
y
P
Pp
z
x
zp = -n
 xp 
 
Pp   y p 
z 
 p
Alberto Raposo – PUC-Rio
 x
n  

 y
z  
z
 nz x 
 n 
  z y 
 n 


 x
 
P   y
z
 
Projeção cônica simples
xp
yp
n

xe
 ze
n

ye
 ze
ye
P
Pp
ze
xe
z p  n
x h  n xe
y h  n ye
z h  n ze
w   ze
Alberto Raposo – PUC-Rio
 xh   n
 y  0
 h  
 z h  0
  
 w  0
0
n
0
0
0
0
n
1
0  xe 
y 
0
 e 
0  z e 
 
0  1 
Outra representação para matriz de
transformção perspectiva
1
Mperspective  0
0
0
0
0
1
0
0
1
0 1 n
0
0
0
0
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Matriz de Projeção Perspectiva
• Exemplo:
 x  1
 y  0
 z   0
 z n 0
• Ou:
Alberto Raposo – PUC-Rio
x

,
z n
0
0
1
0
0
1
0 1 n
0  x 
0  y 
0  z 
0  1 

y
,  n 
zn

D. Brogan, Univ. of Virginia
No limite, n → ∞
A matriz de projeção
perspectiva...
1
0
0
0
0
1
0
0
0
0
0
1/n
...é a de projeção
ortográfica
0
0
0
1
→
MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
-n
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
Câmera Virtual – Computação Gráfica
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Modelos de Câmeras Virtuais
• Pinhole é a mais comum
– Todos os raios de luz
capturados chegam por retas
até o ponto focal, sem
distorção de lentes
– Resposta do sensor
proporcional à radiância
Alberto Raposo – PUC-Rio
View plane
Posição dos olhos
(ponto focal)
D. Brogan, Univ. of Virginia
Parâmetros de Câmera
• O que é necessário saber para modelar uma
câmera virtual?
Alberto Raposo – PUC-Rio
Sistemas de Coordenadas
• Do mundo (world coordinates): ponto
arbitrário no espaço, a partir do qual o
mundo é modelado
• De câmera (eye coordinates): centrado na
posição do observador, com o eixo “-z” na
direção para onde se olha e o eixo “y”
naquilo que se define como “para cima”
Alberto Raposo – PUC-Rio
Parâmetros de Câmera
• Posição dos olhos (px, py, pz)
• Orientação
– View direction (dx, dy, dz)
– Up direction (ux, uy, uz)
• Abertura
– Field of view (xfov, yfov) back
(ou janela de visualização)
• Plano do filme
– “Look at” point
right
– View plane normal
Alberto Raposo – PUC-Rio
Up direction
View
Plane
“Look at”
Point
Eye
Position
D. Brogan, Univ. of Virginia
Movimentando a câmera
Up
Back
Towards
Right
Alberto Raposo – PUC-Rio
View Frustum (cone de visão)
Câmera
Alberto Raposo – PUC-Rio
Projeção Cônica (Perspectiva)
void glPerspective( GLdouble fovy, GLdouble aspect,
GLdouble near_, GLdouble far_ );
w
ye
ze
(OpenGL)
aspect = w/h
h
xe
near
far
fovy
Alberto Raposo – PUC-Rio
ze
xe
Projeção Cônica (Frustum)
void glFrustum( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble near_, GLdouble far_ );
(OpenGL)
ye
Obs.: near e far são
distâncias( > 0)
ze
xe
far
view frustum
near
ye
ze l
r
Alberto Raposo – PUC-Rio
xe
t
b
ze
near
far
Glu Look At
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz);
Dados:
eye, center, up (definem o sistema de coordenadas do olho)
Determine a matriz que leva do sistema de Coordenadas dos Objetos
para o sistema de Coordenadas do Olho
up
eye
center
Coordenadas dos
Objetos
Alberto Raposo – PUC-Rio
Coordenadas do
Olho
(OpenGL)
Projeção Paralela (Ortho)
near
top
ye
far
B  right
top
 far
bottom
ze
xe
A
left
right
A  left
bottom  near
void glOrtho( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble near_, GLdouble far_ );
void gluOrtho2D( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top );
Alberto Raposo – PUC-Rio
(OpenGL)
Câmera VRML: Viewpoint
Alberto Raposo – PUC-Rio
Exemplo VRML
Alberto Raposo – PUC-Rio
Exemplo VRML
The Annotated
VRML Reference
Alberto Raposo – PUC-Rio
Exemplo VRML
The Annotated
VRML Reference
Alberto Raposo – PUC-Rio
Exemplo VRML
The Annotated
VRML Reference
Alberto Raposo – PUC-Rio
Exemplo VRML
The Annotated
VRML Reference
Alberto Raposo – PUC-Rio
Exemplo X3D
Alberto Raposo – PUC-Rio
Transformações de Visualização
• Cria-se uma visualização centrada na câmera
• Câmera está na origem
• Câmera olha para o eixo z no sentido negativo
• O ‘up’ é alinhado com o eixo y
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
2 Passos básicos
• Alinha-se os sistemas de coordenadas (de
câmera e do mundo) por rotação
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
2 Passos básicos
• Translação para alinhar as origens
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Espaço de coordenadas da câmera
• Especifica-se ponto onde a câmera está
localizada (origem do espaço) eye point
• Especifica-se ponto onde será o centro da
visualizaçãolookat point
• Especifica-se o
vetor “up” up vector
• Movimentos intuitivos
da câmera
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Transformação de visualização
D. Brogan, Univ. of Virginia
• Vetor da origem até o centro de visualização
(look at point)
• Normalização do vetor
• Rotação para alinhar esse vetor com [0, 0, -1]T
Alberto Raposo – PUC-Rio
(câmera apontando para –z)
Transformação de visualização
• Se lookat-vector deve se alinhar com –z e o
vup-vector se alinha com y:
• Esse vetor, normalizado, deve alinhar-se
com [1, 0, 0]T
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Transformação de visualização
• Mais um vetor…
• Esse vetor, normalizado, se alinha com [0, 1, 0]T
• Juntando os resultados…
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Compondo vetores para formar a
matriz V
• Conhecemos os eixos de coordenadas do mundo (x,
y, z)
• E também os eixos da câmera (r, u, l)
• A transfomação de visualização, V, deve converter o
sistema do mundo para o sistema da câmera
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Compondo vetores para formar a
matriz V
• Cada eixo da câmera é de módulo unitário
• Cada eixo é perpendicular aos demais
• A matriz de câmera é ortogonal e normalizada
– Ortonormal
• Matriz ortonormal: M-1 = MT
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Compondo vetores para formar a
matriz V
• Logo, a componente de rotação da matriz de
transformação de visualização …
... é simplesmente a transposta
Alberto Raposo – PUC-Rio
D. Brogan, Univ. of Virginia
Compondo vetores para formar a
matriz V
• Componente de translação
D. Brogan,
Univ. of Virginia
Alberto Raposo – PUC-Rio
Matriz de Transformação de
Visualização
Para transformar vértices:
Alberto Raposo – PUC-Rio
Informações Adicionais
–
–
–
Peter Shirley. Fundamentals of Computer
Graphics, A K Peters, Ltd., Natick, MA, USA,
2002.
Foley, J. D., Van Dam, A., Feiner, S. K., e
Huhes, J. F., Phlips, L. R., Introduction to
Computer Graphics, Addison-Wesley, 1995.
D. F. Rogers, J. A. Adams. “Mathematical
Elements for Computer Graphics”. 2nd Ed.,
McGraw-Hill, 1990.
Alberto Raposo – PUC-Rio
Download

06_cameras - PUC-Rio