1 ≠ ) f() = T( R ( T ) )= (TR T

11  Download (0)

Testo completo

(1)

da XKCD

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

http://xkcd.com/184/

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazione intorno ad un asse parallelo all'asse z

x y

z x

y z

x y

traslazione T -1

rotazione R x

y

traslazione T 1

2

3

1. Porto il centro di rot nell'origine 2. Ruoto

3. Rimetto a posto

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazione intorno ad un asse parallelo all'asse z

x y

z x

y z

f( p ) T ( R ( T = -1 p ) )

x y

traslazione T -1

rotazione R x

y

traslazione T 1

2

3

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Composizione di trasformazioni

• Moltiplicazione matrici (vettori) ha la propretà associativa

f( p ) = T ( R ( T -1 p ) )

= (T R T -1 ) p

una matrice M 4x4 che fa tutto.

• considerazioni sull'efficienza

• cosa possiamo dire sulla forma di M ?

• cosa succede se moltiplichiamo un vettore per M ?

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Punti VS vettori

x y

z x

y

z

M

pppp M( pppp )

vvvv M( vvvv )

p p p

p = ( * , * , * , 1 ) = ( * , * , * , 1 ) = ( * , * , * , 1 ) = ( * , * , * , 1 ) punto all'angolo della casa (punto) (punto) (punto) (punto) v

v v

v = ( * , * , * , 0 ) = ( * , * , * , 0 ) = ( * , * , * , 0 ) = ( * , * , * , 0 ) velocità vettoriale del fumo (vettore) (vettore) (vettore) (vettore)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripassino

• Attenzione all'inversione: (AB) -1 = B -1 A -1

• Associativa si, ma commutativa no!

AB ≠ BA

• previsione:

determinare il corretto ordine delle trasformazioni non sarà intuitivo

x y

x y

RT TR

(2)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Cambio di frame

• tutte le transf. affini lineari si possono vedere come un cambio di frame

– comprese quelle viste:

• traslazione

• scaling (uniforme o no)

• shearing

• rotazioni

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

matrice di cambio di frame

Cambio di frame (cambio di sistema di riferimento)

• Dati due sistemi di riferimento: { v

1

, v

2

, v

3

, p

0

} { u

1

, u

2

, u

3

, q

0

}

0 3 43 2 42 1 41 0

3 33 2 32 1 31 3

3 23 2 22 1 21 2

3 13 2 12 1 11 1

p v v v q

v v v u

v v v u

v v v u

+ + +

=

+ +

=

+ +

=

+ +

=

γ γ γ

γ γ γ

γ γ γ

γ γ γ

• Esprimo uno in termini dell’altro:

p = =

coordinate di p nel primo sist. di rif.:

coordinate di p nel sec. sist. di rif.:

 

 

 

 

=

 

 

1 1 0 0 0 1

3 2 1

43 33 23 13

42 32 22 12

41 31 21 11

3 2 1

b b b

a a a

γ γ γ γ

γ γ γ γ

γ γ γ γ v 0 v 1 v 2 p 0

a

0

a

1

a

2

1

u 0 u 1 u 2 q 0 b

0

b

1

b

2

1

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

matrice di cambio di frame

Cambio di frame (cambio di sistema di riferimento) caso particlare: arrivo a sistema di riferimento canonico

• Dati due sistemi di riferimento: { v

1

, v

2

, v

3

, p

0

} { u

1

, u

2

, u

3

, q

0

}

) , , (

) , , (

) , , (

) , , (

23 22 21 0

23 22 21 3

23 22 21 2

13 12 11 1

γ γ γ

γ γ γ

γ γ γ

γ γ γ

=

=

=

=

q u u u

• Esprimo uno in termini dell’altro:

 

 

 

 

=

 

 

1 1 0 0 0 1

3 2 1

43 33 23 13

42 32 22 12

41 31 21 11

3 2 1

b b b

a a a

γ γ γ γ

γ γ γ γ

γ γ γ γ

u 1 u 2 u 3 q

p = =

coordinate di p nel primo sist. di rif.:

coordinate di p nel sec. sist. di rif.:

1 0 0

0 1 0

0 0 1

0 0 0

a

0

a

1

a

2

1

u 0 u 1 u 2 q 0 b

0

b

1

b

2

1

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

x y

z v0 v1

v2

world Coordinates

1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport

y 2

-z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x

-z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

3

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

0) transformazione di modellazione

