Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
Pipeline de Visualização
Câmara Virtual
Edward Angel, Cap. 5
Apontamentos CG
LEIC CG
Questão 2, exame de 20/07/11
[3.0v] Considere os polígonos “A” e “B” e o ponto “P”
representados na figura abaixo.
a) calcule a matriz final que representa a transformação a aplicar
ao polígono “A” para que este se transforme no polígono “B”.
b) Calcule as coordenadas do ponto “Q” resultante da aplicação
LEIC CG
Questão 2, exame de 20/07/11
[2.0v] (…) calcular a matriz de transformação (…)
−
−
⋅
−
⋅
−
=
−
−
−
=
1
0
0
2
1
0
2
0
1
1
0
0
0
)
º
45
cos(
)
º
45
sin(
0
)
º
45
sin(
)
º
45
cos(
1
0
0
4
1
0
3
0
1
)
2
,
2
(
)
º
45
(
)
4
,
3
(
R
T
T
M
o
o
−
−
−
=
1
0
0
2
2
4
2
2
2
2
3
2
2
2
2
M
?
LEIC CG
Questão 2, exame de 20/07/11
[1.0v] (…) calcular as coordenadas de “Q” (…)
+
−
=
⋅
−
−
−
=
⋅
=
1
2
2
4
3
1
4
4
1
0
0
2
2
4
2
2
2
2
3
2
2
2
2
P
M
Q
?
LEIC CG
Sumário
Câmara Virtual
LEIC CG
Sistema de Visualização Geral
Utilizador define conjunto de parâmetros
Estabelecem transformação que conduz a
•
mapeamento de
pontos em WCS – World Coordinate System (3D)
em pontos sobre uma superfície de visualização (2D)
LEIC CG
Sistema de Visualização Geral
Utilizador tem de especificar
A posição da câmara (em WCS)
A posição e a orientação do Plano de Visualização
•
em WCS
Um Volume de Visualização
LEIC CG
Vista 3D Arbitrária
Construir vista 3D arbitrária passa por:
Colocar objectos num referencial VRC
•
Estabelecido de acordo com
a posição de câmara
a orientação da câmara
•
Também denominado “Referencial da Câmara”
Visualizar apenas os objectos (ou parte deles)
localizados no interior do volume de visualização
Viewing Reference
Coordinates
Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
Computação Gráfica
LEIC CG
Modelo Câmara Virtual
Paradigma de uma câmara fotográfica virtual:
Analogia com funcionamento de máquina fotográfica
Complexidade
Modelo Simples (OpenGL e Direct3D)
Modelo Completo ou PHIGS (normas GKS e PHIGS)
Objectivo:
geração de uma vista (imagem) da cena 3D
LEIC CG
LEIC CG
Modelo da Câmara Virtual Simples
Parâmetros
Posição da câmara
•
VRP (View Reference Point)
Direcção para onde aponta a câmara
•
VPN (View Plane Normal)
Define plano de visualização
Rolamento da câmara
•
VUV (View Up Vector)
Define o ângulo de rotação em torno de VPN
Distância de VRP ao plano de projecção
•
D
VPN
VUV
VRP
D
VPN
LEIC CG
Posição (eyepoint)
Define ponto de tomada de imagens
VRP (View Reference Point)
em relação à origem do WCS
coincide com o Centro de Projeccção
Três graus de liberdade
Vector [x
VRPy
VRPz
VRP] no espaço WCS
y
w
x
w
z
w
LEIC CG
Orientação do
Plano de Visualização
Definida por dois vectores
VPN (View Plane Normal)
•
Direcção de tomada de vistas
•
Qualquer vector [x
n
, y
n
, z
n
] no espaço WCS
VUV (View Up Vector)
•
Rotação da câmara em torno do VPN
•
Definido por projecção de VUV’
(Vector especificado pelo utilizador)
Sobre plano de visualização
Paralelamente a VPN
VPN
VUV
´
LEIC CG
© 2011 Corpo docente de Computação Gráfica / CG&M / DEI / IST / UTL
Viewing Reference Coordinates
Origem em VRP
Eixo u tal que
•
(u, v, n) sistema ortogonal “mão esquerda”.
vpn
v
n
u
y
w
x
w
z
w
VRP
u
v
n
n “sai” da câmara
Em OpenGL:
referencial da câmara é orientado
segundo regra da mão direita
LEIC CG
Determinar VRC
Determinar u, v, n (em WCS)
(u, v, n): base ortonormada
n: vector unitário na direcção VPN
VUV:
•
projecção de VUV´ no plano perpendicular a n
VUV’ introduzido pelo utilizador
Sequência de passos:
VUV
v
=
´)
(
´
VPN
VPN
VUV
VUV
VUV
=
−
•
v
n
u
=
×
VPN
VPN
n
=
1)
2)
3)
,
LEIC CG
Janela de Visualização
Definida sobre o Plano de Projecção,
em VRC
por indicação das suas dimensões
•
2h (altura) e 2w (largura).
•
Variante: introduzir relação de aspecto e uma dimensão
Obrigatoriamente centrada no ponto VRP
•
Centro é CW (Center of Window)
CW = (0, 0, D).
Plano de Visualização Janela de Visualizaçãou
VRP
v
VPN
h
w
LEIC CG
Modelo da Câmara Virtual Simples
Até agora introduziram-se os parâmetros:
VRP em coordenadas WCS
Vectores orientação (VPN e VUV´) em coordenadas WCS
LEIC CG
Volume de Visualização
Contém tudo o que está visível
na direcção do observador
O que “vê” a câmara?
Definição e topologia
•
dependem do tipo de projecção
Volumes cónicos
Computacionalmente pesados
Sistema de equações quadráticas
LEIC CG
Projecções Geométricas Planas
Existem dois tipos principais
Projecção Perspectiva
Projecção Ortogonal
• Determinada pelo centro de projecção (CDP)
• Distância do CDP ao plano finita
• Os raios projectores são convergentes
A
B
B
´
A
´
CDP
Raios
Projectores
Plano de
Projecção
• Determinada por direcção de projecção
• Distância do CDP ao plano infinita.
• Os raios projectores paralelos entre si
A
B
B
´
A
´
Direcção de
Projecção
Raios
Projectores
Plano de
Projecção
LEIC CG
Volume de Visualização
Projecção Perspectiva
Definido pelo tronco de pirâmide infinita
vértice no centro de projecção (VRP)
lados sobre a janela de visualização.
Recorte da cena sobre este volume antes da projecção
não ficam projectados objectos atrás do centro de projecção
vpn
v
n
u
y
w
x
w
z
w
z
vCW
LEIC CG
Abertura do Volume Perspectivo
FOV: Field of View
Θ
V
: abertura
vertical
tg (
Θ
V
/ 2) = h / D
VRP
Jan. Vis.
CW
v
n
h
D
Θ
W
: abertura
horizontal
tg (
Θ
W
/ 2) = w / D
VRP
Jan. Vis.
CW
u
n
w
D
Vista lateral do volume
Vista topo do volume
Y
vZ
vZ
vX
vLEIC CG
Volume de Visualização
Projecção Ortogonal
Definido pelo paralelipípedo infinito
passando pelos lados da janela de visualização
de arestas paralelas à direcção VPN.
O eixo central do paralelipípedo
•
coincide com o eixo n.
paralelepípedo (FOV = 0)
VPN
largura
altura
u
v
Projecção e
Recorte
mais Simples
LEIC CG
Limitações do
Volume de Visualização
Consequências negativas
Utilização volume de visualização infinito
•
mais evidentes no caso de Projecções em Perspectiva
Objectos muito afastados
•
depois de transformados
podem resumir-se a um pequeno “borrão”
desperdício em tempo de computação
Projecções de objectos demasiado próximos
LEIC CG
Limitações do
Volume de Visualização
Solução:
Definir planos de recorte
•
paralelos ao plano de projecção
•
através da sua distância a VRP
medida ao longo da direcção de VPN
Plano anterior
•
distância F ao centro de projecção (VRP)
Plano posterior
•
distância B ao centro de projecção (VRP)
Restrições
(Referencial VRC orientado segundo “mão esquerda”):
•
Distância F positiva;
LEIC CG
Planos de Recorte
Volume entre planos de recorte
determina o que a camara vê
Posição dos planos definida por
distância na direcção do VPN
plano recorte
anterior
plano recorte
posterior
LEIC CG
Volume de Projecção Perspectiva
(Frustum)
VRP
Pl. anterior
Jan. Vis.
Pl. Posterior
z
v
Eixo central
CW
B
F
VRP
Plano anterior
Janela de
visualização
Plano posterior
CW
B
F
Eixo
central
D
D
Θ
V
Θ
H
z
v
LEIC CG
Volume de Projecção Ortogonal
z
v
largura
altura
u
v
VRP
LEIC CG
Volumes de Visualização
Resumo das características gerais
Volume ortogonal:
•
paralelípedo definido pelos seguintes planos
-w
≤
x
v
≤
w
-h
≤
y
v
≤
h
F
≤
z
v
≤
B
Volume perspectivo:
•
frustum definido pelos seguintes planos
- (w / D) * z
v
≤
x
v
≤
(w / D) * z
v
- (h / D) * z
v
≤
y
v
≤
(h / D) * z
v
LEIC CG
Câmara em OpenGL
Por omissão:
Câmara na origem do referencial do mundo, aponta para –z
Volume de visualização é cubo centrado na origem c/ lado 2
LEIC CG
Câmara em OpenGL
Na vista ortográfica (por omissão)
Pontos são projectados no plano z=0
z=0
LEIC
CG
LEIC CG
Que Visualização?
Rendering Interactivo 3D em Tempo Real
Cenas 3D
Realismo
Tempo Real
Interactividade
LEIC CG
P
ip
el
in
e
V
is
u
al
iz
aç
ão
3
D
LEIC CG
O que é um Pipeline?
Vídeo:
LEIC CG
O que é um Pipeline?
Conceptualmente:
Conjunto de tarefas executadas sequencialmente
Pipeline é a base da linha de montagem industrial
Em computação:
Conjunto de elementos de processamento de dados ligados
em série
•
Os dados produzidos por um andar do pipeline são processados pelo
andar seguinte
LEIC CG
Pipeline Visualização 3D
Input: Cena 3D
possibilidade de utilizar aplicações
de modelação
•
Autocad
•
3DStudioMax
•
Maia,
•
Blender,
•
etc…
LEIC CG
Sequência de Operações
Primeiro Andar do Pipeline
Aplicação responsável pela obtenção de tempo-real,
interactividade e incremento do realismo. Andar
implementado em software. Input: base de dados da cena.
•
Contemplar:
Suporte de periféricos de E/S
Navegação
Técnicas de aceleração
Detecção de colisões
LEIC CG
Sequência de Operações
Segundo Andar do Pipeline
•
Transformação de Visualização e Projecção
•
Back-Face Culling
•
Recorte 3D
•
Transformação Perspectiva
•
Modelo de Iluminação
LEIC CG
Sequência de Operações
Terceiro Andar do Pipeline
Rasterização
•
Remoção de superfícies ocultas (HSR)
•
Sombreamento
•
Texturas e outros efeitos para maior realismo
Sombras, etc
LEIC CG
Pipeline de Baixo Nível
APIs Gráficas (OpenGL, Direct3D)
realizam os andares
•
Transformações Geométricas
•
Rasterização
Input
primitivas gráficas simples
•
fundamentalmente polígonos
Pipeline de baixo nível em hardware
chipsets GeForce da NVídia e Radeon da ATI
LEIC CG
Desempenho
Complexidade da cena
número de polígonos
reflecte-se no número de cálculos a efectuar nos andares do
pipeline de baixo nível
FLOPs
no andar das transformações Geométricas
Operações inteiras e acessos a memória
no andar de Rasterização
relação com a resolução em pixels do dispositivo de saída
Desempenho de pipeline determinado por
LEIC CG
Desempenho
Exemplo
Cena com 100K polígonos e resolução 1280 x 1024
25 FPS
•
sistema terá de processar 100K polígonos por cada 40ms
920 milhões de flops nos cálculos geométricos
1006 milhões de operações inteiras
1270 milhões de acessos à memória
Bottleneck
LEIC CG
Definição do Problema
Objectivo
Síntese de imagem
•
com grande grau de realismo
•
em tempo real
>25 fps
•
para cenas complexas
> 500 000 polígonos
Cena 3D
Número Total de Polígonos
Hardware
Gráfico
Taxa de desenho de
polígonos
LEIC CG
P
ip
el
in
e
V
is
u
al
iz
aç
ão
3
D
LEIC CG
LEIC CG
Current Transformation Matrix
Matriz 4 x 4 no espaço homogéneo
A current transformation matrix (CTM) é parte do
estado do OpenGL
CTM é aplicada a todos os vértices que “passam”
pelo pipeline geométrico
A CTM é definida na aplicação e carregada na
unidade de transformação
LEIC CG
LEIC CG
Pipeline de Geometria OpenGL
MODELVIEW
matrix
PROJECTION
matrix
perspective
division
viewport
transformation
w
z
y
x
eye eye eye eyew
z
y
x
1
dev dev devz
y
x
proj proj proj projw
z
y
x
=dev win win winz
y
x
original
vertex
vertices in the
eye coordinate
space
Clipping Coordinates
normalized device
coordinates
(foreshortened)
final window
coordinates
LEIC
CG
Transformação de Visualização
LEIC CG
Transformação de Visualização
Mudança de Referencial WCS
→
→
→
→
VRC
M
vis
= R
rot
••••
T
trans
•
−
−
−
•
−
•
−
=
1
0
0
0
VRP
n
n
n
n
VRP
v
v
v
v
VRP
u
u
u
u
M
z
y
x
z
y
x
z
y
x
vis
LEIC CG
Exemplo em OpenGL
Cálculo da matriz ModelView
Comando Look-At
Especifica
•
posição da câmara (eye-point)
•
local para onde está a apontar (at-point)
•
Rolamento da câmara (up)
gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble atx, GLdouble aty, GLdouble atz,
GLdouble upx, GLdouble upy, GLdouble upz)
LEIC CG
∙
Exemplo em OpenGL
Cálculo da matriz ModelView
gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble atx, GLdouble aty, GLdouble atz,
GLdouble upx, GLdouble upy, GLdouble upz)
LEIC CG
Exemplo em OpenGL
Cálculo da matriz ModelView
gluLookAt(
GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble atx, GLdouble aty, GLdouble atz,
GLdouble upx, GLdouble upy, GLdouble upz)
•
−
−
−
•
−
•
−
=
1
0
0
0
VRP
n
n
n
n
VRP
v
v
v
v
VRP
u
u
u
u
M
z
y
x
z
y
x
z
y
x
vis
LEIC
CG
Volumes Canónicos
LEIC CG
Volumes Canónicos
Objectivo:
Simplificar operação de recorte
Solução:
Transformar
•
Volumes Genéricos em Volumes Normalizados
Determinar
•
Transformações de Normalização
N
ort→ Projecção Ortogonal
LEIC CG
Topologia dos
Volumes Canónicos
Volume canónico ortogonal
Definido pelos seis planos:
x = -1, x = 1, y = -1, y = 1, z = 0, z = 1
Volume canónico perspectivo
Definido pelos seis planos
x = -z, x = z, y = z, y = -z, z = k, z = 1
z
v
(1, 1)
(-1, 1)
y
vou -x
vz
v
(1, 1)
(-1, 1)
Pl. anterior Pl. anterior Pl. posterior Pl. posteriory
vou -x
vk
LEIC CG
Volume Canónico Ortogonal
y
v
x
v
z
v
(-1, 1, 1)
(1, -1, 1)
(1, -1, 0)
(-1, -1, 0)
(-1, 1, 0)
(0, 0, 1)
(1, 1, 1)
• Plano de recorte anterior em z = 0
• Plano de recorte posterior em z = 1
LEIC CG
Volume Canónico Perspectivo
x
v• Plano de recorte anterior em z = k (0 < k < 1)
• Plano de recorte posterior em z = 1
• Eqs. Planos laterais: x
v
= + z
v
e y
v
= + z
v
(-1, 1, 1)
(-k, k, k)
y
vLEIC
CG
Transformações de
Normalização
LEIC CG
Transformação de Normalização
Volume Canónico Ortogonal
(1/2)
Translacção do paralelípedo em z
plano de recorte anterior para a origem:
•
T
ort
= T (0,0,–F)
Escalar de forma a que
Se verifique: -1 ≤ x, y ≤ 1 e 0 ≤ z ≤ 1:
LEIC CG
Matrizes de Transformação de Normalização
Transformação de Normalização
Volume Canónico Ortogonal
(2/2)
−
=
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
F
T
ort
−
=
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
F
B
h
w
S
ort
LEIC CG
Matrizes de Transformação de Normalização
Transformação de Normalização
Volume Canónico Ortogonal
(2/2)
−
−
=
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
B
F
F
F
B
h
w
N
ort
LEIC CG
Exemplo em OpenGL
Cálculo da matriz Projection
Comando glOrtho (projecção ortogonal)
Especifica
•
Dimensões do volume de visualização
glOrtho(
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
LEIC CG
Exemplo em OpenGL
Cálculo da matriz Projection
glOrtho(
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
LEIC CG
Transformação de Normalização
Volume Canónico Perspectivo
(1/6)
Duas escalas:
a) em XY:
•
-z ≤ x, y ≤ z
b) em Z:
•
plano de recorte posterior ≤ 1
Primeiro passo:
Forçar planos laterais a ângulos de 45º em x e y
Segundo passo:
LEIC CG
Transformação de Normalização
Volume Canónico Perspectivo
(2/6)
Ajustar XY
Declive lateral= tg (
Θ
V