computer graphics - vcgvcg.isti.cnr.it/~tarini/teaching/cg11/lez05.transform.pdf · 2012. 3....

18
1 Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12 Lezione 5: Lezione 5: Lezione 5: Lezione 5: la T in T la T in T la T in T la T in T&L &L &L &L 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 1 / 1 2 U n i v e r s i t à d e l l ’ I n s u b r i a frammenti (candidati pixels) Riassunto puntate precedenti 3/3 Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento z y x v0 v1 v2 set- up v0 v1 v2 rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice noi siamo qui 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 1 / 1 2 U n i v e r s i t à d e l l ’ I n s u b r i a Transform z y x v0 v1 v2 v0 v1 v2 world Coordinates screen Coordinates Per ogni vertice: ? 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 1 / 1 2 U n i v e r s i t à d e l l ’ I n s u b r i a Transform (Tizio) (Caio) visto da Tizio visto da Caio dipende dalla posiz della "camera” (macchina fotografica) detta anche: pos del viewer eye position PoV (Point of View) 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 1 / 1 2 U n i v e r s i t à d e l l ’ I n s u b r i a q = (p) v = (u) Trasformazioni geometriche (in generale) Funzioni che – prendono un punto / un vettore – lo mappano in un altro punto / vettore Ora, un ripassino di geometria... p f f f f q f 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 1 / 1 2 U n i v e r s i t à d e l l ’ I n s u b r i a Transform z y x v0 v1 v2 world Coordinates Strategia: 1) "transformazione di vista": portare la scena davanti alla camera e non viceversa ;-) 1 y x -z v0 v1 v2 view Coordinates (a.k.a. eye Coordinates) Bene... ora la geometria e' espressa in un sistema di coordianate in cui: lo zero è il centro di proiezione (l'obiettivo della camera) la camera guarda verso -z y è verso l'alto, e x e verso destra (rispetto al fotografo) -necessario sapere i parametri estrinseci della "camera virtuale" - posizione - orientamento

Upload: others

Post on 07-Dec-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

1

Computer Graphics

Marco Tarini

Università dell’Insubria

Facoltà di Scienze MFN di Varese

Corso di Laurea in Informatica

Anno Accademico 2011/12

Lezione 5:Lezione 5:Lezione 5:Lezione 5: la T in Tla T in Tla T in Tla T in T&L&L&L&L

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

fram

men

ti(c

andi

dati

pixe

ls)

Riassunto puntate precedenti 3/3

Verti

ci

(pun

ti in

R3 ) pixel

finali(nello

screen-buffer)

Verti

cipr

oiet

tati

(pun

ti in

R2 )

Z

rasterizer triangoli

com

puta

zion

ipe

r fra

mm

ento

z

y

x

v0 v1

v2

set-up

v0 v1

v2

rasterizersegmenti

set-up

rasterizerpunti

set-up

com

puta

zion

ipe

r ver

tice

noi siamo qui

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

z

y

x

v0 v1

v2

v0 v1

v2

world Coordinates screen Coordinates

• Per ogni vertice:

?

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

(Tizio)(Caio) visto da Tizio visto da Caio

• dipende dalla posiz della "camera” (macchina fotografica)– detta anche:

– pos del viewer – eye position– PoV (Point of View)

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

q = (p)v = (u)

Trasformazioni geometriche (in generale)

• Funzioni che– prendono

un punto / un vettore– lo mappano in un altro

punto / vettore

Ora, un ripassino di geometria...

p

f

f

f

f

q

f

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

z

y

x

v0v1

v2

world Coordinates

• Strategia:1) "transformazione di vista":

portare la scena davanti alla camera• e non viceversa ;-)

1y

x

-zv0

v1

v2

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

Bene...ora la geometria e' espressa in un sistema di coordianate in cui:• lo zero è il centro di proiezione (l'obiettivo della camera)• la camera guarda verso -z• y è verso l'alto, e x e verso destra (rispetto al fotografo)

-necessario sapere i parametri estrinseci della "camera virtuale"

- posizione- orientamento

Page 2: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

• :"trasformazione di vista":portare la scena davanti alla camera

1) Trasformazione di vista

sistema di riferimentodella camera(eye coords)