0 1

Object Space

(analogo in 2D)

• spazio oggetto

1

spazio oggetto (“spazio macchina”) origineoooodello

spazio oggetto

x y

2 3

-1 -2

-3

assixxxxe yyyydello spazio oggetto

1 2 3

-1 -2 -3

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Object Coordinates

(analogo in 2D)

• coordinate oggetto

1.5 2.3 p = (1.5 1.5 1.5 1.5, 2.3 2.3 2.3 2.3)

spazio oggetto (“spazio macchina”)

coordinate dipppp in spazio oggetto

x y

glBegin(GL_TRIANGLES);

glVertex2d( 1.5 , 2.3 );

. . .

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

(3)

Object Coordinates

(analogo in 2D)

• coordinate mondo

1.5 2.3

p = (1.5, 2.3)

spazio oggetto (“spazio macchina”)

coordinate dipppp in spazio oggetto

x y

x y

spazio mondo

= (12.5, 8.1) 8.1

12.5

coordinate dipppp in spazio mondo

1 1

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Object Coordinates

1.5 2.3

p = (1.5, 2.3)

spazio oggetto (“spazio macchina”)

coordinate di pppp in spazio oggetto

x y

x y

spazio mondo

= (12.5, 8.1) 8.1

12.5

coordinate di pppp in spazio mondo

1 1

11 5.8

 

 

 

 

=

 

 

 

 

 

 

 

 

1 0 . 0

1 . 8

5 . 12

1 0 . 0

3 . 2 5 . 1

1 0 0 0

0 . 0 1 0 0

8 . 5 0 1 0

11 0 0 1

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Object Coordinates

p = (1.5, 2.3)

spazio oggetto:

(“spazio macchina AAAA”)

coordinate in spazio oggetto

x y

= (9.7, 4.2)

7.4

22.5

spazio oggetto:

(“spazio macchina BBBB”) coordinate in spazio mondo p = (1.5, 2.3)

= (22.5, 7.4)

9.7 1

1 4.2

spazio mondo

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Next: trasformazione di vista

x y

z v0 v1

v2

world Coordinates

1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport

y -z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x

-z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

3

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

0

0) transformazione di modellazione

1 2

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Input:

1) camera position: p

pov

2) target position: p

target

3) vettore di alto: v

up

Esempio tipico di

costruzione transformazione di vista

yyyy

zzzz 0000 xxxx sistema di riferimento globale (world frame)

v up

nb: punti e vettori espressi in spazio mondo!

p target

p pov

un esempio di descrizione completa dei parametri estrinseci della camera

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Input:

1) camera position: p

pov

2) target position: p

target

3) vettore di alto: v

up

Esempio tipico di

costruzione transformazione di vista

sistema di riferimento della camera (eye frame)

yyyy

eeee

xxxx

eeee

----zzzz

eeee

oooo

eeee

yyyy

zzzz 0000 xxxx sistema di riferimento globale (world frame)

Output:

Matrice di Trasformazione world frame → eye frame

v up

(4)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Input:

1) camera position: p

pov

2) target position: p

target

3) vettore di alto: v

up

Esempio tipico di

costruzione transformazione di vista

yyyy

eeee

xxxx

eeee

----zzzz

eeee

oooo

eeee

yyyy

zzzz 0000 xxxx

v up

Point3 o_e;

Vec3 x_e, y_e, z_e;

z_e = p_target - p_pov;

z_e = -z_e;

z_e = z_e / |z_e| ;

x_e = v_up X z_e ; x_e = x_e / |x_e| ; y_e = z_e X x_e;

yyyy

eeee

xxxx

eeee

zzzz

eeee

oooo

eeee

0 0 0 1

matrice che va da spazio vista a spazio mondo.

E’ l’inversa di quella che voelevo!

Ergo, va invertita!

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Esempio tipico di

costruzione transformazione di vista

Point3 o_e;

Vec3 x_e, y_e, z_e;

z_e = p_target - p_pov;

z_e = -z_e;

z_e = z_e / |z_e| ;

x_e = v_up X z_e ; x_e = x_e / |x_e| ; y_e = z_e X x_e;

yyyy

eeee

xxxx

eeee

zzzz

eeee

oooo

eeee

0 0 0 1

matrice che va da spazio vista a spazio mondo.

