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