yyyyeeee

xxxxeeee

----zzzze e e e OOOOe e e e yyyy

xxxxzzzz

0000

sistema di riferimentodel mondo(world coords) è un cambio di sistema di riferimento

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

1) Trasformazione di vista

• La posso ottenere con una serie di– traslazioni– rotazioni

• La posso vedere come un cambio di sistema di riferimento

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

1

-11

-1

Transform

z

y

x

v0v1

v2

world Coordinates

1

• Strategia:1) "transformazione di vista":

portare la scena davanti alla camera2) "transformazione di proiezione":

proietta la geometria sul piano di proiezione

2y

-zv0

v1

v2

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

y-x

-zv0

v1

v2

v0

v2

v1

normalized projectedcoordinates

x

- necessario sapere i parametri intrinseci della "camera virtuale"- in particolare, la lunghezza focale

- questa trasformazione è la resposnabile della distorsione prospettica- "le cose più lontane appaiono più piccole"

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

z

y

x

v0v1

v2

world Coordinates

1

• Strategia:1) "transformazione di vista":

portare la scena davanti alla camera2) "transformazione di proiezione":

proietta la geometria sul piano di proiezione3) " transformazione di viewport":

da [-1,+1]2 a [0..resx]x[0..resy] (pixels)

2y

-zv0

v1

v2

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

y-x

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

3

normalized projectedcoordinates

1

-11

-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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

z

Object Coordinates

• Dare ad ogni oggetto il suo sistema di coordiante privato: il suo Object CoordinatesObject CoordinatesObject CoordinatesObject Coordinates;

y

yy

y

x

xx

x

z

z

z

z

y

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Object Coordinates

• Dare ad ogni oggetto il suo sistema di coordiante privato: il suo Object CoordinatesObject CoordinatesObject CoordinatesObject Coordinates;

• Durante il transform, prima di tutto portare ogni oggetto nello sist di coordinate comuni:

da Object CoordinatesObject CoordinatesObject CoordinatesObject Coordinates a World CoordiantesWorld CoordiantesWorld CoordiantesWorld Coordiantes

– consente di riutilizzare lo stesso modello più volte nella stessa scena– ogni volta, stesse object coordinates,

ma una trasformazione ("di modellazione") diversa per arrivare a World Coordinates diverse

– Es: ruote di una macchina (4 volte l'istanza di una ruota)alberi, case, sedie in una stanza, pedoni su una scacchiera...

Page 3: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Transform

z

y

x

v0v1

v2

world Coordinates

1

1) transformazione di vista2) transformazione di proiezione3) transformazione di viewport

2y

-zv0

v1

v2

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

y-x

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

3

normalized projectedcoordinates

1

-11

-1

x

z

y

x

v0

v1

v2

object Coordinates

0

0) transformazione di modellazione

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

q = (p)v = (u)

Trasformazioni geometriche (in generale)

• Funzioni che– prendono

un punto / un vettore– lo mappano in un altro

punto / vettore

Ora, un ripassino di geometria...

p

f

f

f

f

q

f

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Spazio vettoriale

• Due entità:– scalari– vettori

• Operazioni– somma e prodotto tra scalari (ovviamente)

– somma fra vettori– prodotto vettore x scalare → vettore

(commutativo)

(lo spazio vettoriale e' chiuso rispetto a: somma vettoriale e al prodotto con scalari)

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Operazioni aggiuntive fra vettori in R3

• Prodotto scalare (fra vettori)– aka prodotto dot (dot-product, o inner-product)– vettore xxxx vettore → scalare

• Prodotto vettoriale (fra vettori)– aka prodotto cross (cross-product, X-product)– aka prodotto esterno– vettore xxxx vettore → vettore

• Norma– vettore → scalare

• Normalizzazione– 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripasso: prodotto scalare e vettoriale

• Prodotto Scalare ("dot-product", "inner product"):vettore x vettore → scalare

)()()(

)(

vuvuvu

wvwuwvu

uvvu

⋅=⋅=⋅

⋅+⋅=⋅+

⋅=⋅

ααα

commutalineare 1/2lineare 2/2

Proprietà

zzyyxxzyxzyx βαβαβαβββααα ++=⋅ ),,(),,(

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripasso: prodotto scalare e vettoriale

• Prodotto Scalare ("dot-product", "inner product"):vettore x vettore → scalare

( ) ( )

)0,0,0(0 =⇔=⋅

−⋅−=−

⋅=

vvv

QPQPQP

vvv

e anche:

quindi, per calcolare una distanza tra punti:

per il modulo:

Proprietà

zzyyxxzyxzyx βαβαβαβββααα ++=⋅ ),,(),,(

Page 4: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripasso: prodotto scalare e vettoriale

• Prodotto Scalare ("dot-product", "inner product"):vettore x vettore → scalare

zzyyxxzyxzyx βαβαβαβββααα ++=⋅ ),,(),,(

θ

θ

cos

0

cos

=⋅

⇔=⋅

=⋅

vu

vuvu

vuvu

e ortogonali

Proprietà

e, se u e v

sono normalizzati:

quindi se u e v

non sono nulli:

molto utilmente:

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripasso: prodotto scalare e vettoriale

• Prodotto Vettoriale ("cross-product", "external product"):vettore x vettore → vettore

0)()(

)(

=⋅×=⋅×

×−=×

uvuvvu

uvvu

Proprietà

il risultato è ortogonalead entrambigli operandi:

non commuta:

xyyx

zxxz

yzzy

zyxzyx

βαβα

βαβα

βαβα

βββααα ),,(),,(

u

v

uxv

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Ripasso: prodotto scalare e vettoriale

• Prodotto Vettoriale ("cross-product", "external product"):vettore x vettore → vettore

Proprietà

xyyx

zxxz

yzzy

zyxzyx

βαβα

βαβα

βαβα

βββααα ),,(),,(

θ

θ

sen

0

sen

⇔=×

vu

vuvu

vuvu

e allineati

e, se u e v

sono normalizzati:

quindi se u e v

non sono nulli:

molto utilmente:

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Spazio affine

• Tre entità – scalari– vettori – punti

attributi:lunghezza, direzione

unico attributo:la posizione,rispetto ad un

sistema di riferimento

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Spazio affine

• Tre entità – scalari– vettori – punti

• Operazioni:– Eredita dallo (è uno) spazio vettoriale:

• Somma e prodotto tra scalari• Moltiplicazione (scalare ,,,, vettore )→ vettore• Somma (vettore ,,,, vettore) → vettore

– Somma (punto ,,,, vettore ) → punto– Sottrazione (punto ,,,, punto) → 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Sistema di riferimento ( frame )

• Definito da – un punto base (origine) p0– e una base vettoriale { v0 , v1 , v2 }

• Posso esprimere (univocamente) ogni puntopuntopuntopunto p come:p = v0 η0 + v1 η1 + v2 η2 + p0

coordinate omogenee di p

lin indip

• cioè: p = v0 v1 v2 p0

η0η1η21

Page 5: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

5

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Sistema di riferimento ( frame )

• Definito da – un punto base (origine) p0– e una base vettoriale { v0 , v1 , v2 }

• Posso esprimere (univocamente) ogni vettorevettorevettorevettore v come:v = v0 η0 + v1 η1 + v2 η2 + p0

coordinate omogenee di p• cioè: v = v0 v1 v2 p0

η0η1η20

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Sistema di riferimento ( frame )

• Un frame può essere:– ortogonale

(se i vettori della base lo sono fra loro)– ortonormale

(se i vettori della base sono ortogonali e normali)

• Frame canonico: – matrice identità

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Frame sinistrorso e detrorso

• Un sistema di riferimento ortogonale può essere immaginato sinistrorso o destrorso

sinistrorso destrorso

zyx =×

• Ricordiamoci di usare la STESSA MANOper il prodotto cross

zyx =×

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rappresentazione di punti e vettoriin coordinate omogenee

=

1

3

2

1

α

α

α

p

=

0

3

2

1

δ

δ

δ

a

Punti Vettori

1 0

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

q = (p)v = (u)

Trasformazioni

• Funzioni che prendono un punto (o un vettore)e lo mappano in un altro punto (o vettore)– lavorano in coord

omogenee– ci interessano

trasformazioni che siano lineari:

p

f

f

f

f

q

f

)()()( 1010 vfvfvvf βαβα +=+ (coi vettori)

)()()( vfpfvpf αα +=+ (coi punti)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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazioni Affini

• Sono lineari e dunque preservano: – la colinearità

• tutti i punti inizialmente su una linea giacciono ancora su di una linea dopo la trasformazione

e anche– i rapporti tra le distanze

• il punto di mezzo di un segmento rimane il punto di mezzo di un segmento anche dopo la trasformazione.

in generale non in generale non in generale non in generale non preservano:preservano:preservano:preservano:

distanze, angoli, aree

se lo fanno, le chiamiamo

“trasf. Rigide”o

“isometrie”

Page 6: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazioni Affini

• Si possono esprimere come moltiplicazione con matrice

sempre

=

110001

3

2

1

34333231

24232221

14131211

3

2

1

γ

γ

γ

αααα

αααα

αααα

γ

γ

γ

f

coordinate omogenee punto di partenza

=

1

3

2

1

δ

δ

δ

coordinate omogenee punto di arrivo

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

conta solo questo

Trasformazioni Affini

• Caso vettori

sempre

=

110001

3

2

1

34333231

24232221

14131211

3

2

1

γ

γ

γ

αααα

αααα

αααα

γ

γ

γ

f

coordinate omogenee vettore di partenza

=

1

3

2

1

δ

δ

δ

coordinate omogenee vettore di arrivo

0000 ............0000 0000

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Esempio: trasformazione di traslazione rigida

+

=

011

z

y

x

z

y

x

z

y

x

α

α

α

=

11000

100

010

001

1

z

y

x

z

y

x

fz

y

x

α

α

α

posso riscriverla come:

e cioè:

+

+

+

=

11

z

y

x

z

y

x

z

y

x

α

α

vettore di 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di Traslazione rigida

l'inversa è ovviamente:

=

1000

100

010

001

),,(z

y

x

zyxα

α

α

αααT

=−−−=−

1000

100

010

001

),,(),,(1

z

y

x

zyxzyxα

α

α

αααααα TT

matrice di 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di Traslazione rigida

cosa succede se la applico ad un vettore ?

=

11000

100

010

001

0

z

y

x

z

y

x

fz

y

x

α

α

α

0000 0000

=

0

z

y

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

)(γS

matrice di scalingmatrice di scalingmatrice di scalingmatrice di scaling

Trasformazione di Scalatura uniforme

x

y

x

y

=

11

z

y

x

z

y

x

γ

γ

=

11000

000

000

000

1

z

y

x

z

y

x

γ

γ

Page 7: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di Scalatura generica

x

y

x

y

=

11

z

y

x

z

y

x

fz

y

x

γ

γ

γ

),,( zyx γγγS

matrice di scalingmatrice di scalingmatrice di scalingmatrice di scaling

=

11000

000

000

000

1

z

y

x

z

y

x

fz

y

x

γ

γ

γ

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di Scalatura generica

x

y

x

y

nota: la scalatura applicata ai punti "scala" anche la distanza dall'origine

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di Scalatura generica

• Osservazioni:– Fattori di scala inferiori a 1 avvicinano l’oggetto al

punto fisso di riferimento (origine)– Fattori di scala maggiori di 1 lo allontanano– Se sx ≠ sy o sy ≠ sz le proporzioni dell’oggetto non

sono mantenute (scalatura non uniforme, oanisotropica)

– Se sx = sy = sz le proporzioni sono mantenute e si ha una scalatura uniforme (o isotropica)

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Shearing

• Lo spostamento proporzionale alla pos y

=

=′

=′

+=′

1000

0100

0010

00cot1

)(

cot

θ

θ

θ

xyH

zz

yy

yxx

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazione attorno all'asse z

(x’,y’)

(x,y)

x

y

z

φρ

φρ

sin

cos

=

=

y

xpartenza:

)sin(

)cos(

θφρ

θφρ

+=′

+=′

y

xarrivo:

ρ

φ

θ

θθ

θθ

cossin

sincos

yx

yx

+=

−=

θφρθφρ

θφρθφρ

cossinsincos

sinsincoscos

+=

−=

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazione attorno all'asse z

(x’,y’)

(x,y)

x

y

φ

θ

θθ

θθ

cossin'

sincos

yxy

yxx

+=

−=′

=

1000

0100

00cossin

00sin-cos

)(θθ

θθ

θZR

+=

=

1

cossin

sin-cos

1

)(

1

z

yx

yx

z

y

x

Rz

y

x

Z

θθ

θθ

θ

Page 8: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazione attorno all'asse x, y, o z

=

1000

0100

00cossin

00sin-cos

)(θθ

θθ

θZR

=

1000

0cossin0

0sin-cos0

0001

)(θθ

θθθXR

=

1000

0cos0sin-

0010

0sin0cos

)(θθ

θθ

θYR

e le inverse?T1 )()()( θθθ

XXXRRR =−=−

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rotazioni generiche

• Una rotazione generica è definita da: – angolo u, – asse v– punto di applicazione pf

• come si fa?

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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 T1

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 1 / 1 2 ‧ 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 T1

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 1 / 1 2 ‧ 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 ?

Page 9: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ 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

zx

y

z

MppppM( 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 1 / 1 2 ‧ 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-1A-1

• Associativa si, ma commutativa no!AB ≠ BA

• previsione: determinare il corretto ordine delle trasformazioni non sarà intuitivo

x

y

x

y

RT TR

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 1 / 1 2 ‧ 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

matrice di cambiodi frame

Cambio di frame (cambio di sistema di riferimento)

• Dati due sistemi di riferimento: { } { }03210321 ,,,,,, quuupvvv

03432421410

3332321313

3232221212

3132121111

pvvvq

vvvu

vvvu

vvvu

+++=

++=

++=

++=

γγγ

γγγ

γγγ

γγγ

• Esprimo uno in termini dell’altro:

p = =

coordinate di p nel primo sist. di rif.:

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

=

110001

3

2

1

43332313

42322212

41312111

3

2

1

b

b

b

a

a

a

γγγγ

γγγγ

γγγγ

v0 v1 v2 p0

a0

a1

a2

1

u0 u1 u2 q0

b0

b1

b2

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

matrice di cambiodi frame

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

• Dati due sistemi di riferimento: { } { }03210321 ,,,,,, quuupvvv

),,(

),,(

),,(

),,(

2322210

2322213

2322212

1312111

γγγ

γγγ

γγγ

γγγ

=

=

=

=

q

u

u

u

• Esprimo uno in termini dell’altro:

=

110001

3

2

1

43332313

42322212

41312111

3

2

1

b

b

b

a

a

a

γγγγ

γγγγ

γγγγ

u1 u2 u3 q

p = =

coordinate di p nel primo sist. di rif.:

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

100

010

001

000

a0

a1

a2

1

u0 u1 u2 q0

b0

b1

b2

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 1 / 1 2 ‧ 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

v0v1

v2

world Coordinates

1) transformazione di vista2) transformazione di proiezione3) transformazione di viewport