E’ l’inversa di quella che voelevo!

Ergo, va invertita!

Origine e assi del sistema vista espressi nelle coord del sistema mondo

Inverto z_e, per come e’

definito lo spazio vista (z verso osservatore)

“completamento di base”

nb: quando si fallisce? le due divisioni possono essere per 0?

quando?

normalizzaz non necessaria (perchè?)

Inversione di una rotazione (ripetiamoci)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R 0

00 11

rotazione 4x4 generica

(asse passante per origine)

R = v 0 v 1 v 2

R rotazione 3x3, cioè ortonormale a det 1, cioè v

0

v

1

v

2

:

- normali

- ortogonali a due a due

-1

dove:

= R 0

00 11

T

Inversione di una rotazione (ripetiamoci)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R v v v v v 0 0 1 1

v 2 2 =

proof (traccia):

* R =

T * v 0 v 1 v 2 I

R 0

00 11

rotazione 4x4 generica

(asse passante per origine)

-1

= R 0

00 11

T

Inversione di una traslazione (ripetiamoci)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

I t

00 11

I

00 11

matrice 4x4 di traslazione

-1

= -t

Rototraslazione (isometria)

(tutte e sole le trasformazioni rigide)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R t

00 11

= I t

00 11

R 0

00 11

*

rototraslazione (4x4)

( o isometria ) traslazione rotazione

(asse passante per origine)

(5)

Inversione di una roto-traslazione

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R t

00 11

= I t

00 11

*

-1 ( -1 =

= = … =

nb: (A B)

-1

= B

-1

A

-1

R 0

00 11 )

I -t

00 11

R 0

00 11

* R

00 11 T

R T * -t

T

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

x y

z v0 v1

v2

world Coordinates

T

v

matrice di modellazione T

m

matrice di vista T

p

matrice di proiezione T

vp

matrice di viewport

y -z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x

-z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

T vp

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

T v

T m T p

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

“Model-View matrix”

T

mv

matrice di modellazione-vista

= T

v

*T

m

T

p

matrice di proiezione T

vp

matrice di viewport

y -z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x -z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

T vp

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

T p T mv

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

“Model-View-Projection matrix”

T

mvp

matrice di

modellazione-vista-proiezione

= T

p

* T

v

*T

m

T

vp

matrice di viewport

y x

-z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

T vp

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

T p T mvp

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene composite (gerarchicamente)

sist coord macchina

sist coord ruota

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rendering di scene composite

spazio

mondo

(globale)

spazio oggetto

ruota 1

spazio oggetto

automobile

(6)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graph

V

M

0

M

1

M

2

M

3

M

4

M

5

M

6

posizonamento della automobile (rispetto al mondo) posiz. della

ruota (rispetto

all’

automobile)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graph

V

M

0

M

1

M

2

M

3

M

4

M

5

M

6 spazio mondo spazio

vista

spazio auto 1

spazio

auto 2 spazio

auto 3

spazio ruota A spazio

ruota B spazio ruotaC spazio

ruotaD

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Stack di matrici di model-view!

I * V M

I * V * M 0 I V M 0 M 4

Stack di matrici di model-view!

• Matrice in testa allo stack = model-view corrente

• Operazioni che servono:

1. sovrascrivere identità nella matrice in testa

• x inizializzazione!

2. moltiplicare matrice-in-testa per 1 matrice data

• nb: si moltiplica a destra: M

[top]

= M

[top]

* M

new

• dunque: “ultima cosa che faccio, 1ma cosa che avviene”

3. push

• (replicare matrice in testa in nuovo livello)

• x quando scendo di un livello!

• (“salva” la matrice corrente) 4. pop

• (scartare la matrice in testa)

• x quando salgo di livello!

• “recupera la matrice corrente

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graph

V

M

0

M

1

M

2

M

3

M

4

M

5

M

6

setIdentity mult(V) push

mult(M0)

drawMacchina(Red);

push mult(M3) drawRouta pop push

mult(M4) drawRuota pop

pop push

mult(M1)

drawMacchina(Green);

pop mult(Traslaz…)

mult(Rotaz…) mult(Scale…) oppure molte, per es

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Model view:

spesso ottenuta come composizione di transf

• Procedura disegna_pupazzo_di_neve – Disegna cerchio unitario // corpo – Trasla di (0,2)

– Disegna cerchio unitario // testa – (undo trasla)

