Pipeline de Visualização Câmara Virtual · Definir planos de recorte • paralelos ao plano de...
Transcript of Pipeline de Visualização Câmara Virtual · Definir planos de recorte • paralelos ao plano de...
![Page 1: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/1.jpg)
Pipeline de Visualização
Câmara Virtual
1
![Page 2: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/2.jpg)
Problema
Detecção Colisões
O que entende por “falsa colisão”?
Falsa colisão corresponde à detecção de intersecção de
volumes envolventes mas em que os objectos nelas
contidos não se intersectam.?
2
![Page 3: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/3.jpg)
Problema
Detecção Colisões
Explique porque a utilização de dois tipos de volumes
envolventes associados a um mesmo objecto é útil?
É desejável combinar um volume envolvente com menor
precisão mas melhor desempenho (e.g. esfera) e outro
com maior precisão mas menos eficiente. O primeiro é
usado como despiste, sendo o segundo apenas
executado no caso do primeiro teste ser positivo.?
3
![Page 4: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/4.jpg)
Sumário
Câmara Virtual
Pipeline de Visualização 3D
4
![Page 5: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/5.jpg)
Sistema de Visualização Geral
5
![Page 6: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/6.jpg)
Sistema de Visualização Geral
WCS(3D)
DC(2D)
6
![Page 7: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/7.jpg)
Sistema de Visualização Geral
Posição da câmara
Posição e Orientação do plano de visualização
Volume de Visualização
… em WCS
7
![Page 8: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/8.jpg)
Computação GráficaCâmara Virtual
8
![Page 9: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/9.jpg)
Geração de Vistas
9
![Page 10: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/10.jpg)
Modelo da Câmara Virtual Simples
Parâmetros:
VRP: Posição da câmara(View Reference Point)
VPN: Direcção para onde aponta a câmara(View Plane Normal)
VUV: Rolamento da câmara(View UpVector)
D: Distância de VRP ao plano de projecção
VPN
VUV
VRP
VRP
D
VPN
10
(UP)
(V)
(C)(notação do livro)
![Page 11: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/11.jpg)
Viewing Reference Coordinates
VPNWCSvn
u
ywcs
xwcs
zwcs
VRPWCS
11
![Page 12: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/12.jpg)
Viewing Reference Coordinates
Origem em VRP
(u, v, n) sistema ortogonal “mão esquerda”.
vpnv
nu
yw
xw
zw
VRP
u
v
n
n “sai” da câmara
12
![Page 13: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/13.jpg)
Determinar VRCSequência de passos para determinar os versores u, v, n (em WCS)
𝑛 =𝑉𝑃𝑁
𝑉𝑃𝑁
v
nu
yw
xw
zw
𝑉𝑈𝑉 = 𝑉𝑈𝑉′ − 𝑛(𝑛 ∙ 𝑉𝑈𝑉′)
𝑣 =𝑉𝑈𝑉
𝑉𝑈𝑉
𝑢 = 𝑛 × 𝑣
VUV
VPN
VUV’
V
UP UP’
𝑛 =𝑉
𝑉
𝑈𝑃′ = 𝑝𝑟𝑜𝑗𝑈𝑃′ |𝑛 + 𝑈𝑃
𝑈𝑃 = 𝑈𝑃′ − 𝑝𝑟𝑜𝑗𝑈𝑃′|𝑛
𝑈𝑃 = 𝑈𝑃′ − 𝑛 𝑛 ∙ 𝑈𝑃′
𝑣 =𝑈𝑃
𝑈𝑃
𝑢 = 𝑛 x 𝑣
𝑉𝑈𝑉′ = 𝑝𝑟𝑜𝑗 𝑉𝑈𝑉′|𝑛 + 𝑉𝑈𝑉
𝑉𝑈𝑉 = 𝑉𝑈𝑉′ − 𝑝𝑟𝑜𝑗𝑉𝑈𝑉′|𝑛
13
(notação do livro)
![Page 14: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/14.jpg)
Janela de Visualização
Plano de
Visualização
Janela de
Visualização
u
VRP
vVPN
h
w
14
![Page 15: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/15.jpg)
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
Dimensões H e W da janela de visualização
15
![Page 16: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/16.jpg)
Volume de Visualização
Contem tudo o que é “visível” pela câmara
16
![Page 17: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/17.jpg)
Projecções Geométricas Planas
• Determinada pelo centro de projecção (CDP)
• Os raios projectores são convergentes
A
B
B´
A´
CDP
Raios
Projectores
Plano de
Projecção
• Determinada por direcção de projecção
• Os raios projectores paralelos entre si
A
B
B´
A´
Direcção de
Projecção
Raios
Projectores
Plano de
Projecção
17
![Page 18: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/18.jpg)
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
yw
xw
zw
z
v
CP
18
![Page 19: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/19.jpg)
Abertura do Volume Perspectivo
FOV: Field of View
V : abertura
vertical
tg (V / 2) = h / D
VRP
Jan. Vis.
CP
v
n
h
D
W : abertura
horizontal
tg (W / 2) = w / DVRP
Jan. Vis.
CP
un
w
D
Vista lateral do volume
Vista topo do volume
Yv
Zv
Zv
Xv
4 Planos laterais no referencial VRC
Xv = + (w / D) * Zv
Yv = + (h / D) * Zv19
![Page 20: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/20.jpg)
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
20
![Page 21: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/21.jpg)
Construção do
Volume de Visualizaçã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 N ao centro de projecção (VRP)
Plano posterior
• distância F ao centro de projecção (VRP)
Restrições (Referencial VRC orientado segundo “mão esquerda”):
• Distância N positiva;
• Distância N < Distância F
21
![Page 22: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/22.jpg)
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
ignorado desenhado recortado ignorado
22
![Page 23: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/23.jpg)
VV na projeção Perspectiva
(Frustum)
VRP
Pl. anterior
Jan. Vis.Pl. Posterior
zv
Eixo central CP
F
N
VRP
Plano anteriorJanela de
visualizaçãoPlano posterior
CP
F
N
Eixo
central
D
D
V
H
zv
23
![Page 24: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/24.jpg)
VV na Projecção Ortogonal
zv
largura
altura
u
v
VRP
24
![Page 25: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/25.jpg)
Câmara Virtual e Volume de Visualização
Parâmetros
VRP
VPN
VUV’
D
N, F
H, W,
FOVx, FOVy
Posi
ção d
a
Câm
ara
Lim
ites
Vol.
Vis
ual
izaç
ão
25
![Page 26: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/26.jpg)
Volu
me
Ort
ogo
nal
Volu
me
Par
spect
ico
Definição dos
Volumes de Visualização (VV)
-W xv W
-H yv H
N zv F
- (W / D) * zv xv (W / D) * zv
- (H / D) * zv yv (H / D) * zv
N zv F
26
![Page 27: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/27.jpg)
VV Ortogonal em three.js
27
![Page 28: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/28.jpg)
VV Perspectiva em three.js
28
![Page 29: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/29.jpg)
Sistema de Visualização Geral
WCS(3D)
DC(2D)
Pipeline de
Visualização 3D
29
![Page 30: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/30.jpg)
Pipeline de Visualização 3D
30
![Page 31: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/31.jpg)
Pip
elin
e V
isual
izaç
ão 3
D
31
![Page 32: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/32.jpg)
O que é uma Pipeline?
Vídeo:
Modern Times (Charlie Chaplin, 1936) – The factory scene
32
![Page 33: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/33.jpg)
O que é um Pipeline?
Vídeo:
Modern Times (Charlie Chaplin, 1936) – The factory scene
33
![Page 34: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/34.jpg)
O que é uma 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
34
![Page 35: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/35.jpg)
Pipeline Visualização 3D
Input: Cena 3D
possibilidade de utilizar aplicações
de modelação
• Autocad
• 3DStudioMax
• Maia,
• Blender,
• etc…
Output: Imagem no ecrã
35
![Page 36: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/36.jpg)
Sequência de Operações
Primeiro Andar do Pipeline
Responsável pela obtenção de tempo-real, interactividade e
incremento do realismo. Andar codificado em software.
Input: base de dados da cena.
Suporte de periféricos de Input/Output
Navegação
Técnicas de aceleração
Detectar colisões
Gera uma “sopa” de polígonos
36
![Page 37: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/37.jpg)
Segundo Andar
Processamento Geométrico
Transformação de Visualização
Cálculo de Iluminação
Transformação de projeção
Recorte 3D
Transformação (ou mapeamento) de viewport.
37
![Page 38: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/38.jpg)
Terceiro Andar
Discretização
Rasterização : recebe primitivas do dispositivo (vértices, segmentos de
reta, ou poligonos convexos) e produz de fragmentos.
Calculo de cor : produção de fragmentos com côr (por
sombreamento constante, Gouraud, Phong e texturização)
Composição : Determinação de fragmentos cujas cores são
armazenadas nos pixels do buffer do cor de memória de imagem. Teste de
visibilidade usando o algoritmo Z-buffer - remoção de elementos ocultos.
38
(não nesta aula)
![Page 39: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/39.jpg)
Pipeline de Baixo Nível
APIs Gráficas (OpenGL, Direct3D)
Transformações Geométricas
Discretização
Input
primitivas gráficas simples
• fundamentalmente polígonos
Pipeline de baixo nível em hardware
chipsets GeForce da NVidia e Radeon da ATI
39
![Page 40: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/40.jpg)
DesempenhoComplexidade 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 Discretização
relação com a resolução em pixels do dispositivo de saída
Desempenho de pipeline determinado por
throughput do andar mais lento
40
![Page 41: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/41.jpg)
Desempenho (lei de Moore)
41
![Page 42: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/42.jpg)
Desempenho
Exemplo
Cena com 1M polígonos e resolução 1280 x 1024
25 FPS
sistema terá de processar 100K polígonos por cada 40ms
9.2 GFLOPS nos cálculos geométricos
10.1 biliões operações inteiras
12.7 biliões acessos à memória
Por segundo!
Bottleneck
andar de Discretização
42
![Page 43: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/43.jpg)
43
![Page 44: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/44.jpg)
44
![Page 45: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/45.jpg)
Pipeline de Visualização 3D
45
![Page 46: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/46.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
46
![Page 47: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/47.jpg)
Transformação de VisualizaçãoTransformações de Visualização e Projecção
47
![Page 48: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/48.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
48
![Page 49: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/49.jpg)
Transformação de Visualização (i)
Mudança de Referencial VRC WCS
1000
.
.
.
VRPnnnn
VRPvvvv
VRPuuuu
Mzyx
zyx
zyx
vis
Vamos demonstrar como chegamos a este resultado !
49
![Page 50: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/50.jpg)
1000
0
0
0
zyx
zyx
zyx
rotnnn
vvv
uuu
M
Nota 1:
Ref. Camara – mão esquerda (aponta na dir.
positiva do eixo dos Zs)
A transformação de visualização implica uma
mudança de ref. da mão esquerda para a mão
direita (daí a troca de sinal na 3º linha).
1000
100
010
001
z
y
x
transVRP
VRP
VRP
M
Mudança de Referencial VRC WCS
Transformação de Visualização (ii)
Nota 2:
Uma vez que queremos passar de WCS
(filho) para uvn (pai), alinhamos WCS a
vpn
vn
u
yw
xwzw
VRP
Tr = - VRP !50
![Page 51: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/51.jpg)
Transformação de Visualização (iii)
1000
.
.
.
VRPnnnn
VRPvvvv
VRPuuuu
MMzyx
zyx
zyx
transrot
Ambas as matrizes de rotação e da composição estão em
em sistemas de coordenadas orientados segundo a mão direita.
Notar que a 3ª linha da matriz de rotação (e da composição com a translação)
têm sinal negativo (i.e., o versor n aponta no sentido negativo dos Z).
A seguir os pontos resultantes (x,y,z) da composição terão de ser
convertidos para pontos (x,y,-z) a fim de se obter o referencial da mão esquerda,
que é o referencial da camara.
transrot MM
rotMtransrot MM
51
![Page 52: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/52.jpg)
Transformação de Visualização (iv)
1000
.
.
.
VRPnnnn
VRPvvvv
VRPuuuu
MMSMzyx
zyx
zyx
transrotscalevis
1000
0100
0010
0001
scaleS
Para que os pontos (x,y,z) da composição sejam convertidos para
(x,y,-z), teremos que aplicar um escalamento S ao resutado de
Definimos então a matriz S, como
Finalmente a Matriz de visualização vem dada como
transrot MM
visM
52
(comparar com a exp. (5.4) do livro, pag. 85)
![Page 53: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/53.jpg)
Exemplo em three.js
Cálculo da Matriz de Visualização
camera.position.set(vector) : posição da câmara
camera.lookAt(vector) : local para onde está a apontar
camera.up.set(vector) : rolamento da câmara
53
![Page 54: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/54.jpg)
Exemplo em three.js
Cálculo da matriz de visualização
camera.position.set(new Vector(eyex, eyey, eyez));
camera.lookAt(new Vector(atx, aty, atz));
camera.up.set(new Vector(upx, upy, upz));
𝑉𝑅𝑃 = 𝑒𝑦𝑒𝑥 𝑒𝑦𝑒𝑦 𝑒𝑦𝑒𝑧𝑉𝑃𝑁 = 𝑎𝑡𝑥 − 𝑒𝑦𝑒𝑥 𝑎𝑡𝑦 − 𝑒𝑦𝑒𝑦 𝑎𝑡𝑧 − 𝑒𝑦𝑒𝑧
𝑉𝑈𝑉 = 𝑢𝑝𝑥 𝑢𝑝𝑦 𝑢𝑝𝑧
𝑛 =𝑉𝑃𝑁
𝑉𝑃𝑁
𝑢 = 𝑛 ×𝑉𝑈𝑉
𝑉𝑈𝑉
54
![Page 55: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/55.jpg)
Exemplo em three.js
Cálculo da matriz de visualização
𝑀𝑣𝑖𝑠 =
𝑢𝑥 𝑢𝑦 𝑢𝑧 −𝑢. 𝑉𝑅𝑃
𝑣𝑥 𝑣𝑦 𝑣𝑧 −𝑣. 𝑉𝑅𝑃
𝑛𝑥 𝑛𝑦 𝑛𝑧 −𝑛. 𝑉𝑅𝑃
0 0 0 1
camera.position.set(new Vector(eyex, eyey, eyez));
camera.lookAt(new Vector(centerx, centery, centerz));
camera.up.set(new Vector(upx, upy, upz));
55
![Page 56: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/56.jpg)
Câmara Virtual e Volume de Visualização
Parâmetros
VRP
VPN
VUV’
D
N, F
H, W
FOVx, FOVy
Posi
ção d
a
Câm
ara
Lim
ites
Vol.
Vis
ual
izaç
ão
56
![Page 57: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/57.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
57
![Page 58: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/58.jpg)
Volumes CanónicosTransformações de Visualização e Projecção
58
![Page 59: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/59.jpg)
Volume Canónico Ortogonal
yv
xv
zv
(-1, 1, 1)
(1, -1, 1)(1, -1, 0)
(-1, -1, 0)
(-1, 1, 0)
(0, 0, 1)
(1, 1, 1)
𝒙 = ±𝟏Planos de recorte 𝒚 = ±𝟏 𝒛 = 𝟎 𝒛 = 𝟏
59
![Page 60: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/60.jpg)
Transformar VVs em
VV Ortogonal Canónico
(-1, -1, 0)
(1, 1, 1)
60
![Page 61: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/61.jpg)
Transformações de ProjeçãoTransformações de Visualização e Projecção
61
![Page 62: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/62.jpg)
Matriz de Projeção Ortogonal (i)
𝑁𝑜𝑟𝑡 =
1
𝓁0 0 0
01
𝒶0 0
0 01
𝑓 − 𝑛
−𝑛
𝑓 − 𝑛0 0 0 1
Adoptando o modelo de câmara virtual simples (CVS), a matriz de
transformação ortogonal é dada por:
Vamos demonstrar !
62
![Page 63: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/63.jpg)
Matriz de Projeção Ortogonal (ii)
A matriz de transformação ortogonal resulta da transformação que converte
o volume ortogonal, no volume ortogonal canónico. Esta transformação envolve
os seguintes passos:
• Operação de translação para posicionar o objecto no centro do plano da
origem (onde o plano anterior é o plano da origem)
Obtendo Translação ortogonal -
• Operação de escalamento de modo que , e
Obtendo Escalamento ortogonal -
Tort
Sort
11 x 11 y 10 z
Finalmente a matriz de projeção ortogonal é obtida pela multiplicação das
duas matrizes anteriores, isto é:
Nort = Sort . Tort
63
![Page 64: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/64.jpg)
No modelo de câmara virtual simples (CVS), admite-se que a janela de
visualização está centrada simetricamente em relação à direção de
visualização:
Este pressuposto implica as seguintes restrições:
1) O objeto já está centrado em relação à janela de visualização
2) O objeto já está escalado simetricamente às dimensões da janela de
visualização
-Z
Y
X
𝒶
𝓁
Matriz de Projeção Ortogonal (iii)
64
![Page 65: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/65.jpg)
Pelas duas restrições anteriores verificamos que:
1) Não é preciso realizar a translação no plano XY, pelo que
𝒕𝒙 = 𝟎 e 𝒕𝒚= 𝟎 (objeto já está centrado em relação ao plano XY)
2) A dimensão do objeto é simétrica em relação à janela. Admtindo as
dimensões do objeto dadas por 𝒍𝒆𝒇𝒕, 𝒃𝒐𝒕𝒕𝒐𝒎, 𝒏𝒆𝒂𝒓 , (𝒓𝒊𝒈𝒉𝒕, 𝒕𝒐𝒑, 𝒇𝒂𝒓)
verificamos que:
(r,t,f)
(l,b,n)
No plano XY
(r,t)
(l,b)
ou seja𝒓 = −𝒍
𝒕 = −𝒃
Matriz de Projeção Ortogonal (iv)
65
![Page 66: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/66.jpg)
Pelo que apenas teremos que “puxar” o objeto para o centro do plano
anterior, isto é, para o plano 0z
-Z
Y
X
n
f
(r,t,f)
(l,b,n)
“Puxar” o objeto para o centro do plano implica uma translação
𝑡𝑧 = −𝑛
-n
Matriz de Translação (i)
66
![Page 67: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/67.jpg)
1000
100
0010
0001
1000
100
010
001
nt
t
t
Tz
y
x
ort
Atendendo a que, no modelo de câmara simples se tem a restrição
𝒕𝒙 = 𝟎 e 𝒕𝒚 = 𝟎 a translação é dada por:
Matriz de Translação (ii)
67
![Page 68: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/68.jpg)
Matriz de Translação (iii)
No cálculo da matriz de escalamento, fazemos com que as dimensões do objecto
satisfaçam as desigualdades:11 x 11 y 10 z
(−1,−1,0)
𝑋
𝑌
−𝑍
(−1,1,0)
(1,1,1)(−1,1,1)
(1,−1,1)
(1,1,0)
(1, −1,0) (r,t,f)
(l,b,n)
𝑆𝑥 . 𝑟 − 𝑙 = 1 − −1 ⟶ 𝑆𝑥 =2
𝑟 − 𝑙
𝑆𝑦 . 𝑡 − 𝑏 = 1 − −1 ⟶ 𝑆𝑦 =2
𝑡 − 𝑏
𝑆𝑧 . 𝑓 − 𝑛 = 1 − 0 ⟶ 𝑆𝑧 =1
𝑓 − 𝑛
𝒓 = −𝒍
𝒕 = −𝒃
Mas sabemos que pela 1ª restrição
𝑆𝑥 . 2𝑟 = 2 ⟶ 𝑆𝑥 =1
𝑟=1
𝓁
Mas sabemos que pela 2ª restrição
𝑆𝑦 . 2𝑡 = 2 ⟶ 𝑆𝑦 =1
𝑡=
1
𝒶
(*1*)
(*2*)
(*3*)
68
![Page 69: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/69.jpg)
Nort = Sort . Tort
Pelo que a matriz de escalamento é dada por (ver expressões (*1*), (*2*) e (*3*)):
A matriz de projeção ortogonal, é dada por, ou seja, tem-se
Sort . Tort =
𝑆𝑜𝑟𝑡 =
1
𝓁0 0 0
01
𝒶0 0
0 01
𝑓 − 𝑛0
0 0 0 1
1
𝓁0 0 0
01
𝒶0 0
0 01
𝑓 − 𝑛0
0 0 0 1
1 0 0 00 1 0 00 0 1 −𝑛0 0 0 1
Matriz de Projeção Ortogonal (v)
=
𝟏
𝓵𝟎 𝟎 𝟎
𝟎𝟏
𝓪𝟎 𝟎
𝟎 𝟎𝟏
𝒇 − 𝒏
−𝒏
𝒇 − 𝒏𝟎 𝟎 𝟎 𝟏
69
(comparar com a exp. (5.7) do livro, pag. 88)
![Page 70: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/70.jpg)
𝑁𝑜𝑟𝑡 =
2
𝑟 − 𝑙0 0 −
𝑟 + 𝑙
𝑟 − 𝑙
02
𝑡 − 𝑏0 −
𝑡 + 𝑏
𝑡 − 𝑏
0 02
𝑓 − 𝑛−𝑓 + 𝑛
𝑓 − 𝑛0 0 0 1
Matriz de Projeção Ortogonal em WebGL (i)Deduzimos a matriz de projeção ortogonal admitindo um modelo da câmara
virtual simples (CVS). No entanto, na API gráfica WebGL, a matriz de projeção
ortogonal é diferente. Isto acontece, pois admite-se que o objeto não está: (i)
centrado, nem (ii) escalado no plano XY. Ou seja, não temos as restrições que
caracterizam o modelo CVS.
( Nota: Em WebGL tem-se )
Assim, em WebGL, a projeção ortogonal é dada por:
Vamos demonstrar !
70
11 x 11 y 11 z
![Page 71: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/71.jpg)
Se o objeto não está centrado no plano (x,y), vamos desloca-lo para a origem
deste plano:
Nota: temos Centrar em (x,y), significa
t
b
l rCx
Cy
𝐶𝑥 = −𝑙 + 𝑟
2𝐶𝑦 = −
𝑡 + 𝑏
2
Matriz de Translação em WebGL (i)
71
![Page 72: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/72.jpg)
Ou seja, translação é, neste caso, dada por:
𝑡𝑥 = −𝑙 + 𝑟
2𝑡𝑦 = −
𝑡 + 𝑏
2𝑡𝑧 = −
𝑓 + 𝑛
2
Vindo,
10002
100
2010
2001
1000
100
010
001
nf
bt
rl
t
t
t
Tz
y
x
ort
Matriz de Translação em WebGL (ii)
72
![Page 73: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/73.jpg)
No calculo da matriz de escalamento, fazemos com que as dimensões do objecto
satisfaçam as desigualdades:
11 x 11 y 10 z
(−1,−1,0)
𝑋
𝑌
−𝑍
(−1,1,0)
(1,1,1)(−1,1,1)
(1,−1,1)
(1,1,0)
(1, −1,0) (r,t,f)
(l,b,n)
𝑆𝑥 . 𝑟 − 𝑙 = 1 − −1 ⟶ 𝑆𝑥 =2
𝑟 − 𝑙
𝑆𝑦 . 𝑡 − 𝑏 = 1 − −1 ⟶ 𝑆𝑦 =2
𝑡 − 𝑏
𝑆𝑧 . 𝑓 − 𝑛 = 1 − 0 ⟶ 𝑆𝑧 =1
𝑓 − 𝑛
Matriz de Escalamento em WebGL (i)
𝒓 = −𝒍 𝒕 = −𝒃Nota: as restrições e
não são válidas !
73
![Page 74: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/74.jpg)
Pelo que a matriz de escalamento é dada por
1000
02
00
002
0
0002
nf
bt
lr
Sort
Vindo finalmente para a matriz de projeção ortogonal
Nort = Sort . Tort =
1000
02
00
002
0
0002
nf
bt
lr
10002
100
2010
2001
nf
bt
lr
Matriz de Projeção Ortogonal em WebGL (ii)
74
![Page 75: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/75.jpg)
Nort = Sort . Tort =
1000
02
00
002
0
0002
nf
bt
lr
10002
100
2010
2001
nf
bt
lr
𝐍𝐨𝐫𝐭 =
𝟐
𝒓 − 𝒍𝟎 𝟎 𝒕𝒙
𝟎𝟐
𝒕 − 𝒃𝟎 𝒕𝒚
𝟎 𝟎𝟐
𝒇 − 𝒏𝒕𝒛
𝟎 𝟎 𝟎 𝟏
𝑡𝑥 = −𝑟 + 𝑙
𝑟 − 𝑙
𝑡𝑦 = −𝑡 + 𝑏
𝑡 − 𝑏
𝑡𝑧 = −𝑓 + 𝑛
𝑓 − 𝑛
Matriz de Projeção Ortogonal em WebGL (iii)
75
![Page 76: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/76.jpg)
Câmara Ortogonal em three.js
OrthographicCamera( left, right, top, bottom, near, far )
76
![Page 77: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/77.jpg)
Matriz de Transformação Perspetiva
Admitindo o modelo de CVS a transformação de perspetiva é dada por:
Vamos demonstrar !
𝑵𝒑𝒆𝒓𝒔𝒑 =
𝒅
𝓵𝟎 𝟎 𝟎
𝟎𝒅
𝓪𝟎 𝟎
𝟎 𝟎𝒇
𝒇 − 𝒏
−𝒇. 𝒏
𝒇 − 𝒏𝟎 𝟎 𝟏 𝟎
77
![Page 78: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/78.jpg)
𝑌𝑝 =𝑑
𝑍𝑣𝑌𝑣𝑋𝑝 =
𝑑
𝑍𝑣𝑋𝑣 𝑍𝑝 = 𝑑
𝑋𝑝𝑋𝑣
=𝑑
𝑍𝑣
𝑌𝑝𝑌𝑣
=𝑑
𝑍𝑣
Relação não linear. A divisão por z, reflete o “encurtamento”
Zv
Xv
Zv
Xp
Xv
Zv
Yv
Yp
Yv
dd
Projeção em Perspetiva Simples
78
![Page 79: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/79.jpg)
Projeção em Perspetiva Simples (i)
A transformação de perspetiva é algo complexa, pois envolve deformação
de perspetiva (do frustum para o paralelepípedo).
Um modo de abordar este problema, é descrevê-lo como uma projeção
simples. Neste contexto, teremos a matriz:
𝑀𝑝𝑒𝑟𝑠𝑝_𝑆𝑖𝑚𝑝𝑙𝑒𝑠 =
𝑑 0 0 00 𝑑 0 00 0 𝑑 00 0 1 0
Esta configuração (em coord. homogéneas) permite obter
𝑤𝑋𝑝𝑤𝑌𝑝𝑤𝑍𝑝𝑤
= 𝑀𝑝𝑒𝑟𝑠𝑝_𝑆𝑖𝑚𝑝𝑙𝑒𝑠
𝑋𝑣𝑌𝑣𝑍𝑣1
=
𝑑𝑋𝑣𝑑𝑌𝑣𝑑𝑍𝑣𝑍𝑣
79
![Page 80: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/80.jpg)
Projeção em Perspetiva Simples (ii)
(resultado anterior)
𝑤𝑋𝑝𝑤𝑌𝑝𝑤𝑍𝑝𝑤
= 𝑀𝑝𝑒𝑟𝑠𝑝_𝑆𝑖𝑚𝑝𝑙𝑒𝑠
𝑋𝑣𝑌𝑣𝑍𝑣1
=
𝑑𝑋𝑣𝑑𝑌𝑣𝑑𝑍𝑣𝑍𝑣
𝑋𝑝𝑌𝑝𝑍𝑝
=1
𝑍𝑣
𝑑𝑋𝑣𝑑𝑌𝑣𝑑𝑍𝑣
Aplicando a “divisão por perspetiva” obtém-se
Resultado já conhecido !
(*)
80
![Page 81: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/81.jpg)
Transformação de Deformação
Perspetiva (i)
Lição:
Demonstrou-se que o uso de coordenadas homogéneas permite
realizar uma projeção em perspetiva simples
No entanto há uma limitação:
A projeção realizada é não invertível, ou seja, todos os pontos
ao longo de um raio projetor são mapeados no mesmo ponto
do plano de projeção.
Isto quer dizer, que não recuperamos a informação de
profundidade, ou seja, não contabilizamos os parâmetros
“near” e “far”.
81
![Page 82: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/82.jpg)
Transformação de Deformação
Perspetiva (ii)
Para recuperar a informação de profundidade, faz-se a adaptação
𝑀𝑝𝑒𝑟𝑠𝑝_𝑆𝑖𝑚𝑝𝑙𝑒𝑠 =
𝑑 0 0 00 𝑑 0 00 0 𝑑 00 0 1 0
𝑀𝑝𝑒𝑟𝑠𝑝 =
𝑑 0 0 00 𝑑 0 00 0 𝑎 𝑏0 0 1 0
(*)
Multiplicando o vetor por ficamos com[ 𝑋𝑣 𝑌𝑣 𝑍𝑣 1]𝑇 𝑀𝑝𝑒𝑟𝑠𝑝
𝑑𝑋𝑣𝑑𝑌𝑣
𝑎𝑍𝑣 + 𝑏𝑍𝑣
e usando o resultado em 𝑋𝑝𝑌𝑝𝑍𝑝
=1
𝑍𝑣
𝑑𝑋𝑣𝑑𝑌𝑣
𝑎𝑍𝑣 + 𝑏
𝒁𝒑 = 𝒂 +𝒃
𝒁𝒗Ou seja conserva profundidade !
obtemos
82
![Page 83: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/83.jpg)
Transformação de Deformação
Perspetiva (iii)
Para determinar os parâmetros “a” e “b”, recorremos às condições do
frustum genérico, ou seja, e
Quer isto dizer que, à igualdade impomos os valores
de near e far, isto é
𝑍𝑣 = 𝑛 𝑍𝑣 = 𝑓
𝑍𝑝 = 𝑎 +𝑏
𝑍𝑣
𝑛 = 𝑎 +𝑏
𝑛
𝑓 = 𝑎 +𝑏
𝑓
resolvendo o sist. de eq.
vai dar …
𝑎 = 𝑛 + 𝑓
𝑏 = −𝑛𝑓
𝑀𝑝𝑒𝑟𝑠𝑝 =
𝑑 0 0 00 𝑑 0 00 0 𝑎 𝑏0 0 1 0
Substituindo este último resultado na matriz, ficamos com
𝑀𝑝𝑒𝑟𝑠𝑝 =
𝑑 0 0 00 𝑑 0 00 0 𝑛 + 𝑓 −𝑛𝑓0 0 1 0
83
![Page 84: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/84.jpg)
Matriz de Projeção Perspetiva
𝑑 0 0 00 𝑑 0 00 0 𝑛 + 𝑓 −𝑛𝑓0 0 1 0
𝑁𝑝𝑒𝑟𝑠𝑝 = 𝑁𝑜𝑟𝑡𝑜 𝑀𝑝𝑒𝑟𝑠𝑝
1
𝓁0 0 0
01
𝒶0 0
0 01
𝑓 − 𝑛
−𝑛
𝑓 − 𝑛0 0 0 1
A deformação de perspetiva (do frustum para o paralelepípedo)
é então dada por
𝑵𝒑𝒆𝒓𝒔𝒑 =
𝒅
𝓵𝟎 𝟎 𝟎
𝟎𝒅
𝓪𝟎 𝟎
𝟎 𝟎𝒇
𝒇 − 𝒏
−𝒇. 𝒏
𝒇 − 𝒏𝟎 𝟎 𝟏 𝟎
84
(comparar com a exp. (5.17) do livro, pag. 92)
(resultado do acetado 69, i.e.
a matriz de proj. ortogonal
no sistema CVS)
![Page 85: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/85.jpg)
Matriz de Projeção Perspetiva em
OpenGL
𝑵𝒑𝒆𝒓𝒔𝒑 =
𝟐𝒅
𝒓 − 𝒍𝟎 𝑻𝒙 𝟎
𝟎𝟐𝒅
𝒕 − 𝒃𝑻𝒚 𝟎
𝟎 𝟎𝒇
𝒇 − 𝒏
−𝒇. 𝒏
𝒇 − 𝒏𝟎 𝟎 𝟏 𝟎
Exercicio 1:
Mostre (especificando os valores de Tx e Ty) que a matriz de projeção de
perspetiva é dada por (os planos de recorte são dados por
)
Exercicio 2:
Deduza a expressão da matriz de projeção ortogonal e de perspetiva
admintindo os planos de recorte são dados por
𝒙 = ±𝟏 𝒚 = ±𝟏 𝒛 = ±𝟏
85
𝒙 = ±𝟏 𝒚 = ±𝟏 𝒛 =0
![Page 86: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/86.jpg)
Câmara Perspectiva em three.js
PerspectiveCamera( fov, aspect, near, far )
86
![Page 87: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/87.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
87
![Page 88: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/88.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
88
![Page 89: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/89.jpg)
Mapeamento Janela-Viewport
89
![Page 90: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/90.jpg)
Viewport versus Janelas
Janela Gráfica
Janela ou
Janela de Recorte
Viewport
90
![Page 91: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/91.jpg)
Volume de Visualização
91
![Page 92: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/92.jpg)
Mapeamento em
Coordenadas de Janela Gráfica
92
![Page 93: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/93.jpg)
Visualização 2D
Matriz de Transformação Janela-Viewport
A matriz de transformação de viewport é dada por
Vamos demonstrar !
𝑀 =
𝑿𝒗𝒎𝒂𝒙 − 𝑿𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎
𝑿𝒗𝒎𝒂𝒙 + 𝑿𝒗𝒎𝒊𝒏
𝟐
𝟎𝒀𝒗𝒎𝒂𝒙 − 𝒀𝒗𝒎𝒊𝒏
𝟐𝟎
𝒀𝒗𝒎𝒂𝒙 + 𝒀𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
93
![Page 94: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/94.jpg)
Visualização 2D
Transformação Janela-Viewport (i)
Objectivo:
Transformar a janela de visualização, em coordenadas do mundo,
para um volume delimitado pela área de viewport.
Porque é a área que delimita a transformação, quer isto dizer, que vamos
atuar em (x,y)
O que é que está mal …. ?
94
![Page 95: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/95.jpg)
Visualização 2D
Transformação Janela-Viewport (ii)
Não esquecer que o volume de visualização é canónico, pelo que a janela de
visualização, está centrado nas coordenadas do mundo !
X
Y
95
![Page 96: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/96.jpg)
Visualização 2D
Transformação Janela-Viewport (iii)
Passo 1: Convenção
Neste processo de transformação convenciona-se que as coordenadas (x,y)
do volume de visualização são transladadas para o 1º quadrante, ou seja
X
Y
(𝑋𝑚𝑎𝑥, 𝑌𝑚𝑎𝑥 )
X
Y(𝑋𝑚𝑎𝑥, 𝑌𝑚𝑎𝑥 )
(𝑋𝑚𝑖𝑛, 𝑌𝑚𝑖𝑛 )
(𝑋𝑚𝑖𝑛, 𝑌𝑚𝑖𝑛 )
Desloco o volume de visualização de modo que o seu vértice
coincida com a origem do referencial do mundo
(𝑋𝑚𝑖𝑛, 𝑌𝑚𝑖𝑛 )
Nota: Podemos “esquecer” a coordenada “z”, uma vez que a profundidade não é
tratada neste estágio do pipeline 96
![Page 97: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/97.jpg)
𝑇1 =
1 0 0 +𝑋𝑚𝑖𝑛,
0 1 0 +𝑌𝑚𝑖𝑛,
0 0 1 00 0 0 1
=
𝟏 𝟎 𝟎 +𝟏𝟎 𝟏 𝟎 +𝟏𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
Quer isto dizer que a 1ª transformação a ser contabilizada é a translação dada por
Passo 2:
Visualização 2D
Transformação Janela-Viewport (iv)
Temos agora que “ajustar” o tamanho da janela de visualização, para
o tamanho da janela de viewport. Isto implica a existência de um escalamento
(volume canónico)
X
Y(𝑋𝑚𝑎𝑥, 𝑌𝑚𝑎𝑥 )
(𝑋𝑚𝑖𝑛, 𝑌𝑚𝑖𝑛 )
97
![Page 98: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/98.jpg)
Quer isto dizer que a 2ª transformação a ser contabilizada é um escalamento
entre o tamanho da janela de visualização, caracterizado pelo parâmetros
, e o tamanho do viewport, caracterizado pelo
parâmetros , isto é
(𝑋𝑚𝑎𝑥, 𝑌𝑚𝑎𝑥 ) (𝑋𝑚𝑖𝑛, 𝑌𝑚𝑖𝑛 )
(𝑋𝑣,𝑚𝑎𝑥 𝑌𝑣,𝑚𝑎𝑥 )
Visualização 2D
Transformação Janela-Viewport (v)
𝑺 =
𝑿𝒗𝒎𝒂𝒙 −𝑿𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎 𝟎
𝟎𝒀𝒗𝒎𝒂𝒙 −𝒀𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎
𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
(𝑋𝑣,𝑚𝑖𝑛 𝑌𝑣,𝑚𝑖𝑛 )
𝑆𝑥 (𝑋𝑚𝑎𝑥 − 𝑋𝑚𝑖𝑛 ) = 𝑋𝑣 𝑚𝑎𝑥 − 𝑋𝑣 𝑚𝑖𝑛
𝑆𝑥 =𝑋𝑣𝑚𝑎𝑥 −𝑋𝑣𝑚𝑖𝑛
𝑋𝑚𝑎𝑥 −𝑋𝑚𝑖𝑛=
𝑋𝑣𝑚𝑎𝑥 −𝑋𝑣𝑚𝑖𝑛
2
logo
(não esquecer que o volume é canónico !)
𝑆𝑦 (𝑌𝑚𝑎𝑥 − 𝑌𝑚𝑖𝑛 ) = 𝑌𝑣 𝑚𝑎𝑥 − 𝑌𝑣 𝑚𝑖𝑛
𝑆𝑦 =𝑌𝑣𝑚𝑎𝑥 −𝑌𝑣𝑚𝑖𝑛
𝑌𝑚𝑎𝑥 −𝑌𝑚𝑖𝑛=
𝑌𝑣𝑚𝑎𝑥 −𝑌𝑣𝑚𝑖𝑛
2
98
![Page 99: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/99.jpg)
Visualização 2D
Transformação Janela-Viewport (vi)
Passo 3:
Finalmente só teremos que posicionar a janela no offset do viewport,
que é dependente do parâmetro . Pelo que é necessário
efetuar uma translação com este valor. Isto é:
(𝑋𝑣,𝑚𝑖𝑛 𝑌𝑣,𝑚𝑖𝑛 )
𝑻𝟐 =
𝟏 𝟎 𝟎 𝑿𝒗𝒎𝒊𝒏
𝟎 𝟏 𝟎 𝒀𝒗𝒎𝒊𝒏
𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
99
![Page 100: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/100.jpg)
Fazendo agora a junção dos passo1, passo2 e passo3, obtemos a
seguinte composição matricial:
𝑀 = 𝑇2 . 𝑆. 𝑇1 =
𝟏 𝟎 𝟎 𝑿𝒗𝒎𝒊𝒏
𝟎 𝟏 𝟎 𝒀𝒗𝒎𝒊𝒏
𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
𝑿𝒗 𝒎𝒂𝒙 −𝑿𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎 𝟎
𝟎𝒀𝒗𝒎𝒂𝒙 −𝒀𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎
𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
𝟏 𝟎 𝟎 𝟏𝟎 𝟏 𝟎 𝟏𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
𝑴 =
𝑿𝒗𝒎𝒂𝒙 − 𝑿𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎
𝑿𝒗𝒎𝒂𝒙 + 𝑿𝒗𝒎𝒊𝒏
𝟐
𝟎𝒀𝒗𝒎𝒂𝒙 − 𝒀𝒗𝒎𝒊𝒏
𝟐𝟎
𝒀𝒗𝒎𝒂𝒙 + 𝒀𝒗𝒎𝒊𝒏
𝟐𝟎 𝟎 𝟏 𝟎𝟎 𝟎 𝟎 𝟏
Visualização 2D
Transformação Janela-Viewport (vii)
100
(comparar com a exp. (5.20) do livro, pag. 94)
![Page 101: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/101.jpg)
Vértices
Transfs. de
Modelação e
Visualização
Transformação
de Projecção
Divisão
Perspectiva
Mapeamento
Janela-Viewport
Coordenadas
do Mundo
Coordenadas
de Recorte
Coordenadas
do Dispositivo
Normalizadas
Coordenadas
da Câmara
Coordenadas
do
Dispositivo
VérticesWRC
(3D)
DC
(2D+1)
101
![Page 102: Pipeline de Visualização Câmara Virtual · 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](https://reader033.fdocumentos.tips/reader033/viewer/2022053118/609b879932bb0e67271592ab/html5/thumbnails/102.jpg)
Próxima Aula
Modelos de Iluminação e Reflexão
102