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