La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.

Presentazioni simili


Presentazione sul tema: "Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione."— Transcript della presentazione:

1 Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione 4: la T in T&L bis

2 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 - 2/40 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 x y z v0v0 v1v1 v2v2 set- up v0v0 v1v1 v2v2 rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice noi siamo qui

3 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 - 3/40 Riassunto puntate precedenti 2/3 x y z v0v0 v1v1 v2v2 v0v0 v1v1 v2v2 object Coordinates screen Coordinates Per ogni vertice: TRANSFORM ?

4 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 - 4/40 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

5 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 1) Transformazione di vista La posso fare con una serie di –traslazioni –rotazioni ripassino di geometria...

6 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 attributi: lunghezza, direzione unico attributo: la posizione, rispetto ad un sistema di riferimento

7 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 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

8 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 - 8/40 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 0 0 + v 1 1 + v 2 2 + p 0 cioè: p = [ 0, 1, 2, 1] v0v0 v1v1 v2v2 p0p0 coordinate omogenee di p lin indip

9 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 - 9/40 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 0 0 + v 1 1 + v 2 2 + p 0 cioè: v = [ 0, 1, 2, 0] v0v0 v1v1 v2v2 p0p0 coordinate omogenee di v

10 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 - 10/40 Rappresentazione di punti e vettori in coordinate omogenee Punti Vettori 1 0

11 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 - 11/40 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

12 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 - 12/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. in generale non preservano: distanze, angoli, aree... se lo fanno, le chiamiamo "rigide"

13 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 - 13/40 Trasformazioni Affini Si possono esprimere come moltiplicazione con matrice sempre coordinate omogenee punto di partenza coordinate omogenee punto di arrivo

14 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 - 14/40 conta solo questo Trasformazioni Affini Caso vettori sempre coordinate omogenee vettore di partenza coordinate omogenee vettore di arrivo 0...0 0

15 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 - 15/40 Esempio: traslazione rigida posso riscriverla come: e cioè: vettore di traslazione

16 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 - 16/40 Traslazione rigida l'inversa é ovviamente: matrice di traslazione:

17 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 - 17/40 Traslazione rigida cosa succede se la applico ad un vettore ? 0 0

18 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 matrice di scaling Scalatura uniforme x y x y

19 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 - 19/40 Scalatura non uniforme x y x y matrice di scaling inversa?

20 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 Scalatura x y x y nota: la scalatura scala anche la distanza dall'origine

21 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 - 21/40 Shearing Lo spostamento e proporzionale alla coord y

22 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,y) x y z partenza: arrivo:

23 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 - 23/40 Rotazione attorno all'asse z (x,y) x y z

24 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 - 24/40 Rotazione attorno all'asse x, y, o z e le inverse?

25 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 - 25/40 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 -1 1 2 3 1. Porto il centro di rot nell'origine 2. Ruoto 3. Rimetto a posto

26 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 - 26/40 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 -1 1 2 3

27 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 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 ?

28 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 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)

29 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 - 29/40 Nessuno si offenda Attenzione all'inversione: (AB) -1 = B -1 A -1 Associativa si, ma commutativa no! AB BA fidatevi, l'ordine trasformazioni sarà un problema x y x y RTTR

30 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 - 30/40 matrice di cambio di frame Cambio di frame (cambio di sistema di riferimento) Dati due sistemi di riferimento: Esprimo uno in termini dellaltro: p = [a 1,a 2,a 3,1] v1v1 v2v2 v3v3 p = [b 1,b 2,b 3,1] u1u1 u2u2 u3u3 q coordinate di p nel primo sist. di rif.: coordinate di p nel sec. sist. di rif.:

31 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 - 31/40 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: p = [a 1,a 2,a 3,1] 1,0,0 0,1,0 0,0,1 0,0,0 = [b 1,b 2,b 3,1] u1u1 u2u2 u3u3 q coordinate di p nel primo sist. di rif.: coordinate di p nel sec. sist. di rif.: u1u1 u2u2 u3u3 q

32 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 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

33 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 Rotazioni generiche Una rotazione generica é definita da: –angolo, –asse –punto di applicazione come si fa?

34 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 commuta lineare 1/2 lineare 2/2 Proprietà

35 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 - 35/40 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à

36 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 - 36/40 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:

37 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 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

38 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 - 38/40 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:

39 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 - 39/40 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 z x 0 sistema di riferimento globale (wolrd frame) Output: Matrice di Trasformazione world frame eye frame C up

40 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 - 40/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

41 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 Scene composite sist coord macchina sist coord ruota

42 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 - 42/40 Rendering di scene composite M matrice di modelling usata (da settare prima del rendering di ogni pezzo) T M matr traslazione macchina (da mondo a macchina) R M matr rotazione macchina (da mondo a macchina) T Ri matr traslazione ruota i (da ruota a macchina!) sist coord mondo (globale) TMTM Come viene l'algoritmo di rendering?

43 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 - 43/40 Stack di matrici di modelling! M TMRMTMRM T M R M T R0

44 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 - 44/40 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

45 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 - 45/40 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

46 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 Vecchio problema: –(in arte, architettura progettazione) come riportare –su un piano (immagine 2D) –oggetti 3D

47 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 - 47/40 Trasformazione di proiezione Modo 1: –facile: togliamo una coordinata –ad es. azzeriamo la z –matrice corrisponente:

48 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 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

49 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 Trovare le differenze...

50 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 - 50/40 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

51 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: pin-hole camera distanza focale -x y -z image plane

52 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 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

53 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 - 53/40 Matematicamente y -z distanza focale d image plane centro di proiezione (origine) x Nota: non è lineare né affine; non è neanche reversibile.

54 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 - 54/40 Ritocchiamo la notazione Esprimo i punti anche con la notazione divisione per 4ta comp anche detta normalizzazione affine

55 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 - 55/40 Proiezione prospettica divisione per 4ta comp matrice di trasformazione per la proiezione prospettica: questa operazione si fa per ultima. La 3 e 4 componente ci saranno utili !

56 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 - 56/40 In realtà non si scarta la terza dimensione: ci servirà P y -z v0v0 v1v1 v2v2 view Coordinates (a.k.a. eye Coordinates) x cosidette "Clip Coordinates" 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"

57 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

58 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 - 58/40 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)

59 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 Curiosità effetto Vertigo –detto anche "contra-zoom" o "track & zoom"

60 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 - 60/40 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

61 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 - 61/40 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: trasformazioni rigide (o almeno 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")

62 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 - 62/40 Stack di matrici di MODEL-VIEW M V T M R M V T M R M T R0 V


Scaricare ppt "Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione."

Presentazioni simili


Annunci Google