1
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2012/13
Lezione 5:
Lezione 5:
Lezione 5:
Lezione 5: la T in T la T in T&L la T in T la T in T &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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti
(candidati pixels)Riassunto puntate precedenti 3/3
Ve rti ci
(punti in R3)pixel
finali
(nello screen-buffer)
Ve rti ci pr oi et ta ti
(punti in R2) Zrasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x
v
0v
1v
2set- up
v
0v
1v
2rasterizer segmenti set- up
rasterizer punti set- up
co m pu ta zi on i pe r v er tic e
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Transform
z y
x
v
0v
1v
2v
0v
1v
2world 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Transform
(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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Transform
z y
x
v
0v
1v
2world Coordinates
• Strategia:
1) "transformazione di vista":
portare la scena davanti alla camera
• e non viceversa ;-)
1
y
x
-z v
0v
1v
2view 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
"virtual camera"
- posizione - orientamento
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• :"trasformazione di vista":
portare la scena davanti alla camera
1) Trasformazione di vista
sistema di riferimento della camera (eye coords)
yyyy
eeeexxxx
eeee----zzzz
e e e eO O O O
e e e eyyyy
xxxx zzzz
0000 sistema di riferimento del mondo
(world coords) è un cambio di sistema di riferimento
2
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a 1
1 -1 -1
Transform
z y
x
v
0v
1v
2world Coordinates
1
• Strategia:
1) "transformazione di vista":
portare la scena davanti alla camera 2) "transformazione di proiezione":
proietta la geometria sul piano di proiezione
y 2
-z v
0v
1v
2view Coordinates (a.k.a. eye Coordinates)
y -x -z v
0v
1v
2v
0v
2v
1normalized projected coordinates
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Transform
z y
x
v
0v
1v
2world Coordinates
1
• Strategia:
1) "transformazione di vista":
portare la scena davanti alla camera 2) "transformazione di proiezione":
proietta la geometria sul piano di proiezione 3) " transformazione di viewport":
da [-1,+1] 2 a [0..res x ]x[0..res y ] (pixels)
y 2
-z v
0v
1v
2view Coordinates (a.k.a. eye Coordinates)
y -x -z v
0v
1v
2v
0v
2v
1v
0v
1v
2screen Space
3
normalized projected coordinates 1
1 -1 -1
x
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
z Object Coordinates
• Dare ad ogni oggetto il suo sistema di coordiante privato:
il suo Object Coordinates Object Coordinates Object Coordinates Object Coordinates;
y
y y
y x
x x
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Object Coordinates
• Dare ad ogni oggetto il suo sistema di coordiante privato:
il suo Object Coordinates Object Coordinates Object Coordinates Object Coordinates;
• Durante il transform, prima di tutto
portare ogni oggetto nello sist di coordinate comuni:
da Object Coordinates Object Coordinates Object Coordinates Object Coordinates a World World World World Coordiantes Coordiantes Coordiantes Coordiantes
– consente di riutilizzare lo stesso modello più volte nella stessa scena – ogni istanza: stesse Object Coordinates dei vertici,
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, etc, etc, etc
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Transform
z y
x
v
0v
1v
2world Coordinates
1
1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport
2
y -z v
0v
1v
2view Coordinates (a.k.a. eye Coordinates)
y -x -z v
0v
1v
2v
0v
2v
1v
0v
1v
2screen Space
3
normalized projected coordinates 1
1 -1 -1
x
z y
x v
0v
1v
2object Coordinates
0
0) transformazione di modellazione
3
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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 2 / 1 3 ‧ 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 è 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 2 / 1 3 ‧ 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
• Prodotto scalare (fra vettori)
– aka prodotto dot ( dot-product , o inner-product ) – vettore xxxx vettore → scalare
• Prodotto vettoriale (fra vettori) <=== solo in R 3 – 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 2 / 1 3 ‧ 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
) ( ) ( ) (
) (
v u v u v u
w v w u w v u
u v v u
⋅
=
⋅
=
⋅
⋅ +
⋅
=
⋅ +
⋅
=
⋅
α α α
commuta lineare 1/2 lineare 2/2 Proprietà
z z y y x x z y x 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 2 / 1 3 ‧ 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 ⇔ =
=
⋅
−
⋅
−
=
−
⋅
=
v v v
Q P Q P Q P
v v v
e anche:
quindi, per calcolare una distanza tra punti:
per la norma:
Proprietà
z z y y x x z y x 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a