Pipeline Di Rendering

114
La pipeline di rendering Il sottosistema geometrico

description

Come funziona il rendering dal punto di vista geometrico

Transcript of Pipeline Di Rendering

Page 1: Pipeline Di Rendering

La pipeline di rendering

Il sottosistema geometrico

Page 2: Pipeline Di Rendering

La Pipeline di Rendering • La pipeline di rendering si suddivide in due parti • ● Sottosistema geometrico: porta la geometria del

modello nelle coordinate dello schermo • ● Sottosistema raster: accende i pixel dello schermo

del giusto colore in funzione della geometria, dell'illuminazione e delle texture.

• ● Nei sistemi programmabili queste due parti sono affidate a due shader:

• ● Vertex shader: fa i conti delle trasformate geometriche per ogni vertice del modello

• ● Pixel (Fragment) shader: calcola il colore per ogni pixel.

Page 3: Pipeline Di Rendering
Page 4: Pipeline Di Rendering
Page 5: Pipeline Di Rendering

Sottosistema geometrico

Page 6: Pipeline Di Rendering

Sottosistema raster

Page 7: Pipeline Di Rendering

• In una applicazione grafica sono da considerare: • uno spazio di coordinate del modello (modeling

coordinates): spazio rispetto a cui ogni singolo oggetto modellato viene riferito.

• Uno spazio di coordinate del mondo (world coordinates system): che descrive in modo unificato l’intero universo dell’applicazione.

• Uno spazio di coordinate del dispositivo (device coordinates system): caratteristico della periferica di output utilizzata.

Page 8: Pipeline Di Rendering

Entità geometriche e trasformazioni affini

• Entità geometriche – Punto - entità geometrica caratterizzata da un solo

attributo: la posizione rispetto ad un sistema di riferimento;

– Vettore - entità geometrica caratterizzata da due attributi: lunghezza e direzione.

– Lunghezze, angoli, etc. sono espresse mediante scalari.

Page 9: Pipeline Di Rendering

Entità geometriche e trasformazioni affini

• Le trasformazioni geometriche sono lo strumento che consente di manipolare punti e vettori all’interno del mondo dell’applicazione grafica;

• Le trasformazioni geometriche sono funzioni che mappano un punto (vettore) in un altro punto (vettore);

• La trasformazione di una primitiva geometrica si riduce alla trasformazione dei punti caratteristici (vertici) che la identificano nel rispetto della connettività originale. Questo grazie al fatto che trattiamo di trasformazioni affini …

Page 10: Pipeline Di Rendering

Entità geometriche e trasformazioni affini

• Le trasformazioni geometriche affini sono trasformazioni lineari

