Computer Graphics
Lezione 4:
Università dell’Insubria
Facoltà di Scienze MFN di Varese
Corso di Laurea in Informatica
Anno Accademico 2006/07
Marco Tarini
la T in T&L
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
pixel
finali
(nello
screen-buffer)
noi siamo qui
y
v1
v0
z
v2
v1
v0
x
v2
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 2
Riassunto puntate precedenti 2/3
• Per ogni vertice: TRANSFORM
y
v1
v0
z
v2
?
x
object Coordinates
Marco Tarini ‧ Computer Graphics ‧
v1
v0
v2
screen Coordinates
2006/07 ‧ Università dell’Insubria - 3
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
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
-x
-z
v2
v0
-1
view Coordinates
Normalized Device
M a r c o T a r i n i ‧ C o m p u t e(a.k.a.
r G r aeye
p h iCoordinates)
c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’Coordinates
Insubria - 4
world Coordinates
1) Transformazione di vista
• La posso fare con una serie di
– traslazioni
– rotazioni
• ripassino di geometria...
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 5
Spazio affine
• Spazio dove ci sono tre entità
– scalari
– vettori
– punti
attributi:
lunghezza, direzione
unico attributo:
la posizione,
rispetto ad un
sistema di riferimento
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 6
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
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 7
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 = v0 v1 v2 p0
0
1
2
coordinate
omogenee di p
1
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 8
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è:
p = v0 v1 v2 p0
0
1
2
coordinate
omogenee di p
0
Marco Tarini ‧ Computer Graphics ‧
2006/07 ‧ Università dell’Insubria - 9
Rappresentazione di punti e vettori
in coordinate omogenee
Vettori
Punti
1
1
p 2
3
1
Marco Tarini ‧ Computer Graphics ‧
0
1
a 2
3
0
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10
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
f
p
f
q
q=
v=
f (p)
f (u)
f ( p q) f ( p ) f ( q)
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11
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.
Marco Tarini ‧ Computer Graphics ‧
in generale non
preservano:
distanze, angoli,
aree...
se lo fanno, le
chiamiamo "rigide"
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12
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
Marco Tarini ‧ Computer Graphics ‧
coordinate omogenee
punto di arrivo
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13
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
Marco Tarini ‧ Computer Graphics ‧
coordinate omogenee
vettore di arrivo
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14
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
0 0 x x
1 0 y y
0 1 z z
0 0 1 1
Marco Tarini ‧ Computer Graphics ‧
vettore di traslazione
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15
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
Marco Tarini ‧ Computer Graphics ‧
0 0 x
1 0 y
0 1 z
0 0
1
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16
Traslazione rigida
cosa succede se la applico ad un vettore ?
x
1 0
0 1
y
f
0 0
z
00
0 0
Marco Tarini ‧ Computer Graphics ‧
0 x x
x
0 y y
y
1 z z
z
0 1 01
0
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 17
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( )
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18
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?
Marco Tarini ‧ Computer Graphics ‧
S ( x , y , z )
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19
Scalatura
nota: la scalatura scala anche la distanza dall'origine
y
y
x
Marco Tarini ‧ Computer Graphics ‧
x
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20
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
0
0
1
0
0
0
0
1
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 21
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
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 22
Rotazione attorno all'asse z
x x cos y sin
y ' x sin y cos
y
(x’,y’)
x
x xcos - ysin
y
y xsin y cos
RZ ( )
z
z
z
1
1
1
cos
sin
RZ ( )
0
0
- sin
cos
0
0
z
(x,y)
x
0 0
0 0
1 0
0 1
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 23
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
Marco Tarini ‧ Computer Graphics ‧
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
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 24
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
2
rotazione R
Marco Tarini ‧ Computer Graphics ‧
x
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 25
Rotazione intorno ad un asse
parallelo all'asse z
y
y
z
z
x
1
traslazione T
y
f( p )
=
T-1 ( R ( T p ) )
x
3
traslazione T-1
y
x
2
rotazione R
Marco Tarini ‧ Computer Graphics ‧
x
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 26
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 ?
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 27
Punti VS vettori
y
v
p
z
x
y
M
z
M( v )
M( p )
p = ( * , * , * , 1 ) punto all'angolo della casa (punto)
v = ( * , * , * , 0 ) velocità vettoriale del fumo (vettore)
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 28
x
Nessuno si offenda
-1 = B-1A-1
(AB)
• Attenzione all'inversione:
• Associativa si, ma commutativa no!
AB ≠ BA
• previsione:
determinare il corretto ordine delle trasformazioni non sarà intuitivo
y
y
RT
TR
x
Marco Tarini ‧ Computer Graphics ‧
x
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 29
Cambio di frame (cambio di sistema di riferimento)
• Dati due sistemi di riferimento: v1 , v2 , v3 , p0 u1 , u2 , u3 , q0
coordinate di p
nel primo sist. di rif.:
a0
p= v v v p
0 1 2 0
a1
a2
1
=
b0
u0 u1 u2 q0
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
Marco Tarini ‧ Computer Graphics ‧
b1
b2
1
matrice di cambio
di frame
a1 11 21 31 41 b1
a
b
22
32
42 2
2 12
a3 13 23 33 43 b3
1 n i v e r s 0i t à d e l0l ’ I n s u 0b r i a - 30
1 1
2 0 0 6 / 0 7 ‧ U
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
1 0 0 0
p= 0 1 0 0
0 0 1 0
coordinate di p
nel primo sist. di rif.:
a0
a1
a2
1
=
b0
u0 u1 u2 q0
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 )
Marco Tarini ‧ Computer Graphics ‧
b1
b2
1
matrice di cambio
di frame
a1 11 21 31 41 b1
a
b
2 u121 u222 u323 q42 2
a3 13 23 33 43 b3
1 n i v e r s 0i t à d e l0l ’ I n s u 0b r i a - 31
1 1
2 0 0 6 / 0 7 ‧ U
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
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 32
Rotazioni generiche
• Una rotazione generica é definita da:
– angolo,
– asse
– punto di applicazione
• come si fa?
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 33
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)
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 34
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:
v vv
P Q
P Q P Q
v v 0 v (0,0,0)
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 35
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:
u v u v cos
u v 0 u e v ortogonali
u v cos
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 36
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 )
il risultato è ortogonale
ad entrambi
gli operandi: (u v) v (u v) u 0
Marco Tarini ‧ Computer Graphics ‧
uxv
u
v
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 37
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:
u v u v sen
u v 0 u e v allineati
u v sen
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 38
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
z
(eye frame)
0
sistema di riferimento
globale (wolrd frame)
x
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 39
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
1
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
M a r c o T a r i n i ‧ C o m p u t e (a.k.a.
r G r aeye
p h i Coordinates)
c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ Coordinates
I n s u b r i a - 40
world Coordinates
Esempio in 2D
• Procedura Disegna_pupazzo_di_neve
–
–
–
–
–
Disegna cerchio unitario // corpo
Trasla di (0,2)
Disegna cerchio unitario // testa
(undo trasla)
END
3
2
1
1 2 3
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 41
Esempio in 2D
• Procedura Disegna_pupazzo_di_neve
–
–
–
–
–
Disegna cerchio unitario // corpo
Trasla di (0,2)
Disegna cerchio unitario // testa
(undo trasla)
END
6
5
4
3
2
• Main
– Scala di (2,2)
– Disegna_pupazzo_di_neve:
•
•
•
•
Disegna cerchio unitario
Trasla di (0,2)
Disegna cerchio unitario
(undo trasla)
Marco Tarini ‧ Computer Graphics ‧
1
1 2 3
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 42
Scene composite
sist coord
macchina
sist coord
ruota
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 43
Rendering di scene composite
M matrice di modelling usata
(da settare prima del rendering
di ogni pezzo)
TM matr traslazione macchina
RM matr rotazione macchina
TM RM : va da frame macchina
a frame mondo
TM
TRi matr traslazione ruota i
TRi : va da frame ruota
a frame macchina!)
Come viene l'algoritmo di rendering?
Marco Tarini ‧ Computer Graphics ‧
sist coord
mondo
(globale)
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 44
Stack di matrici di modelling!
TMRMTR0
TMRM
Marco Tarini ‧ Computer Graphics ‧
M
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 45
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
1
v1
-z
x
v0
1
v2
2
v0
1
v2
-1
v1
y
v1
x
-z
v2
v0
-1
view Coordinates
Normalized Device
M a r c o T a r i n i ‧ C o m p u t e (a.k.a.
r G r aeye
p h i Coordinates)
c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ Coordinates
I n s u b r i a - 46
world Coordinates
Trasformazione di proiezione
• Prima o poi dovremo farlo: da 3D a 2D !
y
v1
-z
x
1
v2
v0
2
view Coordinates
(a.k.a. eye Coordinates)
Marco Tarini ‧ Computer Graphics ‧
v0
1
v2
-1
-1
v1
y
v1
x
-z
v2
v0
normalized projected
coordinates
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 47
Trasformazione di proiezione
• Vecchio problema:
– (in arte, architettura progettazione)
• come riportare
– su un piano (immagine 2D)
– oggetti 3D
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 48
Trasformazione di proiezione
• Modo 1:
– facile: togliamo una coordinata
– ad es. azzeriamo la z
– matrice corrisponente:
1
0
PZ
0
0
0 0 0
1 0 0
0 0 0
0 0 0
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 49
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
• (causa aspect ratio del monitor / della finestra!)
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 50
Trovare le differenze...
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 51
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
Marco Tarini ‧ Computer Graphics ‧
distanza
focale
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 52
Nostro modello semplificato:
• pin-hole camera
y
image
-x
plane
-z
distanza
focale
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 53
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
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 54
Matematicamente
y
image plane
x
-z
centro di
proiezione
(origine)
(xp , yp , z p )
distanza
focale d
Marco Tarini ‧ Computer
x xp
z d
x
xp
z/d
y
yp
z/d
zp d
Nota:
( x, y , z )
non è lineare né affine;
non è reversibile.
non mantiene: rapporto fra
distanze colineari
(ma mantiene: colinearità)
G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 55
Ritocchiamo la notazione
• Esprimo i punti anche con la notazione
wx
wy
p
wz
w
wx
wy
wz
w
con
w0
divisione per
4ta comp
anche detta
normalizzazione affine
Marco Tarini ‧ Computer Graphics ‧
x
y
z
1
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 56
Proiezione prospettica
1
0
matrice di trasformazione
per la proiezione prospettica: P
0
0
x
x
y
y
P
z
z
1
z / d
0
1
0
0
0
1
0 1/ d
divisione per
4ta comp
Marco Tarini ‧ Computer Graphics ‧
0
0
0
0
questa operazione
si fa per ultima.
La 3 e 4
componente
(originali)
ci saranno utili !
x
z/d
y
z/d
d
1
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 57
In realtà non si scarta la terza dimensione:
ci servirà
y
v1
-z
x
v2
v0
normalizzazione
affine
y
P
view Coordinates
(a.k.a. eye Coordinates)
Moltiplicazione per
la matrice di
proiezione
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"
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 58
Proiezione prospettica: che effetto fa
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 59
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)
Marco Tarini ‧ Computer Graphics ‧
d infinito
(diventa
una proiezione
ortogonale)
1
0
P
0
0
0
1
0
0
0
1
0 1/ d
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 60
0
0
0
0
Curiosità
• effetto Vertigo
– detto anche "contra-zoom" o "track & zoom"
Marco Tarini ‧ Computer Graphics ‧
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 61
scalatura non uniforme
shearing
proiezione ortigonale
trasf. affine generica
proiezione prospettica
M a r c ocon
T a r irinormalizzazione
ni ‧ Computer Graphics
‧
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
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 62
Considerazione
Modellazione + Vista:
di solito
- scalature uniformi
- traslazioni
- rotazioni
che 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
v1
"Proiezione")
v0
v2
Proiezione:
non mantiene gli angoli
object Coordinates
modellazione
screen Space
viewport
v2
z
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
M a r c o T a r i n i ‧ C o m p u t e (a.k.a.
r G r aeye
p h i Coordinates)
c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ Coordinates
I n s u b r i a - 63
world Coordinates
Stack di matrici di MODEL-VIEW
V TMRMTR0
teniamo una sola
matrice per entrambe
(la matrice
"Modellazione-Vista")
V TMRM
V
Marco Tarini ‧ Computer Graphics ‧
da mondo a vista
M
2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 64