Computer Graphics
Lezione 4:
la T in T&L bis
Università dell’Insubria
Facoltà di Scienze MFN di Varese
Corso di Laurea in Informatica
Anno Accademico 2005/06
Marco Tarini
setup
rasterizer
triangoli
setup
rasterizer
segmenti
computazioni
per frammento
rasterizer
punti
(candidati pixels)
Z
setup
frammenti
(punti in R2)
Vertici
proiettati
Vertici
(punti in R3)
computazioni
per vertice
Riassunto puntate precedenti
(nello
screen-buffer)
noi siamo qui
y
v1
v0
x
v2
v1
v0
z
C o m p u t e r
pixel
finali
v2
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 2/40
Riassunto puntate precedenti 2/3
• Per ogni vertice: TRANSFORM
y
v1
v0
x
v2
?
z
object Coordinates
C o m p u t e r
v1
v0
v2
screen Coordinates
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 3/40
Riassunto puntate precedenti 3/3
y
v0
0) transformazione di modellazione
1) transformazione di vista
2) transformazione di proiezione
3) transformazione di viewport
v1
z
v2
x
object Coordinates
v1
v0
v2
screen Space
0
3
y
v1
v0
z
y
v2
x
1
world Coordinates
C o m p u t e r
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
G r a p (a.k.a.
h i c seye
‧ Coordinates)
2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u bCoordinates
r i a - 4/40
1) Transformazione di vista
• La posso fare con una serie di
– traslazioni
– rotazioni
• ripassino di geometria...
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 5/40
Spazio affine
• Spazio dove ci sono tre entità
– scalari
– vettori
– punti
attributi:
lunghezza, direzione
unico attributo:
la posizione,
rispetto ad un
sistema di riferimento
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 6/40
Spazio affine
• Spazio dove ci sono tre entità
– scalari
– vettori
– punti
• Operazioni:
–
–
–
–
–
Somma e moltiplicazione tra scalari (ovviamente)
Moltiplicazione scalare x vettore → vettore
Somma vettore x vettore → vettore
Somma punto x vettore → punto
Sottrazione punto x punto → vettore
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 7/40
Sistema di riferimento ( frame )
• Definito da
– un punto base (origine) p0
– e una base vettoriale { v0 , v1 , v2 }
lin indip
• Posso esprimere (univocamente) ogni punto p come:
p = v0 0 + v1 1 + v2 2 + p0
• cioè:
p = [ 0 , 1 , 2 , 1]
coordinate omogenee di p
C o m p u t e r
v0
v1
v2
p0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 8/40
Sistema di riferimento ( frame )
• Definito da
– un punto base (origine) p0
– e una base vettoriale { v0 , v1 , v2 }
• Posso esprimere (univocamente) ogni vettore v come:
v = v0 0 + v1 1 + v2 2 + p0
• cioè:
v = [ 0 , 1 , 2 , 0]
coordinate omogenee di v
C o m p u t e r
v0
v1
v2
p0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 9/40
Rappresentazione di punti e vettori
in coordinate omogenee
Vettori
Punti
1
C o m p u t e r
1
p 2
3
1
0
1
a 2
3
0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10/40
Trasformazioni Affini
• 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
C o m p u t e r
f
p
f
q
q=
v=
f (p)
f (u)
f ( p q) f ( p ) f ( q)
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11/40
Trasformazioni Affini
• 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.
C o m p u t e r
in generale non
preservano:
distanze, angoli,
aree...
se lo fanno, le
chiamiamo "rigide"
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12/40
Trasformazioni Affini
• Si possono esprimere come
moltiplicazione con matrice
1 11 12 13 14 1 1
2 21 22 23 24 2 2
f
3 31 32 33 34 3
3
1
0
0
1 1 1
0
sempre
coordinate omogenee
punto di partenza
C o m p u t e r
coordinate omogenee
punto di arrivo
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13/40
Trasformazioni Affini
• Caso vettori
conta solo questo
1 11 12 13 14 1 1
2 21 22 23 24 2 2
f
3 31 32 33 34 3
3
0
10
0
0
1 10 ...
1
0
sempre
coordinate omogenee
vettore di partenza
C o m p u t e r
coordinate omogenee
vettore di arrivo
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14/40
Esempio: traslazione rigida
x
x x
y
y
e cioè: y
z
z z
1
1 0
x
x x
y
y
y
f
z z
z
1
1
posso riscriverla come:
x 1
y 0
f
0
z
1 0
C o m p u t e r
0 0 x x
1 0 y y
0 1 z z
0 0 1 1
vettore di traslazione
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15/40
Traslazione rigida
1
matrice di
0
traslazione: T( x , y , z )
0
0
0 0 x
1 0 y
0 1 z
0 0 1
l'inversa é ovviamente:
1
0
T 1 ( x , y , z ) T( x , y , z )
0
0
C o m p u t e r
0 0 x
1 0 y
0 1 z
0 0
1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16/40
Traslazione rigida
cosa succede se la applico ad un vettore ?
x
1 0
0 1
y
f
0 0
z
00
0 0
C o m p u t e r
0 x x
x
0 y y
y
1 z z
z
0 1 01
0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 17/40
Scalatura uniforme
y
y
x
x
x
y
y
f
z
z
1
1
x
x
0
0
y
f
0 0
z
1
0 0
0 0 x
0 0 y
0 z
0 1 1
matrice di scaling
S( )
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18/40
Scalatura non uniforme
y
y
x
x
x x
y
y
f y
z z
z
1
1
x
x
x
0
y
f
0
z
1
0
0
y
0
0
0
z
0
0
0 x
0 y
0 z
1 1
matrice di scaling
inversa?
C o m p u t e r
S ( x , y , z )
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19/40
Scalatura
nota: la scalatura scala anche la distanza dall'origine
y
y
x
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20/40
x
Shearing
• Lo spostamento e’ proporzionale alla coord y
x x y cot
y y
z z
1 cot
0
1
H xy ( )
0
0
0
0
C o m p u t e r
0
0
1
0
0
0
0
1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 21/40
Rotazione attorno all'asse z
y
(x’,y’)
z
(x,y)
x
partenza:
x cos
y sin
arrivo:
x cos( ) cos cos sin sin x cos y sin
y sin( ) cos sin sin cos x sin y cos
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 22/40
Rotazione attorno all'asse z
x x cos y sin
y ' x sin y cos
x
x xcos - ysin
y
y xsin y cos
RZ ( )
z
z
z
1
1
1
cos
sin
RZ ( )
0
0
C o m p u t e r
- sin
cos
0
0
y
(x’,y’)
z
(x,y)
x
0 0
0 0
1 0
0 1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 23/40
Rotazione attorno all'asse x, y, o z
1
0
RX ( )
0
0
0
cos
sin
0
- sin
cos
0
0
0
0
0
1
cos
0
RY ( )
- sin
0
e le inverse?
RX ( ) 1 RX ( ) RX ( )T
C o m p u t e r
0 sin
1
0
0 cos
0
0
0
0
0
1
cos
sin
RZ ( )
0
0
- sin
cos
0
0
0 0
0 0
1 0
0 1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 24/40
Rotazione intorno ad un asse
parallelo all'asse z
y
y
z
z
x
x
1. Porto il centro di rot nell'origine
1
traslazione T
3
2. Ruoto
traslazione T-1
3. Rimetto a posto
y
y
x
C o m p u t e r
2
rotazione R
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 25/40
x
Rotazione intorno ad un asse
parallelo all'asse z
y
y
z
z
x
1
traslazione T
y
3
traslazione T-1
y
x
C o m p u t e r
f( p )
=
T-1 ( R ( T p ) )
x
2
rotazione R
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 26/40
x
Composizione di trasformazioni
• Moltiplicazione matrici (vettori) ha la propretà associativa
f(p) = T-1 ( R ( T p ) )
= (T-1 R T) 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 ?
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 27/40
Punti VS vettori
v
y
p
z
x
y
M
z
p = ( * , * , * , 1 ) punto all'angolo della casa (punto)
v = ( * , * , * , 0 ) velocità vettoriale del fumo (vettore)
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 28/40
M( v )
M( p )
x
Nessuno si offenda
-1 = B-1A-1
(AB)
• Attenzione all'inversione:
• Associativa si, ma commutativa no!
AB ≠ BA
• fidatevi, l'ordine trasformazioni sarà un problema
y
y
RT
TR
x
C o m p u t e r
x
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 29/40
Cambio di frame (cambio di sistema di riferimento)
• Dati due sistemi di riferimento: v1 , v2 , v3 , p0 u1 , u2 , u3 , q0
p = [a1 ,a2 ,a3 ,1]
coordinate di p
nel primo sist. di rif.:
v1
v2
v3
p
= [b1 ,b2 ,b3 ,1]
coordinate di p
nel sec. sist. di rif.:
• Esprimo uno in termini dell’altro:
u1 11v1 12v2 13v3
u2 21v1 22v2 23v3
u3 31v1 32v2 33v3
q0 41v1 42v2 43v3 p0
C o m p u t e r
G r a p h i c s ‧ 2005/06 ‧
u1
u2
u3
q
matrice di cambio
di frame
a1 11 21 31
a
2 12 22 32
a3 13 23 33
1
0
0
0
U n i
v e r si t à
d e l l ’ I n s u b r i a - 30/40
41 b1
42 b2
43 b3
1 1
Cambio di frame (cambio di sistema di riferimento)
caso particlare: arrivo a sistema di riferimento canonico
• Dati due sistemi di riferimento: v1 , v2 , v3 , p0 u1 , u2 , u3 , q0
p = [a1 ,a2 ,a3 ,1]
coordinate di p
nel primo sist. di rif.:
1,0,0
0,1,0
0,0,1
0,0,0
= [b1 ,b2 ,b3 ,1]
coordinate di p
nel sec. sist. di rif.:
• Esprimo uno in termini dell’altro:
u1 ( 11 , 12 , 13 )
u 2 ( 21 , 22 , 23 )
u3 ( 21 , 22 , 23 )
q0 ( 21 , 22 , 23 )
C o m p u t e r
G r a p h i c s ‧ 2005/06 ‧
u1
u2
u3
q
matrice di cambio
di frame
a1 11 21 31
a
2 u121 u222 u323
a3 13 23 33
1
0
0
0
U n i
v e r si t à
d e l l ’ I n s u b r i a - 31/40
41 b1
q42 b2
43 b3
1 1
Cambio di frame
• In realtà tutte le transf. affini lineari si possono
vedere come un cambio di frame
– comprese quelle viste:
•
•
•
•
traslazione
scaling (uniforme o no)
shearing
rotazioni
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 32/40
Rotazioni generiche
• Una rotazione generica é definita da:
– angolo,
– asse
– punto di applicazione
• come si fa?
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 33/40
Ripasso: prodotto scalare e vettoriale
• Prodotto Scalare ("dot-product", "internal product"):
vettore x vettore → scalare
( x , y , z ) ( x , y , z ) x x y y z z
Proprietà
commuta u v v u
lineare 1/2 ( u v) w u w v w
lineare 2/2 (u ) v u (v) (u v)
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 34/40
Ripasso: prodotto scalare e vettoriale
• Prodotto Scalare ("dot-product", "internal product"):
vettore x vettore → scalare
( x , y , z ) ( x , y , z ) x x y y z z
Proprietà
per il modulo:
quindi, per calcolare
una distanza tra punti:
e anche:
C o m p u t e r
v vv
P Q
P Q P Q
v v 0 v (0,0,0)
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 35/40
Ripasso: prodotto scalare e vettoriale
• Prodotto Scalare ("dot-product", "internal product"):
vettore x vettore → scalare
( x , y , z ) ( x , y , z ) x x y y z z
Proprietà
molto utilmente:
quindi se u e v
non sono nulli:
e, se u e v
sono normalizzati:
C o m p u t e r
u v u v cos
u v 0 u e v ortogonali
u v cos
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 36/40
Ripasso: prodotto scalare e vettoriale
• Prodotto Vettoriale ("cross-product", "external product"):
vettore x vettore → vettore
Proprietà
y z z y
( x , y , z ) ( x , y , z ) z x x z
x y y x
non commuta:
u v (v u )
uxv
il risultato è ortogonale
ad entrambi
gli operandi: (u v) v (u v) u 0
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 37/40
u
v
Ripasso: prodotto scalare e vettoriale
• Prodotto Vettoriale ("cross-product", "external product"):
vettore x vettore → vettore
Proprietà
y z z y
( x , y , z ) ( x , y , z ) z x x z
x y y x
molto utilmente:
quindi se u e v
non sono nulli:
e, se u e v
sono normalizzati:
C o m p u t e r
u v u v sen
u v 0 u e v allineati
u v sen
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 38/40
Esercizio: transformazione di vista
• Input:
1) camera position Cpos
2) direzione di vista Cdir
3) vettore di alto Cup
• Output:
Matrice di Trasformazione
world frame → eye frame
xe
-ze
y
Cup
ye
Oe
sistema di riferimento
della camera
x
0
sistema di riferimento
globale (wolrd frame)
C o m p u t e r
(eye frame)
z
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 39/40
Transform
y
v0
0) transformazione di modellazione
1) transformazione di vista
2) transformazione di proiezione
3) transformazione di viewport
v1
x
v2
z
object Coordinates
v1
v0
v2
screen Space
0
3
y
v1
v0
x
y
v2
z
world Coordinates
C o m p u t e r
1
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
G r a p (a.k.a.
h i c seye
‧ 2Coordinates)
0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b Coordinates
r i a - 40/40
Scene composite
sist coord
macchina
sist coord
ruota
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 41/40
Rendering di scene composite
M matrice di modelling usata
(da settare prima del rendering
di ogni pezzo)
TM matr traslazione macchina
(da mondo a macchina)
RM matr rotazione macchina
(da mondo a macchina)
TRi matr traslazione ruota i
TM
(da ruota a macchina!)
Come viene l'algoritmo di rendering?
C o m p u t e r
sist coord
mondo
(globale)
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 42/40
Stack di matrici di modelling!
TMRMTR0
TMRM
C o m p u t e r
M
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 43/40
Transform
y
v0
0) transformazione di modellazione
1) transformazione di vista
2) transformazione di proiezione
3) transformazione di viewport
v1
x
v2
z
object Coordinates
v1
v0
v2
screen Space
0
3
y
v1
v0
x
y
v2
z
world Coordinates
C o m p u t e r
1
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
G r a p (a.k.a.
h i c seye
‧ 2Coordinates)
0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b Coordinates
r i a - 44/40
Trasformazione di proiezione
• Prima o poi dovremo farlo: da 3D a 2D !
y
v1
-z
x
1
v2
v0
view Coordinates
(a.k.a. eye Coordinates)
C o m p u t e r
2
v0
1
v2
-1
-1
v1
y
v1
x
-z
v2
v0
normalized projected
coordinates
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 45/40
Trasformazione di proiezione
• Vecchio problema:
– (in arte, architettura progettazione)
• come riportare
– su un piano (immagine 2D)
– oggetti 3D
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 46/40
Trasformazione di proiezione
• Modo 1:
– facile: togliamo una coordinata
– ad es. azzeriamo la z
– matrice corrisponente:
1
0
PZ
0
0
C o m p u t e r
0 0 0
1 0 0
0 0 0
0 0 0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 47/40
Trasformazione di proiezione
• E' una proiezione ortogonale
– non c'è prospettiva
– simula una situazione in cui:
• il punto di vista all'infinito
• con un binocolo mooolto potente
– direzioni di vista costanti
1
0
PZ
0
0
0 0 0
1 0 0
0 0 0
0 0 0
– Ci manca una scalatura non uniforme
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 48/40
Trovare le differenze...
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 49/40
Come si svolge fisicamente il processo:
• Occhio o macchina fotografica
il concetto è lo stesso:
CCD o pellicola
(2D screen buffer)
retina
(2D screen
buffer)
lenti
lenti
distanza
focale
C o m p u t e r
distanza
focale
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 50/40
Nostro modello semplificato:
• pin-hole camera
y
image
-x
plane
-z
distanza
focale
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 51/40
Nostro modello semplificato:
nota: niente 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
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 52/40
Matematicamente
y
image plane
x
-z
centro di
proiezione
(origine)
(xp , yp , z p )
( x, y , z )
distanza
focale d
C o m p u t e r
x xp
z d
x
xp
z/d
y
yp
z/d
zp d
Nota:
non è lineare né affine;
non è neanche reversibile.
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 53/40
Ritocchiamo la notazione
• Esprimo i punti anche con la notazione
wx
wy
p
wz
w
wx
wy
wz
w
C o m p u t e r
con
w0
divisione per
4ta comp
anche detta
normalizzazione affine
x
y
z
1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 54/40
Proiezione prospettica
1
0
matrice di trasformazione
per la proiezione prospettica: P
0
0
x
x
y
y
P
z
z
1
z / d
C o m p u t e r
0
1
0
0
0
1
0 1/ d
divisione per
4ta comp
0
0
0
0
questa operazione
si fa per ultima.
La 3 e 4
componente
ci saranno utili !
x
z/d
y
z/d
d
1
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 55/40
In realtà non si scarta la terza dimensione:
ci servirà
y
v1
-z
x
v2
v0
view Coordinates
(a.k.a. eye Coordinates)
Moltiplicazione per
la matrice di
proiezione
C o m p u t e r
P
cosidette
"Clip
Coordinates"
normalizzazione
affine
y
x
z
La parte visibile casca in
coordinate proiettate
e normalizzate (affine)
[ancora 3D!]
[-1,1] x [-1,1] x [-1,1]
quindi dette anche
"Normalized Device
Coordinates"
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 56/40
Proiezione prospettica: che effetto fa
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 57/40
Proiezione Prospettica: che effetto fa
d piccolo
d grande
Più distorsione
prospettica.
Proporzioni
più mantenute
Effetto "fish-eye"
(grandangolo)
Effetto "zoom"
(eg. vista dal
satellite)
C o m p u t e r
d infinito
(diventa
una proiezione
ortogonale)
1
0
P
0
0
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 58/40
0
1
0
0
0
1
0 1/ d
0
0
0
0
Curiosità
• effetto Vertigo
– detto anche "contra-zoom" o "track & zoom"
C o m p u t e r
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 59/40
scalatura non uniforme
shearing
proiezione ortigonale
trasf. affine generica
proiezione prospettica
C con
o m p rinormalizzazione
u t e r G r a p h i c s ‧ 2005/06
colineariltà
scalatura uniforme
rapporti
lunghezze
su una linea
rotazione
angoli
traslazione
lunghezze
Considerazione
V
V
X
X
X
X
X
X
V
V
V
X
X
X
X
X
V
V
V
V
V
V
V
X
V
V
V
V
V
V
V
V
‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 60/40
Considerazione
Modellazione + Vista:
trasformazioni rigide
(o almeno
mantengono
gli angoli)
y
v0
v1
x
v2
teniamo una sola
matrice per entrambe
(la matrice
"Modellazione-Vista")
z
teniamo questa
matrice separata
(la matrice
"Proiezione")
Proiezione:
non mantiene gli angoli
object Coordinates
v1
v0
v2
screen Space
modellazione
viewport
v2
z
world Coordinates
C o m p u t e r
vista
v1
v0
x
y
v1
-z
x
v0
v2
proiezione
y
1
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
G r a p (a.k.a.
h i c seye
‧ 2Coordinates)
0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b Coordinates
r i a - 61/40
Stack di matrici di MODEL-VIEW
V TMRMTR0
V TMRM
V
C o m p u t e r
M
G r a p h i c s ‧ 2 0 0 5 / 0 6 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 62/40