2y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

3

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

0) transformazione di modellazione

0

1

Page 10: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

10

Object Space (analogo in 2D)

• spazio oggetto

1

spazio oggetto(“spazio macchina”)

origine oooo dellospazio oggetto

x

y

2 3-1-2

-3

assi xxxx e yyyy dellospazio 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 1 / 1 2 ‧ 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.3p = (1.51.51.51.5, 2.32.32.32.3)

spazio oggetto(“spazio macchina”)

coordinate di ppppin 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 1 / 1 2 ‧ 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 mondo

1.5

2.3p = (1.5, 2.3)

spazio oggetto(“spazio macchina”)

coordinate di ppppin spazio oggetto

x

y

x

y

spazio mondo

= (12.5, 8.1)8.1

12.5

coordinate di ppppin 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 1 / 1 2 ‧ 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.3p = (1.5, 2.3)

spazio oggetto(“spazio macchina”)

coordinate di ppppin spazio oggetto

x

y

x

y

spazio mondo

= (12.5, 8.1)8.1

12.5

coordinate di ppppin spazio mondo

1

1

11

5.8

=

1

0.0

1.8

5.12

1

0.0

3.2

5.1

1000

0.0100

8.5010

11001

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.71

1

4.2

spazio mondoM 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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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

v0v1

