computer graphics - vcgvcg.isti.cnr.it/~tarini/teaching/cg11/lez05.transform.pdf · 2012. 3....
TRANSCRIPT
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
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...
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 βαβαβαβββααα ++=⋅ ),,(),,(
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
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”
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
fα
α
α
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
fγ
γ
γ
=
11000
000
000
000
1
z
y
x
z
y
x
fγ
γ
γ
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
zρ
φ
θ
θθ
θθ
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
θθ
θθ
θ
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 ?
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
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
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
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
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
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
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?
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
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"
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
tà
VVVVVVVVXXXXXXXXXXXXXXXXXXXXXXXX
VVVVVVVVVVVVXXXXXXXXXXXXXXXXXXXX
VVVVVVVVVVVVVVVVVVVVVVVVVVVVXXXX
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV