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  vv
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
w0
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
Scarica

ppt