Pipeline Di Rendering

Post on 04-Jan-2016

245 views 1 download

description

Come funziona il rendering dal punto di vista geometrico

Transcript of Pipeline Di Rendering

La pipeline di rendering

Il sottosistema geometrico

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.

Sottosistema geometrico

Sottosistema raster

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

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.

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 …

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

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

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

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…

Trasformazione di Traslazione

Trasformazione di scalatura

Trasformazione di rotazione

Le coordinate omogenee

Trasformazioni e coordinate omogenee

Altre trasformazioni:riflessione

Deformazione (shear)

Composizione di Trasformazioni

Trasformazione Window to viewport

Trasformazioni 3D

Traslazione 3D

Scalatura 3D

Rotazione 3D

Rotazione intorno all’asse x

Rotazione intorno all’asse y

Rotazione intorno all’asse z

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.

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

Il processo di vista in 3 dimensioni

Le proiezioni

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

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

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

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

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

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.

• 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).

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.

Proiezioni Ortografiche

Vista prospettica Vista frontale

Vista dall’alto Vista laterale

Direzione di proiezione allineata ad un asse principale

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.

Proiezione Isometrica

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

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.

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

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

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.

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.

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

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

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

,/

� �

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

Definire i parametri di una vista sintetica

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.

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.

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

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.

Finestra sul piano di vista

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

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

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.

Proiezioni Parallele

Parallele: la Direction of Projection

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

DOP // VPN. Oblique:

DOP non // VPN.

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.

Volume di Vista – Proiezione prospettica

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.

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

Volume Finito di Vista – Proiezioni Parallele

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

Volume di Vista (Prospettiche)

Proiezioni prospettiche: volume di vista a tronco di piramide.

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.

Volume di Vista (Prospettiche)

Proiezioni prospettiche: volume di vista a tronco di piramide.

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.

Matematica delle proiezioni

x:xp=z:d

y:yp=z:d

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

M’per=

x:xp=d+z:d

y:yp=d+z:d

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:

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.

Clipping al Volume Canonico

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

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