pipeline de visualização câmara virtual · definir planos de recorte • paralelos ao plano de...

102
Pipeline de Visualização Câmara Virtual 1

Upload: others

Post on 20-Dec-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Projecções Geométricas Planas

• Determinada pelo centro de projecção (CDP)

• Os raios projectores são convergentes

A

B

CDP

Raios

Projectores

Plano de

Projecção

• Determinada por direcção de projecção

• Os raios projectores paralelos entre si

A

B

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

𝑁𝑜𝑟𝑡 =

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

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

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

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

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

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

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

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

𝑌𝑝 =𝑑

𝑍𝑣𝑌𝑣𝑋𝑝 =

𝑑

𝑍𝑣𝑋𝑣 𝑍𝑝 = 𝑑

𝑋𝑝𝑋𝑣

=𝑑

𝑍𝑣

𝑌𝑝𝑌𝑣

=𝑑

𝑍𝑣

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

𝑇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

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

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

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

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

Próxima Aula

Modelos de Iluminação e Reflexão

102