Controllare la prospettiva

25
1 Controllare la prospettiva Daniele Marini

description

Controllare la prospettiva. Daniele Marini. Prospettiva canonica. Camera frame orientato come il world frame Asse ottico coincidente con asse z, entrante nell’obiettivo - PowerPoint PPT Presentation

Transcript of Controllare la prospettiva

Page 1: Controllare la prospettiva

1

Controllare la prospettiva

Daniele Marini

Page 2: Controllare la prospettiva

2

Prospettiva canonica

• Camera frame orientato come il world frame

• Asse ottico coincidente con asse z, entrante nell’obiettivo

• Per portare una scena nella configurazione canonica è necessaria una catena di trasformazioni da applicare conoscendo i parametri principali

Page 3: Controllare la prospettiva

3

I parametri di controllo

• PRP Projection Reference Point (COP)

• View Plane

• VPN View Plane Normal

• VUP View UP

• DOP Direction of Projection

• VRP View Reference Point

• CW center of the window

Page 4: Controllare la prospettiva

4

Orientare il piano di proiezione

Page 5: Controllare la prospettiva

5

Definire la viewport e la window

Page 6: Controllare la prospettiva

6

Definire il centro di proiezione

Page 7: Controllare la prospettiva

7

Se la proiezione è parallela

Page 8: Controllare la prospettiva

8

• Dati VPN, VUP si ottiene la view orientation view orientation matrixmatrix V

• La forma della V è: V=TR con T traslazione nel VRP, R rotazione opportuna per orientare la view rispetto alla configurazione canonica

Trasformazioni normalizzateTrasformazioni normalizzate

Page 9: Controllare la prospettiva

9

Altri schemi

• Lo schema illustrato è tipico delle librerie PHIGS, GKS 3D

• OpenGl offre un altro approccio: lookAt

• Nei simulatori di volo si adotta lo schema “roll, pitch, yaw”

Page 10: Controllare la prospettiva

10

LookAt

• E’ un metodo più diretto e più naturale: – la camera è localizzata in un punto e (eypoint - o punto di

vista) specificato nel world frame– La camera è orientata nella direzione individuata dal

vettore congiungente e con il punto a (at point - punto osservato)

• I punti e ed a individuano il VRP e la VPN

gluLookAt(eyex, eyey, eyez, aty, atx, atz, upx, upy, upz);

Page 11: Controllare la prospettiva

11

Page 12: Controllare la prospettiva

12

Roll, pitch, yaw

Page 13: Controllare la prospettiva

13

Matrice canonica di trasformazione prospettica

M =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 1/d 0

⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥

p =

x

y

z

1

⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥

*M = q =

x

y

z

z /d

⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥

Page 14: Controllare la prospettiva

14

Dalle coordinate omogenee allo spazio 3D

xp =xz/d

yp =yz/d

zp =zz/d

=d

Page 15: Controllare la prospettiva

15

Matrice canonica di trasformazione ortogonale

M=

1 0 0 0

0 1 0 0

0 0 0 0

0 0 0 1

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

p=

x

y

z

1

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

* M=q=

x

y

0

1

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

Page 16: Controllare la prospettiva

16

Angolo di visione e frustum

Page 17: Controllare la prospettiva

17

Funzioni di OpenGLglFrustum(xmin, xmax, ymin, ymax, near, far);

gluPerspective(fovy, aspect, near, far);Aspect = larghezza/altezza della windowFov:

Page 18: Controllare la prospettiva

18

Funzioni di OpenGL - proiezione parallela

glOrtho(xmin, xmax, ymin, ymax, near, far);

near e far possono essere anche negativi: non c’e’ divisione per 0

Page 19: Controllare la prospettiva

19

Proiezione parallela generica

• Ricondursi alla configurazione canonica: normalizzazione– Convertire il volume di vista in una configurazione standard:

costruzione della matrice di proiezione: opera in “window coordinates” (comprendono z)

– Proiettare il volume deformato

• Il volume canonico

per la proiezione parallela

è normalizzato in -1,+1

Page 20: Controllare la prospettiva

20

glOrtho(xmin, xmax, ymin, ymax, near, far);

P =ST=

2xmax−xmin

0 0 −xmax+xminxmax−xmin

02

ymax−ymin0 −

ymax+yminymax−ymin

0 02

zmax−zmin−zmax+zminzmax−zmin

0 0 0 1

⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥

Page 21: Controllare la prospettiva

21

• Trasla origine del view volume nell’origine del view volume canonico• Riscala il view volume• P è la matrice di proiezione• zmax = far• zmin = near• completata la trasformazione si può chiamare la glOrtho

Page 22: Controllare la prospettiva

22

Proiezioni parallele oblique

Angoli del fascio di proiettori con la normale al piano di proiezione

Page 23: Controllare la prospettiva

23

Trasformazione di shear

H =

1 0 −cotθ 0

0 1 −cotφ 0

0 0 1 0

0 0 0 1

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

P =MorthoSTH(θ,φ)

Page 24: Controllare la prospettiva

24

Prospettiva generica

• Creare la matrice di normalizzazione

• Deformare lo spazio

• Proiettare in modo ortografico

Page 25: Controllare la prospettiva

25

N =

1 0 0 0

0 1 0 0

0 0zmax+zminzmax−zmin

2zmax* zminzmax−zmin

0 0 −1 0

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

P =MorthoN

Mortho=

1 0 0 0

0 1 0 0

0 0 0 0

0 0 0 1

⎢ ⎢ ⎢ ⎢ ⎢

⎥ ⎥ ⎥ ⎥ ⎥

Ai punti trasformati occorre applicare la divisione