• Non ci sono risultati.

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
11
0
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

Riferimenti

Documenti correlati

Obblighi dei lavoratori (art. Ciascuno dei lavoratori deve prendersi cura della propria salute e sicurezza e di quella delle altre persone presenti sul luogo di lavoro, su cui

La finitura delle facciate esterne sarà realizzata con intonaco minerale colorato e dove previsto dalle tavole di progetto, saranno realizzati rivestimenti decorativi in

[r]

parete Vision cieca a fasce orizzontali/ Vision solid partition wall with horizontal modules contenitore Programma 3/ Programma 3 storage units.. — 012

L’ISREC Lucca, insieme alla rete toscana degli Istituti storici della Resistenza e dell’età Contemporanea e con il patrocinio della Regione Toscana ha preparato dieci

Affidamento diretto incarico per indagine Geologica, modellazione geotecnica e caratterizzazione sismica per la costruzione di un campo polivalente da realizzare a

La selezione dei candidati (anche di un solo candidato qualora vi sia una sola domanda pervenuta) sarà effettuata da una Commissione composta da tre membri. Le funzioni di

(tequila, vodka, rum bianco, triple sec, gin, succo di limone, sciroppo di zucchero,