– END

3

1 2 3

1

2

(7)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Model view:

spesso ottenuta come composizione di transf

• Procedura disegna_pupazzo_di_neve – Disegna cerchio unitario // corpo – Trasla di (0,2)

– Disegna cerchio unitario // testa – (undo trasla)

– END

• Main – Scala di (2,2)

– disegna_pupazzo_di_neve:

• Disegna cerchio unitario

• Trasla di (0,2)

• Disegna cerchio unitario

• (undo trasla)

3

1 2 3 1 2 4 5 6

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Un trucco

M

0

M

1

M

2

M

3

M

4

M

5

M

6

M

9

photocamera montata sull’automobile

posizonamento della camera (rispetto all’automobile) spazio

mondo

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Un trucco

V

M

0

M

1

M

2

M

3

M

4

M

5

M

6

M

9

photocamera montata sull’automobile

posizonamento della camera (rispetto all’automobile) spazio

mondo spazio

vista

= ( M

2

M

9

)

-1

= M

9-1

M

2-1

Un trucco: morale

la trasformaz di modellazione modellazione modellazione modellazione necessaria per piazzare un oggetto oggetto oggetto oggetto in una certa pos

è l’inversa

della trasformaz di vista vista vista vista necessaria per piazzare la camera camera camera camera in quella pos

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Un altro modo ancora per definire la matrice di vista una semplice “Trackball”:

una semplice “Trackball”:

una semplice “Trackball”:

una semplice “Trackball”:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

phi theta

z -x

y

Un semplice esempio di trackball

• Interfaccia base per selezionare un punto di vista

• Due angoli (phi e theta) + distanza (ro) – (es mappati su assi X Y mouse + mousewheel)

• Utile per visualizzare un piccolo oggetto – permettere alla camera di ruotargli intorno

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

setIdentity

mult( translation(0,0,-ro) )

mult( rotationX (-theta) )

mult( rotationY (-phi) )

(8)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Next: trasformazione di proiezione

x y

z v0 v1

v2

world Coordinates

1

1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport

y -z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x -z

v0

v1

v2

v0

v2

v1

v0 v1

v2

screen Space

3

Normalized Device Coordinates 1

1 -1 -1

x

x y

z v0

v1

v2

object Coordinates

0

0) transformazione di modellazione

2

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di proiezione

• Prima o poi dovremo farlo: da 3D a 2D !

y 2

-z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

y x -z

v0

v1

v2

v0

v2

v1

normalized projected coordinates 1

1 -1 -1

x

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di proiezione

• Vecchio problema:

– (in arte, architettura progettazione)

• come riportare

– su un piano (immagine 2D) – oggetti 3D

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di proiezione

• Modo 1:

– facile: togliamo una coordinata – cioe’ azzeriamo la z

– matrice corrisponente:

 

 

 

 

=

0 0 0 0

0 0 0 0

0 0 1 0

0 0 0 1 P Z

Inversa?

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di proiezione

• E' una proiezione ortogonale

– non c'è prospettiva – simula:

• il punto di vista all'infinito

• con un binocolo mooolto potente – direzioni di vista costanti su tutta

la scena

– Più una scalatura non uniforme

• causa aspect ratio aaaa del ViewPort (e.g. monitor / della finestra!)

• Compensa la scalatura non uniforme della trasformaz di ViewPort

 

 

 

 

=

0 0 0 0

0 0 0 0

0 0 1 0

0 0 0 1 P Z a

a ViewPort_Width

= --- ViewPort_Height

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trovare le differenze...

(9)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trovare le differenze...

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Come si svolge fisicamente il processo:

• Occhio o macchina fotografica il concetto è lo stesso:

lenti

CCD o pellicola

(2D screen buffer)

lenti retina

(2D screen buffer)

distanza

focale distanza

focale

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Nostro modello semplificato:

• pin-hole camera

distanza focale

-x y

-z

image

plane

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Nostro modello semplificato:

nota: nnnniente lenti iente lenti iente lenti iente lenti

– le lenti servivano a "simulare" una pin-hole camera – non modellandole,

ci siamo giocati (per ora) i "difetti" di questa simulazione:

• range di fuoco finito

• flares

• distorsioni radiali

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Matematicamente

y

-z

distanza focale d

image plane

centro di proiezione (origine)