v2

world Coordinates

1) transformazione di vista2) transformazione di proiezione3) transformazione di viewport

y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

3

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

0

0) transformazione di modellazione

21

Page 11: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

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 1 / 1 2 ‧ 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: ppov

2) target position: ptarget

3) vettore di alto: vup

Esempio tipico dicostruzione transformazione di vista

yyyy

xxxxzzzz 0000

sistema di riferimentoglobale (world frame)

vup

nb: punti e vettoriespressi in spaziomondo!

ptarget

ppov

un esempio didescrizionecompleta deiparametriestrinseci dellacamera

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 1 / 1 2 ‧ 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: ppov

2) target position: ptarget

3) vettore di alto: vup

Esempio tipico di costruzione transformazione di vista

sistema di riferimentodella camera(eye frame)

yyyyeeee

xxxxeeee

----zzzzeeeeooooeeeeyyyy

xxxxzzzz 0000

sistema di riferimentoglobale (world frame)

Output:Matrice di Trasformazioneworld frame → eye frame

vup

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 1 / 1 2 ‧ 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: ppov

2) target position: ptarget

3) vettore di alto: vup

Esempio tipico di costruzione transformazione di vista

yyyyeeee

xxxxeeee

----zzzzeeeeooooeeeeyyyy

xxxxzzzz 0000