• Esse preservano: – collinearità (I punti di una linea giacciono ancora

su di una linea dopo la trasformazione); – rapporto tra le distanze (Il punto medio di un

segmento rimane il punto medio di un segmento anche dopo la trasformazione).

)()()( QbfPafQbPaf � �

Page 11: Pipeline Di Rendering

• Le trasformazioni geometriche permettono di traslare, ruotare, scalare o deformare oggetti che siano stati modellati nel loro spazio di coordinate del modello permettendo di istanziarli con attributi (posizione, orientamento, fattori di scala) diversi nello spazio di coordinate del mondo (permettono il passaggio dal sistema di coordinate locali al sistema di coordinate del mondo)

Page 12: Pipeline Di Rendering

• Ogni oggetto, a partire dal proprio sistema di riferimento (object space), viene trasformato

• opportunamente in un sistema di riferimento comune (world space) per andare a far parte dell’oggetto finale.

Page 13: Pipeline Di Rendering
Page 14: Pipeline Di Rendering

Trasformazioni geometriche nel piano • Le trasformazioni geometriche di base sono:

– Traslazione; – Scalatura; – Rotazione.

• Altre trasformazioni geometriche comuni (ma derivabili dalle precedenti) sono: – Riflessione rispetto ad un asse; – Riflessione rispetto ad un punto; – Deformazione.

Continua…

Page 15: Pipeline Di Rendering

Trasformazione di Traslazione

Page 16: Pipeline Di Rendering
Page 17: Pipeline Di Rendering

Trasformazione di scalatura

Page 18: Pipeline Di Rendering
Page 19: Pipeline Di Rendering
Page 20: Pipeline Di Rendering
Page 21: Pipeline Di Rendering

Trasformazione di rotazione

Page 22: Pipeline Di Rendering
Page 23: Pipeline Di Rendering
Page 24: Pipeline Di Rendering
Page 25: Pipeline Di Rendering
Page 26: Pipeline Di Rendering
Page 27: Pipeline Di Rendering
Page 28: Pipeline Di Rendering

Le coordinate omogenee

Page 29: Pipeline Di Rendering
Page 30: Pipeline Di Rendering

Trasformazioni e coordinate omogenee

Page 31: Pipeline Di Rendering
Page 32: Pipeline Di Rendering

Altre trasformazioni:riflessione

Page 33: Pipeline Di Rendering

Deformazione (shear)

Page 34: Pipeline Di Rendering
Page 35: Pipeline Di Rendering
Page 36: Pipeline Di Rendering

Composizione di Trasformazioni

Page 37: Pipeline Di Rendering
Page 38: Pipeline Di Rendering
Page 39: Pipeline Di Rendering
Page 40: Pipeline Di Rendering
Page 41: Pipeline Di Rendering
Page 42: Pipeline Di Rendering
Page 43: Pipeline Di Rendering

Trasformazione Window to viewport

Page 44: Pipeline Di Rendering
Page 45: Pipeline Di Rendering
Page 46: Pipeline Di Rendering
Page 47: Pipeline Di Rendering
Page 48: Pipeline Di Rendering
Page 49: Pipeline Di Rendering
Page 50: Pipeline Di Rendering

Trasformazioni 3D

Page 51: Pipeline Di Rendering
Page 52: Pipeline Di Rendering

Traslazione 3D

Page 53: Pipeline Di Rendering

Scalatura 3D

Page 54: Pipeline Di Rendering

Rotazione 3D

Page 55: Pipeline Di Rendering

Rotazione intorno all’asse x

Page 56: Pipeline Di Rendering

Rotazione intorno all’asse y

Page 57: Pipeline Di Rendering

Rotazione intorno all’asse z

Page 58: Pipeline Di Rendering

Caso più generale di rotazione

• Nel caso più generale, una volta fissato l’asse di rotazione e l’angolo di rotazione, la trasformazione può essere effettuata applicando i seguenti cinque passi seguenti:

• 1. L’oggetto è traslato in maniera tale che l’asse di rotazione passi per l’origine degli assi cartesiani.

• 2. L’oggetto è ruotato in maniera tale che l’asse di rotazione coincida con uno degli assi cartesiani.

Page 59: Pipeline Di Rendering

• 3. Ruotare l’oggetto nel verso e della quantità angolare richiesta.

• 4. Applicare la trasformazione di rotazione inversa a quella adottata nel passo 2 in modo tale che l’asse di rotazione assuma la direzione finale.

• 5. Applicare la trasformazione di traslazione inversa a quella del passo 1 in maniera tale da riportare l’asse di rotazione nella sua posizione iniziale.

Page 60: Pipeline Di Rendering

Il processo di vista in 3 dimensioni

Page 61: Pipeline Di Rendering

Le proiezioni

Page 62: Pipeline Di Rendering

• La proiezione di un oggetto 3D è definita da un insieme di rette di proiezione (dette proiettori) aventi origine comune da un centro di proiezione, che passano per tutti i punti dell’oggetto e intersecano un piano di proiezione per formare la proiezione vera e propria.

Page 63: Pipeline Di Rendering

• Questo tipo di proiezioni, caratterizzate dal fatto che: – I proiettori sono rette (potrebbero essere curve

generiche) – La proiezione è su di un piano (potrebbe essere su

una superficie generica)

• si chiamano proiezioni geometriche piane.

Page 64: Pipeline Di Rendering
Page 65: Pipeline Di Rendering

• Le proiezioni parallele devono il loro nome ai proiettori (che sono paralleli)

• Mentre per una proiezione prospettica si specifica un centro di proiezione, nel caso delle proiezioni parallele si parla di una direzione di proiezione.

Page 66: Pipeline Di Rendering
Page 67: Pipeline Di Rendering

• Tra le due proiezioni la prospettica è la più realistica, in quanto riesce a riprodurre il modo con cui nella realtà vediamo gli oggetti: oggetti più grandi sono più vicini all’osservatore, oggetti più piccoli sono più lontani.

Page 68: Pipeline Di Rendering

• Le proiezioni parallele fanno sì che linee parallele nel modello tridimensionale rimangono tali nella proiezione. Sono utilizzate nel disegno tecnico perché si ha la necessità di compiere misurazioni sul risultato della proiezione.

Page 69: Pipeline Di Rendering

Proiezioni Prospettiche

• La proiezione di ogni insieme di linee parallele non parallele al piano di proiezione converge in un punto detto vanishing point (punto di convergenza).

• Il numero di questi punti è infinito, come il numero delle possibili direzioni di fasci di rette parallele.

Page 70: Pipeline Di Rendering

• Se l’insieme di linee parallele è a sua volta parallelo ad uno degli assi coordinati il punto di convergenza si chiama axis vanishing point.

• Di questi punti ce ne possono essere al più tre. • Le proiezioni si possono classificare in base al

numero di vanishing point principali (che è il numero di assi del sistema di coordinate che intersecano il piano di proiezione).

Page 73: Pipeline Di Rendering

Proiezioni Parallele

• Si classificano in base alla relazione che c’è tra la direzione di proiezione e la normale al piano di proiezione.

• Se la direzione di proiezione coincide con la normale al piano di proiezione si parla di proiezione ortografiche. Nel caso contrario si parla di proiezione obliqua.

Page 74: Pipeline Di Rendering

Proiezioni Ortografiche

Vista prospettica Vista frontale

Vista dall’alto Vista laterale

Direzione di proiezione allineata ad un asse principale

Page 75: Pipeline Di Rendering

Proiezioni ortografiche assonometriche • Sono ancora proiezioni ortografiche, ma non

essendo la direzione di proiezione allineata con un asse principale, mostrano facce diverse di un oggetto, assomigliando in questo alle proiezioni prospettiche.

Page 76: Pipeline Di Rendering

Proiezione Isometrica

• Assonometria isometrica: la direzione di proiezione è identificata da una delle bisettrici degli ottanti dello spazio cartesiano.

Page 77: Pipeline Di Rendering

Proiezioni Oblique

• Sono il tipo più generale di proiezioni parallele, caratterizzate dal fatto che i proiettori possono formare un angolo qualsiasi con il piano di proiezione.

Page 78: Pipeline Di Rendering

• I due più frequenti tipi di proiezione obliqua sono la

• Cavaliera, in cui la direzione di proiezione forma un angolo di 45° con il piano di proiezione e quindi linee ortogonali al piano conservano la loro lunghezza.

• Cabinet: la direzione di proiezione forma un angolo di artg(2) = 63.4° e quindi linee perpendicolari al piano hanno lunghezza pari alla metà di quella reale.

Page 79: Pipeline Di Rendering

Riassunto Proiezioni Planari Geometriche

Tutte le proiezioni richiedono:

• piano di proiezione. • posizione del centro di

proiezione. • distanza centro di

proiezione-piano: – Finita o prospettiche. – Infinita o parallele

Page 80: Pipeline Di Rendering

I parametri della vista 3D

• Una vista in tre dimensioni non è definita solo dalla proiezione, ma anche dal volume di vista, cioè dalla regione dello spazio tridimensionale che include solamente gli oggetti visibili.

• La proiezione ed il volume di vista forniscono tutte le informazioni necessarie per clippare e proiettare.

Page 81: Pipeline Di Rendering

La macchina fotografica virtuale e la vista 3D

• Le entità fondamentali che entrano in gioco nella sintesi automatica di scene 3D sono gli oggetti sintetici che descrivono la scena ed un osservatore che osserva la scena e, mediante il processo di rendering genera l’immagine 2D corrispondente.

• Definire l’osservatore significa fissarne il punto di vista, la direzione di osservazione e l’angolo di vista, cioè la porzione di scena inquadrata.

Page 82: Pipeline Di Rendering

Synthetic camera (Macchina fotografica virtuale)

• La metafora più utilizzata per la descrizione delle relazioni osservatore-scena è quella della synthetic camera.

• L’apparecchio fotografico oggetto della metafora è molto semplice e costituito da un parallelepipedo in cui la faccia anteriore presenta un foro di diametro infinitesimo (pinhole camera) e sulla faccia posteriore, coincidente con la pellicola fotografica, si formano le immagini

Page 83: Pipeline Di Rendering

• I raggi luminosi, attraversando l’obiettivo, il foro, impressionano la pellicola riproducendo un’immagine ruotata di 180° dell’oggetto fotografato.

• Si formano immagini nitide, nessun problema di luminosità, l’angolo T di vista può essere modificato variando il rapporto tra la distanza focale d (la dimensione della scatola) e la dimensione h del piano dell’immagine.

Page 84: Pipeline Di Rendering

• Dalla relazione di similitudine tra i due triangoli che si vengono a formare, si può facilmente ricavare che il generico punto P=(x,y,z) della scena avrà coordinate

Pp=(xp,yp,-d) sul piano dell’immagine, dove

dzyy

dzxx pp /

,/

� �

Page 85: Pipeline Di Rendering

• Per convenzione si assume l’esistenza di un piano virtuale di virtuale di identiche dimensioni del piano di proiezione posto a distanza d dal centro di proiezione.

Page 86: Pipeline Di Rendering

Definire i parametri di una vista sintetica

Page 87: Pipeline Di Rendering
Page 88: Pipeline Di Rendering
Page 89: Pipeline Di Rendering
Page 90: Pipeline Di Rendering
Page 91: Pipeline Di Rendering
Page 92: Pipeline Di Rendering

Modeling

• L’utilizzo di trasformazioni di modeling è la maniera usuale per definire oggetti nella scena in un sistema di coordinate conveniente e poi trasformarli nel sistema di coordinate del mondo.

• Le altre tre trasformazioni sono legate al punto di vista.

Page 93: Pipeline Di Rendering

Trasformazioni di vista

• Definire la trasformazione di vista vuol dire definire il volume che contiene gli oggetti visibili (volume di vista).

• Il volume è un poliedro che si può definire individuando un rettangolo che ne è la sezione e le quattro rette che passano attraverso i vertici del rettangolo.

Page 94: Pipeline Di Rendering

• Il piano di proiezione, o piano di vista, è definito da un punto sul piano, detto View reference point (VRP) e dalla normale al piano in questo punto, detta View plane normal (VPN).

• Il piano di vista può essere dovunque rispetto agli oggetti del mondo che devono essere proiettati: davanti, dentro o dietro gli oggetti.

Page 95: Pipeline Di Rendering

Finestra sul Piano di vista Sul piano definiamo un sistema di coordinate (u,v,n) che chiameremo VRC (3D Viewing Coordinate system), con origine in VRP.

L’asse v è definito per proiezione del view-up vector VUP sul piano di vista.

L’asse u, è ortogonale agli altri due ed è scelto in modo da formare un sistema di coordinate right-handed.

Il contenuto della finestra sul Piano di vista, sarà mappato sulla viewport e qualunque parte del mondo 3D proiettata sul piano di vista, ma fuori dalla finestra, non sarà visualizzata.

Page 96: Pipeline Di Rendering

Finestra sul piano di vista

CW centro della finestra = Umin+[Umax-Umin]/2 Vmin+[Vmax-Vmin]/2

Page 97: Pipeline Di Rendering

�Il centro di proiezione (COP) e la direzione di proiezione (DOP) sono definiti da un Projection Reference Point (PRP).

�Se la proiezione è di tipo PROSPETTIVA, il PRP coincide con il centro di Proiezione

�Se la proiezione è di tipo PARALLELO, la direzione di proiezione va dal PRP al centro della finestra.

Page 98: Pipeline Di Rendering

Definizione di Viste (2)

PRP Projection Reference Point: definisce direzione o centro della proiezione. Specificato nelle coordinate VRC.

Prospettiche: il PRP é il centro di proiezione.

Page 99: Pipeline Di Rendering

Proiezioni Parallele

Parallele: la Direction of Projection

(DOP) é la retta PRP-CW. Ortografiche:

DOP // VPN. Oblique:

DOP non // VPN.

Page 100: Pipeline Di Rendering

Volume Di Vista

• Il volume di vista limita quella porzione del mondo che deve essere tagliata e proiettata sul piano di vista.

• Per le proiezioni prospettiche il volume è una piramide semi-infinita, con vertice nel PRP e spigoli che passano attraverso I vertici della finestra sul piano di vista.

Page 101: Pipeline Di Rendering

Volume di Vista – Proiezione prospettica

Page 102: Pipeline Di Rendering

Volume di Vista – Proiezione prospettica

�Posizioni dietro il COP non sono incluse nel volume di vista e non vengono proiettate.

�I nostri occhi vedono secondo un volume di vista tipo un cono.

�Per motivi matematici, il volume di vista è rappresentato con una piramide semi-infinita.

Page 103: Pipeline Di Rendering

Volume Finito di Vista

�Per limitare il numero di primitive proiettate sul piano di vista, richiediamo che il volume di vista sia finito. �Specifichiamo I limiti del volume di vista mediante un front clipping plane e un back clipping plane. �I piani di clipping sono paralleli al piano di vista e la loro normale è VPN. I piani di clipping sono paralleli al piano di vista è la loro normale è VPN. �I piani sono specificati dalla front distance (F) e dalla back distance (B).

Page 104: Pipeline Di Rendering

Volume Finito di Vista – Proiezioni Parallele

Definiti da : front-clipping plane e back-clipping plane paralleli al view-plane, VPN perpendicolare al view-plane.

Page 105: Pipeline Di Rendering

Volume di Vista (Prospettiche)

Proiezioni prospettiche: volume di vista a tronco di piramide.

Page 106: Pipeline Di Rendering

Tasformazione di Viewport

• Il contenuto del volume di vista deve essere mappato sulla superficie del dispositivo di output.

• Il primo passo è quello di trasformalo da coordinate del mondo a coordinate normalizzate di proiezione (Normalized Projection Coordinates NPC), un sistema di riferimento definito su un semicubo con centro di una faccia nell’origine.

Page 107: Pipeline Di Rendering

Volume di Vista (Prospettiche)

Proiezioni prospettiche: volume di vista a tronco di piramide.

Page 108: Pipeline Di Rendering

Normalizzazione

Il volume di vista viene trasformato in un volume canonico in nuove coordinate: NPC (Normalized Projection Coordinates). Il risultato viene mappato nel 3D viewport, che e’ contenuto nel cubo unitario (0 0 0 ) l (1 1 1 ).

Disegnando le primitive ignorando la Z si ottiene l’immagine da mandare al display.

Page 109: Pipeline Di Rendering

Matematica delle proiezioni

x:xp=z:d

y:yp=z:d

Page 110: Pipeline Di Rendering

Punto di vista (0 0 -d), piano di proiezione z=0:

M’per=

x:xp=d+z:d

y:yp=d+z:d

Page 111: Pipeline Di Rendering

Clipping Fare il clipping in coordinate del mondo (WC) é

molto dispendioso. Soluzione: prima normalizzazione, poi clipping. Normalizzazione: ridurre il volume di vista ad un

volume canonico. Esistono due volumi canonici:

Page 112: Pipeline Di Rendering

Implementazione

• Dobbiamo moltiplicare per le matrici di normalizzazione (Npar o Nper ), effettuare il clipping, proiettare (usando le matrici viste in precedenza), poi portare in coordinate di dispositivo.

Page 113: Pipeline Di Rendering

Clipping al Volume Canonico

Estensione degli algoritmi di Cohen-Sutherland codici di 6 bits.

Page 114: Pipeline Di Rendering

Sistemi di Coordinate Abbiamo usato i seguenti sistemi di coordinate: 3D Modeling Coordinates 3D World Coordinates 3D VRC 3D NPC 2D Device Coordinates