x

) , , ( x y z

) , , ( x

p

y

p

z

p

 

 

 =

 

z y x k z y x

p p p

Nota:

non è lineare né affine;

non è reversibile.

non mantiene: rapporto fra distanze colineari (ma mantiene: colinearità)

con k t.c. z

p

= − d

z d k = − /

quindi…

 

 

 =

 

d z dy

z dx

z y x

p p p

/ / e

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Estendiamo la notazione

• Esprimo i punti anche con la notazione

0

con ≠

 

 

= w

w wz wy wx p

 

 

w wz wy wx

 

 

 

 

1 z y x divisione per

4ta comp

anche detta normalizzazione affine

(10)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Estendiamo la notazione

• Per es:

 

 

10 30 10 20

 

 

1 3 1 2

 

 

1 . 0

3 . 0

1 . 0

2 . 0

 

 

2 6 2

4 sono le

coordinate coordinate coordinate coordinate omogene omogene omogene omogene

del punto punto punto punto che ha le seguenti coordinate coordinate coordinate

coordinate cartesiane cartesiane cartesiane cartesiane   

 

3 1 2

 

 

 

 

0 3 1

2 sono le

coordinate coordinate coordinate coordinate omogene omogene omogene omogene del vettore vettore vettore vettoreche ha le

seguenti coordinate coordinate coordinate

coordinate cartesiane cartesiane cartesiane cartesiane   

 

3 1 2

punto punto punto punto

vettore vettore vettore vettore queste

sono in

“forma normale”

( w = 1 )

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Coordinate omogenee

• Il punto P di coordinate cartesiane (x,y,z) è rappresentato in coordinate omogenee come (xw,yw,zw , w), con w qualunque (ma non 0)

• Due punti di coordinate (x, y, z, w) e (x′, y′, z′, w′) possono rappresentano lo stesso punto dello spazio;

– [quando?]

• Quando w = 1 (forma canonica ) le coord cartesiane coincidono con le prime tre coord omogenee.

• Con (x, y, z, w ≠ 0) si rappresentano punti , con (x, y, z, 0) si rappresentano vettori.

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Proiezione prospettica

 

 

=

0 / 1 0 0

0 1 0 0

0 0 1 0

0 0 0 1

d P

 

 

 

 

=

 

 

 

 

d z

z y x

z y x

/ 1 P

 

 

 

 

1 / /

d d z

y d z

x divisione per

4ta comp

matrice di trasformazione per la proiezione prospettica:

In realtà.

la 3 e 4 si lasciano invariate…

i valori (originali) ci saranno utili !

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

In realtà non si scarta la terza dimensione:

ci servirà

y P

-z

v0

v1

v2

view Coordinates (a.k.a. eye Coordinates)

x

normalizzazione affine

y

z

x

coordinate proiettate e normalizzate (affine) [ancora 3D!]

Moltiplicazione per la matrice di

proiezione

La parte visibile casca in [[[[----1,1] x [ 1,1] x [ 1,1] x [ 1,1] x [----1,1] x [ 1,1] x [ 1,1] x [ 1,1] x [----1,1] 1,1] 1,1] 1,1]

quindi dette anche

"Normalized Device Coordinates"

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Proiezione Prospettica: che effetto fa

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Proiezione Prospettica: che effetto fa

d infinito

(diventa una proiezione ortogonale)

d piccolo d grande

 

 

 

 

=

0 / 1 0 0

0 1 0 0

0 0 1 0

0 0 0 1

d P Più distorsione

prospettica.

Effetto "fish-eye"

(grandangolo)

Proporzioni più mantenute Effetto "zoom"

(eg. vista dal

satellite)

(11)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Considerazione

traslazione rotazione scalatura uniforme scalatura non uniforme shearing

proiezione ortigonale trasf. affine generica proiezione prospettica (+ rinormalizzazione)

lu ng he zz e

(isometrie)

ra pp or ti lu ng he zz e su u na li ne a

an go li

(transf. conformali)

co lin ea ril tà

V VV V V VV V X XX X X XX X X XX X X XX X X XX X X XX X

V VV V V VV V V VV V X XX X X XX X X XX X X XX X X XX X

V VV V V VV V V VV V V VV V V VV V V VV V V VV V X XX X

V

VV

V V

VV

V V

VV

V V

VV V

V

VV

V V

VV

V V

VV V

V

VV

V

figura

Updating...

Riferimenti

Argomenti correlati :