Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 4: la T in T&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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 2 frammenti (candidati pixels) Riassunto puntate precedenti Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento z y x v0v0 v1v1 v2v2 set- up v0v0 v1v1 v2v2 rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice 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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 3 Riassunto puntate precedenti 2/3 z y x v0v0 v1v1 v2v2 v0v0 v1v1 v2v2 object Coordinates screen Coordinates Per ogni vertice: TRANSFORM ?
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 4 Riassunto puntate precedenti 3/3 z y x v0v0 v1v1 v2v2 world Coordinates 1 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport 2 y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) y -x -z v0v0 v1v1 v2v2 v0v0 v2v2 v1v1 v0v0 v1v1 v2v2 screen Space 3 Normalized Device Coordinates 1 1 x z y x v0v0 v1v1 v2v2 object Coordinates 0 0) transformazione di modellazione
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 5 1) Transformazione di vista La posso fare con una serie di –traslazioni –rotazioni ripassino di geometria...
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 6 Spazio affine Spazio dove ci sono tre entità –scalari –vettori –punti attributi: lunghezza, direzione unico attributo: la posizione, rispetto ad un 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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 7 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
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 8 Sistema di riferimento ( frame ) Definito da –un punto base (origine) p 0 –e una base vettoriale { v 0, v 1, v 2 } Posso esprimere (univocamente) ogni punto p come: p = v v v p 0 coordinate omogenee di p lin indip cioè: p = v0v0 v1v1 v2v2 p0p
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 9 Sistema di riferimento ( frame ) Definito da –un punto base (origine) p 0 –e una base vettoriale { v 0, v 1, v 2 } Posso esprimere (univocamente) ogni vettore v come: v = v v v p 0 coordinate omogenee di p cioè: p = v0v0 v1v1 v2v2 p0p
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 10 Rappresentazione di punti e vettori in coordinate omogenee Punti Vettori 1 0
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 11 q = (p) v = (u) 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 p q
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 / 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 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. in generale non preservano: distanze, angoli, aree... se lo fanno, le chiamiamo "rigide"
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 / 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 Si possono esprimere come moltiplicazione con matrice sempre coordinate omogenee punto di partenza coordinate omogenee punto di arrivo
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 14 conta solo questo Trasformazioni Affini Caso vettori sempre coordinate omogenee vettore di partenza coordinate omogenee vettore di arrivo
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 15 Esempio: traslazione rigida posso riscriverla come: e cioè: vettore di traslazione
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 / 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 l'inversa é ovviamente: matrice di traslazione:
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 17 Traslazione rigida cosa succede se la applico ad un vettore ? 0 0
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 18 matrice di scaling Scalatura uniforme x y x y
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 / 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 non uniforme x y x y matrice di scaling inversa?
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 20 Scalatura x y x y nota: la scalatura scala anche la distanza dall'origine
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 21 Shearing Lo spostamento e proporzionale alla coord y
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 / 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,y) x y z partenza: arrivo:
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 / 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 z (x,y) x y z
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 / 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 attorno all'asse x, y, o z e le inverse?
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 / 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 x y z x y z x y traslazione T rotazione R x y traslazione T Porto il centro di rot nell'origine 2. Ruoto 3. Rimetto a posto
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 26 Rotazione intorno ad un asse parallelo all'asse z x y z x y z f( p ) = T -1 ( R ( T p ) ) x y traslazione T rotazione R x y traslazione T
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 27 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 ?
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 28 Punti VS vettori x y z x y z M p M( p ) vM( v ) p = ( *, *, *, 1 ) punto all'angolo della casa (punto) v = ( *, *, *, 0 ) velocità vettoriale del fumo (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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 29 Nessuno si offenda Attenzione all'inversione: (AB) -1 = B -1 A -1 Associativa si, ma commutativa no! AB BA previsione: determinare il corretto ordine delle trasformazioni non sarà intuitivo x y x y RTTR
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 30 matrice di cambio di frame Cambio di frame (cambio di sistema di riferimento) Dati due sistemi di riferimento: Esprimo uno in termini dellaltro: p == coordinate di p nel primo sist. di rif.: coordinate di p nel sec. sist. di rif.: v0v0 v1v1 v2v2 p0p0 a0a1a21a0a1a21 u0u0 u1u1 u2u2 q0q0 b0b1b21b0b1b21
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 31 matrice di cambio di frame Cambio di frame (cambio di sistema di riferimento) caso particlare: arrivo a sistema di riferimento canonico Dati due sistemi di riferimento: Esprimo uno in termini dellaltro: u1u1 u2u2 u3u3 q p == coordinate di p nel primo sist. di rif.: coordinate di p nel sec. sist. di rif.: a0a1a21a0a1a21 u0u0 u1u1 u2u2 q0q0 b0b1b21b0b1b21
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 32 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
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 33 Rotazioni generiche Una rotazione generica é definita da: –angolo, –asse –punto di applicazione come si fa?
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 / 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 commuta lineare 1/2 lineare 2/2 Proprietà
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 / 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 e anche: quindi, per calcolare una distanza tra punti: per il modulo: Proprietà
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 / 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 Scalare ("dot-product", "internal product") : vettore x vettore scalare e ortogonali Proprietà e, se u e v sono normalizzati: quindi se u e v non sono nulli: molto utilmente:
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 / 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à il risultato è ortogonale ad entrambi gli operandi: non commuta: u v uxvuxv
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 38 Ripasso: prodotto scalare e vettoriale Prodotto Vettoriale ("cross-product", "external product") : vettore x vettore vettore Proprietà e allineati e, se u e v sono normalizzati: quindi se u e v non sono nulli: molto utilmente:
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 39 Input: 1) camera position C pos 2) direzione di vista C dir 3) vettore di alto C up Esercizio: transformazione di vista sistema di riferimento della camera (eye frame) yeye xexe -z e OeOe y x z 0 sistema di riferimento globale (wolrd frame) Output: Matrice di Trasformazione world frame eye frame C up
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 40 Transform x y z v0v0 v1v1 v2v2 world Coordinates 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport 2 y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) y x -z v0v0 v1v1 v2v2 v0v0 v2v2 v1v1 v0v0 v1v1 v2v2 screen Space 3 Normalized Device Coordinates 1 1 x x y z v0v0 v1v1 v2v2 object Coordinates 0) transformazione di modellazione 0 1
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 / 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
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 42 Esempio in 2D Procedura Disegna_pupazzo_di_neve –Disegna cerchio unitario // corpo –Trasla di (0,2) –Disegna cerchio unitario // testa –(undo trasla) –END Main –Scala di (2,2) –Disegna_pupazzo_di_neve: Disegna cerchio unitario Trasla di (0,2) Disegna cerchio unitario (undo trasla)
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 43 Scene composite sist coord macchina sist coord ruota
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 44 Rendering di scene composite M matrice di modelling usata (da settare prima del rendering di ogni pezzo) T M matr traslazione macchina R M matr rotazione macchina T M R M : va da frame macchina a frame mondo T Ri matr traslazione ruota i T Ri : va da frame ruota a frame macchina!) sist coord mondo (globale) TMTM Come viene l'algoritmo di rendering?
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 45 Stack di matrici di modelling! M TMRMTMRM T M R M T R0
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 46 Transform x y z v0v0 v1v1 v2v2 world Coordinates 1 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) y x -z v0v0 v1v1 v2v2 v0v0 v2v2 v1v1 v0v0 v1v1 v2v2 screen Space 3 Normalized Device Coordinates 1 1 x x y z v0v0 v1v1 v2v2 object Coordinates 0 0) transformazione di modellazione 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 / 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 Prima o poi dovremo farlo: da 3D a 2D ! 2 y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) y x -z v0v0 v1v1 v2v2 v0v0 v2v2 v1v1 normalized projected coordinates 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 / 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 Vecchio problema: –(in arte, architettura progettazione) come riportare –su un piano (immagine 2D) –oggetti 3D
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 / 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 Modo 1: –facile: togliamo una coordinata –ad es. azzeriamo la z –matrice corrisponente:
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 50 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 –Ci manca una scalatura non uniforme (causa aspect ratio del monitor / della finestra!)
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 51 Trovare le differenze...
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 52 Come si svolge fisicamente il processo: Occhio o macchina fotografica il concetto è lo stesso: lenti CCD o pellicola (2D screen buffer) lenti retina (2D screen buffer) distanza focale
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 / 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: pin-hole camera distanza focale -x y -z image plane
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 54 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
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 55 Matematicamente y -z distanza focale d image plane centro di proiezione (origine) x Nota: non è lineare né affine; non è reversibile. non mantiene: rapporto fra distanze colineari (ma mantiene: colinearità)
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 56 Ritocchiamo la notazione Esprimo i punti anche con la notazione divisione per 4ta comp anche detta normalizzazione affine
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 57 Proiezione prospettica divisione per 4ta comp matrice di trasformazione per la proiezione prospettica: questa operazione si fa per ultima. La 3 e 4 componente (originali) ci saranno utili !
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 58 In realtà non si scarta la terza dimensione: ci servirà P y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) x normalizzazione affine y z x coordinate proiettate e normalizzate (affine) [ancora 3D!] Moltiplicazione per la matrice di proiezione La parte visibile casca in [-1,1] x [-1,1] x [-1,1] quindi dette anche "Normalized Device Coordinates"
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 / 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
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 60 Proiezione Prospettica: che effetto fa d infinito (diventa una proiezione ortogonale) d piccolod grande Più distorsione prospettica. Effetto "fish-eye" (grandangolo) Proporzioni più mantenute Effetto "zoom" (eg. vista dal satellite)
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 61 Curiosità effetto Vertigo –detto anche "contra-zoom" o "track & zoom"
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 / 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 traslazione rotazione scalatura uniforme scalatura non uniforme shearing proiezione ortigonale trasf. affine generica proiezione prospettica con rinormalizzazione lunghezze rapporti lunghezze su una linea angoli colineariltà VVXXXXXXVVXXXXXX VVVXXXXXVVVXXXXX VVVVVVVXVVVVVVVX VVVVVVVVVVVVVVVV
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 63 Considerazione x y z v0v0 v1v1 v2v2 world Coordinates y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) y x -z v0v0 v1v1 v2v2 v0v0 v2v2 v1v1 v0v0 v1v1 v2v2 screen Space Normalized Device Coordinates 1 1 x x y z v0v0 v1v1 v2v2 object Coordinates modellazione vista proiezione viewport Modellazione + Vista: di solito - scalature uniformi - traslazioni - rotazioni che mantengono gli angoli Proiezione: non mantiene gli angoli teniamo una sola matrice per entrambe (la matrice "Modellazione-Vista") teniamo questa matrice separata (la matrice "Proiezione")
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 / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 64 Stack di matrici di MODEL-VIEW M V T M R M V T M R M T R0 V teniamo una sola matrice per entrambe (la matrice "Modellazione-Vista") da mondo a vista