Top Banner
1 Controllare la prospettiva Daniele Marini
25

Controllare la prospettiva

Feb 05, 2016

Download

Documents

Camila Quezada

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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