vup

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;

yyyyeeeexxxxeeee zzzzeeee ooooeeee

0 0 0 1

matrice che va daspazio vista a spazio mondo.E’ l’inversa di quellache 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 1 / 1 2 ‧ 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;

yyyyeeeexxxxeeee zzzzeeee ooooeeee

0 0 0 1

matrice che va daspazio vista a spazio mondo.E’ l’inversa di quellache voelevo! Ergo, va invertita!

Origine e assi del sistema vista espressi nelle coorddel sistema mondo

Inverto z_e, per come e’ definitolo spazio vista(z verso osservatore)

“completamento di base”

nb: quando sifallisce? le due divisioni possonoessere 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 1 / 1 2 ‧ 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 v0 v1 v2=R rotazione 3x3, cioè ortonormale a det 1,cioè v0 v1 v2 : - 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Rv0v0

v1v1

v2v2

=

proof (traccia):

=* RTv0 v1 v2* I

R 0

00 11

rotazione 4x4 generica(asse passante per origine)

-1

= R 0

00 11

T

Page 12: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

12

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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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)

Inversione diuna 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 1 / 1 2 ‧ 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

* R00 11

T

RT-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 1 / 1 2 ‧ 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

v0v1

v2

world Coordinates

Tv matrice di modellazioneTm matrice di vistaTp matrice di proiezioneTvp matrice di viewport

y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

Tvp

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

Tv

Tm Tp

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

“Model-View matrix”

Tmv matrice di modellazione-vista= Tv *Tm

Tp matrice di proiezioneTvp matrice di viewport

y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

Tvp

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

TpTmv

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 1 / 1 2 ‧ 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”

Tmvp matrice dimodellazione-vista-proiezione= Tp * Tv *Tm

Tvp matrice di viewport

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

Tvp

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

TpTmvp

Page 13: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

13

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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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

spaziomondo(globale)

spazio oggettoruota 1

spazio oggettoautomobile

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graphV

M0M1

M2

M3 M4 M5 M6

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graphV

M0M1

M2

M3 M4 M5 M6

spaziomondo

spaziovista

spazioauto 1

spazioauto 2

spazioauto 3

spazioruota A spazio

ruota BspazioruotaC

spazioruotaD

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 1 / 1 2 ‧ 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!

MI * V

I * V * M0

I V M0 M4

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] * Mnew

• 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Page 14: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

14

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scene graphV

M0M1

M2

M3 M4 M5 M6

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 1 / 1 2 ‧ 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 32

12

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 1 / 1 2 ‧ 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 32

12

45

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Un trucco

M0M1

M2

M3 M4 M5 M6M9

photocameramontata

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Un truccoV

M0M1

M2

M3 M4 M5 M6M9

photocameramontata

sull’automobile

posizonamento della camera

(rispetto all’automobile)

spazio mondo

spazio vista

= ( M2 M9 )-1

= M9-1 M2-1

Un trucco: morale

la trasformaz di modellazionemodellazionemodellazionemodellazione necessaria per piazzare un oggettooggettooggettooggetto in una certa pos

è l’inversa

della trasformaz di vistavistavistavista necessaria per piazzare la cameracameracameracamera 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Page 15: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

15

Un altro modo ancora per definire la matrice di vistauna 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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

alpha

beta

z

-x

y

Un semplice esempio di trackball

• Interfaccia base per selezionare un punto di vista

• Due angoli (alpha e beta) + distanza (dist)– (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 1 / 1 2 ‧ 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,-dist) )

mult( rotationX (-beta) )

mult( rotationY (-alpha) )

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 1 / 1 2 ‧ 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

v0v1

v2

world Coordinates

1

1) transformazione di vista2) transformazione di proiezione3) transformazione di viewport

y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

v0v1

v2

screen Space

3

Normalized Device Coordinates

1

-11

-1

x

x

y

z

v0

v1

v2

object Coordinates

0

0) transformazione di modellazione

2M 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 1 / 1 2 ‧ 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 !

2y

-zv0

v1

v2

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

yx

-zv0

v1

v2

v0

v2

v1

normalized projectedcoordinates

1

-11

-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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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:

=

0000

0000

0010

0001

ZPInversa?

Page 16: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

16

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 1 / 1 2 ‧ 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 tuttala 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

=

0000

0000

0010

0001

ZPa

aViewPort_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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 lentiiente lentiiente lentiiente 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

Page 17: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

17

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 1 / 1 2 ‧ 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

),,( zyx

),,( ppp zyx

=

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. dz p −=

zdk /−=

quindi…

=

d

zdy

zdx

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 1 / 1 2 ‧ 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

0con ≠

= w

w

wz

wy

wx

p

w

wz

wy

wx

1

z

y

x

divisione per 4ta comp

anche detta normalizzazione affine

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 1 / 1 2 ‧ 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 omogeneomogeneomogeneomogenedel puntopuntopuntopunto che ha le

seguenticoordinate coordinate coordinate coordinate cartesianecartesianecartesianecartesiane

3

1

2

0

3

1

2 sono le coordinate coordinate coordinate coordinate omogeneomogeneomogeneomogenedel vettorevettorevettorevettore che ha le

seguenticoordinate coordinate coordinate coordinate cartesianecartesianecartesianecartesiane

3

1

2

puntopuntopuntopunto

vettorevettorevettorevettorequeste 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 1 / 1 2 ‧ 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 omogeneecome (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 rappresentanovettori.

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Proiezione prospettica

=

0/100

0100

0010

0001

d

P

=

dz

z

y

x

z

y

x

/1

P

1

/

/

ddz

ydz

x

divisione per 4ta comp

matrice di trasformazioneper 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 1 / 1 2 ‧ 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à

Py

-zv0

v1

v2

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

x norm

aliz

zazi

one

affin

e

y

z

x

coordinate proiettatee 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"

Page 18: Computer Graphics - VCGvcg.isti.cnr.it/~tarini/teaching/cg11/Lez05.Transform.pdf · 2012. 3. 30. · xxx zzz 0000 sistema di riferimento del mondo (world coords) è un cambio di sistema

18

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 1 / 1 2 ‧ 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 1 / 1 2 ‧ 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 proiezioneortogonale)

d piccolo d grande

=

0/100

0100

0010

0001

d

P

Più distorsione prospettica.

Effetto "fish-eye"(grandangolo)

Proporzionipiù mantenute

Effetto "zoom"(eg. vista dal

satellite)

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 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Considerazione

traslazionerotazionescalatura uniformescalatura non uniformeshearingproiezione ortigonaletrasf. affine genericaproiezione prospettica(+ rinormalizzazione)

lung

hezz

e(is

omet

rie)

rapp

orti

lung

hezz

esu

una

line

a

ango

li(tr

ansf

. con

form

ali)

colin

earil

VVVVVVVVXXXXXXXXXXXXXXXXXXXXXXXX

VVVVVVVVVVVVXXXXXXXXXXXXXXXXXXXX

VVVVVVVVVVVVVVVVVVVVVVVVVVVVXXXX

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV