Rendering I - geometric processing

Похожие документы
Processo di rendering

La Pipeline Grafica. Vediamo come avviene il rendering, ovvero la visualizzazione di oggetti. Introduzione. La Pipeline Grafica.

Processo di rendering

Proiezioni Grafica 3d

4. Proiezioni del piano e dello spazio

Trasformazioni Geometriche 1 Roberto Petroni, 2011

Esempi di funzione. Scheda Tre

FASCI DI RETTE. scrivere la retta in forma esplicita: 2y = 3x + 4 y = 3 2 x 2. scrivere l equazione del fascio di rette:

L EQUILIBRIO UNIVERSALE dalla meccanica celeste alla fisica nucleare

RETTE, PIANI, SFERE, CIRCONFERENZE

Trasformazioni nello spazio Grafica 3d

Dimensione di uno Spazio vettoriale

CONI, CILINDRI, SUPERFICI DI ROTAZIONE

Lezione 9: Cambio di base

SCHEDA M MOSAICI CLASSIFICARE CON LA SIMMETRIA

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

CORSO DI LAUREA IN INGEGNERIA.

ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI. (Visione 3D)

LE TRASFORMAZIONI GEOMETRICHE NEL PIANO

Universita degli Studi di Roma Tor Vergata Facolta di Ingegneria Elettronica

3 GRAFICI DI FUNZIONI

4 3 4 = 4 x x x 10 0 aaa

Trasformazioni 2D. Grande differenza rispetto alla grafica raster!

Capitolo 4 Trasformazioni Geometriche

risulta (x) = 1 se x < 0.

Sia data la rete di fig. 1 costituita da tre resistori,,, e da due generatori indipendenti ideali di corrente ed. Fig. 1

Rendering. Dove si descrivono i principali metodi di alto livello utilizzati per ottenere una immagine a partire da una descrizione degli oggetti 3D

Vademecum studio funzione

LE FUNZIONI A DUE VARIABILI

Soluzione di equazioni quadratiche

GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω

Rette e piani con le matrici e i determinanti

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

2 Argomenti introduttivi e generali

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

LA GRAFICA E LA GEOMETRIA OPERATIVA

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013

Capitolo 13: L offerta dell impresa e il surplus del produttore

OpenGL: visualizzazione 3D

A.1 Definizione e rappresentazione di un numero complesso

FUNZIONE REALE DI UNA VARIABILE

Coordinate 3D. Coordinate cartesiane. Coordinate 3D. Coordinate cartesiane. Coordinate cartesiane. Sinistrorsa. Destrorsa

bensì una tendenza a ruotare quando vengono applicate in punti diversi di un corpo

LA RETTA. b) se l equazione si presente y=mx+q (dove q è un qualsiasi numero reale) si ha una retta generica del piano.

Grandezze scalari e vettoriali

La distribuzione Normale. La distribuzione Normale

Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R

15 febbraio Soluzione esame di geometria - 12 crediti Ingegneria gestionale - a.a COGNOME... NOME... N. MATRICOLA...

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

CONTINUITÀ E DERIVABILITÀ Esercizi proposti. 1. Determinare lim M(sinx) (M(t) denota la mantissa di t)

Applicazioni lineari

Matematica e Statistica

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

Comparatori. Comparatori di uguaglianza

0 < a < 1 a > 1. In entrambi i casi la funzione y = log a (x) si può studiare per punti e constatare che essa presenta i seguenti andamenti y

UNIVERSITÀ DEGLI STUDI DI PADOVA Facoltà di Ingegneria sede di Vicenza A.A. 2007/08

INTEGRALI DEFINITI. Tale superficie viene detta trapezoide e la misura della sua area si ottiene utilizzando il calcolo di un integrale definito.

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Anno 4 Grafico di funzione

CALCOLO COMBINATORIO

Controlli Automatici T. Trasformata di Laplace e Funzione di trasferimento. Parte 3 Aggiornamento: Settembre Prof. L.

Proposta di soluzione della prova di matematica Liceo scientifico di Ordinamento

GEOMETRIA DELLE MASSE

Misure di base su una carta. Calcoli di distanze

Studio di una funzione ad una variabile

Introduzione al 3D con Autocad

Esercizi svolti. 1. Si consideri la funzione f(x) = 4 x 2. a) Verificare che la funzione F(x) = x 2 4 x2 + 2 arcsin x è una primitiva di

LEZIONI CON I PAD Docente scuola secondaria IC Moglia Carla Casareggio Classi seconde 2014/2015 Proprietà triangoli e quadrilateri con Sketchometry

1. PRIME PROPRIETÀ 2

Raccomandazione del Parlamento europeo 18/12/2006 CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE. Operare con i numeri

UNIVERSITÀ DEGLI STUDI DI TERAMO

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

2 FUNZIONI REALI DI VARIABILE REALE

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

GEOMETRIA I Corso di Geometria I (seconda parte)

I NUMERI DECIMALI. che cosa sono, come si rappresentano

Rappresentazione dei numeri in un calcolatore

CONTINUITÀ E DERIVABILITÀ Esercizi risolti

PROIEZIONI ORTOGONALI

LA RETTA. Retta per l'origine, rette orizzontali e verticali

Documentazione esterna al software matematico sviluppato con MatLab

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

la funzione è definita la funzione non è definita Si osservi, infatti, che la radice di un numero negativo non esiste nel campo dei numeri reali.

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Rette e curve, piani e superfici

Studio di funzioni ( )

Database. Si ringrazia Marco Bertini per le slides

Il riduttore di focale utilizzato è il riduttore-correttore Celestron f/ 6.3.

Parte 2. Determinante e matrice inversa

Usando il pendolo reversibile di Kater

1 Applicazioni Lineari tra Spazi Vettoriali

TRASFORMAZIONI GEOMETRICHE NEL PIANO. Parte 1

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

L ambiente grafico e le viste

Analisi Matematica 2 per Matematica Esempi di compiti, primo semestre 2011/2012

Esercizi su lineare indipendenza e generatori

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Транскрипт:

Rendering I - geometric processing Dove si descrivono i principali metodi di alto livello utilizzati per ottenere una immagine a partire da una descrizione degli oggetti 3D Introduzione Trasformazioni geometriche Culling e Clipping

Grafica al Calcolatore Rendering I - 1 Introduzione Modeling (modellazione) e Rendering sono i due stadi principali della pipeline grafica. Fin ora abbiamo parlato di modellazione. Il termine rendering indica la serie di algoritmi, geometrici e non, a cui si sottopone una data descrizione di una serie di oggetti per ottenere una immagine Le descrizioni possono essere: mesh poligonali superfici parametriche CSG volumetriche Per ogni descrizione esistono tecniche ad hoc. Ci occuperemo nel dettaglio di mesh poligonali, perché: sono la rappresentazione più diffusa le altre rappresentazioni si possono ricondurre a questa.

Grafica al Calcolatore Rendering I - 2 Rendering di mesh poligonali L ingresso è una lista di poligoni, e l uscita è una immagine, ovvero una matrice di pixels a ciascuno dei quali è associato un colore. Rendering Modeling front end Geometric processing back end Rasterization Display Transformations Clipping Projection Hidden surface removal Shading Scan conversion La primitiva geometrica che viene processata sono i poligoni Tuttavia il processo può essere object driven oppure image driven, a seconda che il ciclo più esterno sia sui poligoni o sui pixel (Angel pg. 284). Ci occuperemo ora della prima fase della rendering pipeline per le maglie poligonali, che viene chiamata front-end o geometric processing. Il geometric processing consiste delle operazioni di trasformazione (affine), proiezione (prospettica o ortografica) culling e clipping.

Grafica al Calcolatore Rendering I - 3 Trasformazioni geometriche Le trasformazioni affini e le proiezioni sono alla base dell elaborazine geometrica (geometric processing) che viene compiuta nella rendering pipeline. Le trasformazioni servono per cambiare la posizione, l orientazione e la forma degli oggetti. Sono fondamentali per semplificare il processo di modellazione geometrica. Per esempio, consentono di posizionare nello spazio oggetti presi da una libreria (es. teiera), o copie di un oggetto definito una volta sola (es. auto sul traghetto). Le proiezioni modellano la formazione della immagine 2D a partire dalla descrizione del mondo 3D. Un ulteriore uso delle trasformazioni è nella animazione, in particolare di oggetti articolati.

Grafica al Calcolatore Rendering I - 4 Trasformazioni affini Affrontiamo ora lo studio delle trasformazioni definite sugli spazi visti. In particolare ci interesseremo delle trasformazioni affini, ovvero di quelle trasformazioni che lasciano invariate le combinazioni affini, e delle proiezioni. Studiamo ora le trasformazioni affini che, come vedremo, sono di fondamentale importanza in computer graphics Per definire una trasformazione in genere studieremo come si trasforma un punto generico e da questo ricaveremo la matrice di ordine 4 che agisce sulle coordinate omogenee del punto. Per una trasformazione affine, ovvero una trasformazione che preserva le combinazioni affini, rette parallele vengono trasformate in rette parallele. Usando le coordinate omogenee, si può rappresentare ogni trasformazione affine con una matrice (questo è uno dei motivi per usare le coordinate omogenee, l altro è legato alle proiezioni).

Grafica al Calcolatore Rendering I - 5 Traslazioni Una traslazione determinata dal vettore t trasforma il punto P nel punto P = P + t In termini di componenti t = (t x, t y, t z, 0) P = (p x, p y, p z, 1) P = (p x + t x, p y + t y, p z + t z, 1) x y P z t P+t È facile vedere che la matrice di trasformazione T t per le coordinate omogenee è la seguente T t = 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1

Grafica al Calcolatore Rendering I - 6 Si vede subito da questa matrice che i vettori non vengono modificati da una traslazione T 1 t = T t Si può dimostrare che se non si fa uso delle coordinate omogenee, ovvero non si distinguono punti e vettori, non è possibile dare una rappresentazione matriciale alla traslazione lungo un vettore

Grafica al Calcolatore Rendering I - 7 Rotazioni attorno agli assi coordinati Una rotazione di un angolo θ in senso antiorario (prima regola della mano destra) intorno all asse z determina la seguente trasformazione di un punto P in P z p x = p x cos(θ) p y sin(θ) p θ y = p x sin(θ) + p y cos(θ) p x P P y z = p z Si può facilemente dimostrare che per rotazioni intorno all asse x e y si hanno le seguenti espressioni rispettivamente: p y = p y cos(θ) p z sin(θ) p z = p y sin(θ) + p z cos(θ) p x = p x p z = p z cos(θ) p x sin(θ) p x = p z sin(θ) + p x cos(θ) p y = p y

Grafica al Calcolatore Rendering I - 8 Dovrebbe a questo punto essere facile dimostrare che le matrici che rappresentano le rotazioni rispetto agli assi coordinati sono quelle qui riportate Da notare che un vettore viene trasformato da una rotazione (a differenza delle traslazioni che lasciano i vettori inalterati) Le matrici date non commutano R x (θ) = R y (θ) = R z (θ) = 1 0 0 0 0 cos θ sin θ 0 0 sin θ cos θ 0 0 0 0 1 cos θ 0 sin θ 0 0 1 0 0 sin θ 0 cos θ 0 0 0 0 1 cos θ sin θ 0 0 sin θ cos θ 0 0 0 0 1 0 0 0 0 1

Grafica al Calcolatore Rendering I - 9 Alcuni commenti Le rotazioni rispetto agli assi cartesiani non commutano; provate a ruotare un oggetto (un libro ad esempio) di 90 gradi prima rispetto all asse x e poi rispetto all asse y. Ripetete quindi l operazione prima rispetto all asse y e poi rispetto all asse x. Risultato? Vedremo nel seguito come trattare una rotazione rispetto ad un asse qualsiasi, non solo rispetto ad uno degli assi cartesiani Da notare che le rotazioni lasciano inalterati i punti che si trovano sull asse di rotazione. Si può dimostrare che R x (θ) 1 = R x ( θ) e similmente per gli altri assi Si può dimostrare che le matrici di rotazione date sopra sono ortogonali: R x (θ) 1 = R x (θ) T e similmente per gli altri assi La proprietà di ortogonalità è vera per ogni rotazione, non solo per quelle rispetto agli assi coordinati

Grafica al Calcolatore Rendering I - 10 Scalatura Le traslazioni e le rotazioni hanno in comune una importante caratteristica: conservano le distanze tra punti ovvero conservano la lunghezza dei vettori. Esse costituiscono un sottogruppo delle trasformazioni affini chiamate trasformazioni isometriche o rigide. Le trasformazioni affini contengono un altro elemento che non preserva le distanze tra punti e che ci interessa: la scalatura (vi sono altri tipi di trasformazioni affini che non ci interessano) Dato un punto P = (p x, p y, p z, 1) la trasformazione di scala, o scalatura, lo trasforma nel punto P = (s x p x, s y p y, s z p z, 1) dove i valori (s x, s y, s z ) sono i fattori di scala lungo gli assi coordinati Una scalatura è omogenea se s x = s y = s z = s In tal caso i vettori vengono semplicemente allungati o accorciati a seconda che s sia maggiore o minore di 1 Un punto, in una scalatura omogenea, viene semplicemente traslato lungo la retta che passa per l origine e per il punto stesso, allontanandosi o avvicinandosi all origine a seconda che s sia maggiore o minore di 1

Grafica al Calcolatore Rendering I - 11 Composizione di Trasformazioni Come si applica ad un punto dello spazio più di una trasformazione? Basta usare l algebra delle matrici Date due trasformazioni rappresentate dalle matrici A e B, la composizione di A seguita da B sarà data dalla matrice BA. Importante: notare l ordine delle matrici; siccome si applica la matrice risultante a sinistra del vettore delle coordinate omogenee, la trasformazione che viene effettuata per prima va a destra. La composizione di trasformazione si estende immediatamente al caso di più di due matrici T = T n T 1

Grafica al Calcolatore Rendering I - 12 Come esempio tipico di non commutatività delle trasformazioni affini si può facilemente vedere che data una traslazione lungo il vettore t ed una rotazione di un angolo θ lungo l asse z, si ottiene un risultato completamente diverso effettuando prima la rotazione e poi la traslazione o viceversa Per rendersene conto basta guardare come viene trasformato nei due casi un punto che in partenza si trova nell origine y P y R(θ) t P R(θ) P P t R(θ)M t x M t R(θ) x

Grafica al Calcolatore Rendering I - 13 Rotazioni generiche Abbiamo visto come ruotare punti e vettori attorno agli assi coordinati; come si fa a ruotarli attorno ad un asse generico passante per l origine? Una rotazione R θ,u di un angolo θ attorno all asse u si rappresenta con la seguente matrice (dim. sul Buss): (1 c)u 2 x + c (1 c)u x u y su z (1 c)u x u z + su y 0 (1 c)u x u y + su z (1 c)u 2 y + c (1 c)u x u z su x 0 (1 c)u x u z su y (1 c)u x u z + su x (1 c)u 2 z + c 0 0 0 0 1 Per ruotare attiorno ad un asse generico, bisogna traslare l asse nell origine, ruotare ed infine applicare la traslazione inversa. Viceversa, data una matrice di rotazione (ovvero ortogonale e con determinante positivo), si può risalire all asse u ed angolo θ (formula e dim. sul Buss).

Grafica al Calcolatore Rendering I - 14 In generale una rotazione qualsiasi rispetto ad un asse passante per l origine può essere decomposta nel prodotto di tre rotazioni rispetto agli assi coordinati; i tre angoli prendono il nome di angoli di Eulero La rappresentazione con gli angoli di Eulero non è univoca, ovvero a terne diverse può corrispondere la stessa trasformazione. Una delle rappresentazioni di Eulero impiega gli angoli roll (rollio), pitch (beccheggio) e yaw (imbardata), di derivazione aeronautica. Per convenzione, stabiliamo che la rotazione specificata da roll= θ r, pitch= θ p e yaw= θ y è la seguente Infine un teorema importante: R(θ r, θ p, θ y ) = R y (θ y )R x (θ p )R z (θ r )

Grafica al Calcolatore Rendering I - 15 Teorema di Eulero: ogni trasformazione lineare rigida di IR 3 che preservi l orientamento a è una rotazione attorno ad un asse passante per l origine. Corollario: ogni trasformazione afine rigida di IR 3 che preservi l orientamento si esprime in modo unico come una composizione di una traslazione ed una rotazione attorno ad un asse passante per l origine. a Ovvero che preservi l orientamento (destrorso, sinistrorso) di una terna

Grafica al Calcolatore Rendering I - 16 Cambiamenti di riferimento Fino ad ora abbiamo parlato di trasformazioni sui punti in senso attivo, ovvero il riferimento rimane fisso e i punti vengono mossi L idea di cambiamento di base (trasformazione passiva) che abbiamo già affrontato si ripropone nelli stessi termini anche per i cambiamenti di riferimento Dati due riferimenti (e 1, e 2, e 3, O) e (e 1, e 2, e 3, 0 ) si tratta di trovare una matrice 4 4 che permetta di ottenere le coordinate affini di un punto rispetto al secondo riferimento date le coordinate affini dello stesso punto rispetto al primo Di nuovo in questo caso il punto rimane lo stesso, quello che cambiano sono le sue componenti Le cose vanno esattamente come nel caso dei cambiamenti di base di un riferimento, ovvero che se T è la trasformazione attiva che manda il primo riferimento nel secondo, allora T 1 è la matrice che trasforma le coordinate rispetto al primo riferimento nelle coordinate rispetto al secondo riferimento Attenzione: questo punto sarà molto importante nel seguito, assicurarsi di averlo capito bene

Grafica al Calcolatore Rendering I - 17 Proiezioni Le trasformazioni affini sono usate nella rappresentazione del mondo 3D e nella sua manipolazione Per la generazione di una immagine 2D da tale descrizione saranno invece utili un altra classe di trasformazioni: le proiezioni Y image plane X P image P C pinhole Z object d Il modello geometrico più semplice della formazione dell immagine è la pinhole camera (letteralmente: macchina fotografica a foro di spillo.)

Grafica al Calcolatore Rendering I - 18 Sia P un punto della scena, di coordinate (x, y, z) e sia P la sua proiezione sul piano vista (o immagine), di coordinate (x, y, z ). Se d è la distanza del foro (o centro di proiezione) C dal piano immagine (distanza focale), allora dalla similarità dei triangoli si ottiene: x d = x y e z d = y (1) z e quindi x = dx z y = dy z z = d (2) Si noti che l immagine è invertita rispetto alla scena, sia destra-sinistra che sopra-sotto, come indicato dal segno meno. Queste equazioni definiscono il processo di formazione dell immagine che prende il nome di proiezione prospettica. In forma matriciale si può effettuare la proiezione prospettica, applicando ai punti P rappresentati in coordinate omogenee ( P = (x, y, z, 1)) la matrice di proiezione prospettica 3 4: M = 1 0 0 0 0 1 0 0 0 0 1/d 0 dove d è la distanza tra C ed il piano vista (distanza focale).

Grafica al Calcolatore Rendering I - 19 La proiezione P del punto P sul piano vista si trova in due passi: 1. Si applica a P la matrice M ottenendo una 3-pla P = (x, y, z/d); da notare che non rappresenta un punto (la terza componente non è pari a 1) 2. Si normalizza P dividendo le sue componenti per la terza ed ottenendo P = ( x, y, 1) e dunque P = ( x, y ) (z/d) (z/d) (z/d) (z/d) Si ottiene cosìuna tripla P = (x, y, z/d), che rappresenta in coordinate omogenee il punto di coordinate cartesiane P = ( x, y ). P è la proiezione di P sul piano (z/d) (z/d) vista. La divisione prospettica (o normalizzazione proiettiva) indica il passaggio da coordinate omogenee a coordinate cartesiane e consiste nel dividere per l ultima coordinata omogenea e rimuovere l 1 rimanente. Da notare che nella proiezione si perde l informazione di profondità di un punto, ovvero punti con z iniziale di partenza diversa vengono proiettati nello stesso punto sul piano proiettivo Vi è modo di recuperare tale informazione? Vedremo nel seguito che sarà molto importante poter stabilire dati due punti proiettati nella stessa posizione quale dei due ha profondità (distanza dal piano vista) minore

Grafica al Calcolatore Rendering I - 20 Chiudiamo l argomento notando che fino ad ora abbiamo parlato delle cosiddette proiezioni prospettiche. Alle volte può risultare utile usare un tipo diverso di proiezione denominata proiezione ortogonale (od ortografica). Tali proiezioni sono definite come l interesezione del piano proiettivo con la retta perpendicolare a tale piano e passante per il punto P che si vuol proiettare È un caso particolare di proiezione parallela Si può dimostrare che usando la disposizione di π data prima, la proiezione ortogonale di P si ottiene applicando la seguente matrice: M = 1 0 0 0 0 1 0 0 0 0 0 1 In sostanza l effetto della matrice è quello di rimuovere la componente z.

Grafica al Calcolatore Rendering I - 21 Proiezione prospettica attraverso il centro di proiezione (COP) e proiezione ortografica attraverso la direzione di proiezione (DOP).

Grafica al Calcolatore Rendering I - 22 Rassegna dei sistemi di coordinate Abbiamo visto come vengono gestite dal punto di vista geometrico le trasformazioni 3D e la proiezione prospettica. In molti sistemi grafici il processo coinvolge diversi sistemi di riferimento e trasformazioni tra di essi. Sistemi diversi definiscono spazi diversi (vedremo alla fine il caso di OpenGL). Spazio oggetto (locale) Spazio mondo (world) Spazio vista o camera Spazio 3D screen Normalized device coord. Spazio immagine Viewport (or window) coord. Object definition Compose scene Define lighting Back face culling Local reflecion model Clipping Shading Hidden surface removal Scan conversion Tras. di modellazione Trasformazione di vista Proiezione Tras. di viewport

Grafica al Calcolatore Rendering I - 23 Spazio Locale (local space): è lo spazio dove ciascun singolo oggetto viene definito. Si chiama anche spazio oggetto (object space) o spazio di modellazione (modeling space) Spazio Mondo (world coordinate system): è lo spazio dove la scena o l oggetto completo è rappresentato. Spazio Vista (view space): è un sistema di riferimento centrato sulla telecamera virtuale, che definisce il volume (o frustum) di vista. Si chiama anche camera coordinate system o empheye coordinate system. Spazio 3D-Screen: è lo spazio di vista canonico, che si ottiene trasformando (con deformazione) il volume di vista (frustum) in un parallelepedo. Molte operazioni del processo di rendering avvengono qui (in 3D normalized device coordinates). Spazio Immagine è il sistema di coordinate della immagine finale (pixel). Si ottiene proiettando ortogonalmente il volume di vista canonico e trasformando le coordinate 2D.

Grafica al Calcolatore Rendering I - 24 Spazio vista Lo spazio vista (o view space) è un sistema di coordinate centrato sulla telecamera con l aggiunta della specifica di un volume di vista: un view point C, che stabilisce la posizione dell osservatore nel world space e definisce il centro della proiezione. un sistema di riferimento desctrorso UVN centrato sull osservatore, che definisce la direzione di vista - N e la direzione verticale V (U non ha scelta e punta alla destra dell osservatore). un piano vista (view plane), ortogonale a N e distante d da C, sul quale viene proiettata la scena un volume di vista (o frustum), definito da due piani di taglio (clipping) paralleli al view plane, il near plane ed il far plane. L intersezione del frustum con il piano vista definisce la finestra di vista

Grafica al Calcolatore Rendering I - 25 far plane y V view plane w near plane z N C U x d θ n h f Il frustum è definito dall angolo di vista (verticale) θ e dal fattore di aspetto a = w/h della finestra di vista.

Grafica al Calcolatore Rendering I - 26 In linea di principo, nello spazio vista si potrebbe effettuare la proiezione prospettica, applicando ai punti P la matrice la matrice di proiezione prospettica vista prima. si noti che abbiamo messo il piano vista davanti al centro di proiezione, ma l asse Z punta indietro, quindi le equazioni della proiezione prospettica rimangono inalterate. La proiezione viene effettuata in modo più contorto (apparentemente) di quello appena visto introducendo la trasformazione prospettica (che porta nello spazio 3D-Screen) per poter aggiungere informazione di profondità ai punti proiettati.

Grafica al Calcolatore Rendering I - 27 Spazio 3D-Screen Trasformazione prospettica Invece di proiettare i punti, applichiamo loro la trasformazione 3D specificata dalla seguente matrice (parente della matrice di proiezione prospettica a ); M = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/d 0 Si ottiene cosìuna 4-pla P = (x, y, z, z/d), che dopo la divisione prospettica sortisce P = ( x, y, d) (z/d) (z/d) Le prime due componenti di P sono le coordinate del punto proiettato. La terza coordinata è inutile, nel senso che è uguale a d per tutti i punti proiettati (infatti il piano vista ha equazione z = d). Si osservi che non viene etteffuata alcuna proiezione, anche se le coordinate del punto proiettato prospetticamente sono disponibili. a Angel chiama questa matrice di trasformazione prospettica

Grafica al Calcolatore Rendering I - 28 Si vuole costruire una trasformazione che abbia le stesse coordinate x ed y della proiezione standard, ma che metta nella coordinata z un valore dal quale si possa risalire all ordine di profondità dei punti. A tal scopo sostituiamo la matrice M vista prima con la seguente matrice (che prende il nome di matrice di trasformazione prospettica b ): M = 1 0 0 0 0 1 0 0 0 0 α β 0 0 1/d 0 Applicando M a P si avrà quindi la 4-pla (x, y, αz + β, z/d) che, dopo la divisione prospettica fornisce P = ( x, y, dα dβ/z) (z/d) (z/d) Le prime due componenti sono identiche alla proiezione standard, ma la terza componente (pseudo-profondità) z s = dα dβ/z. per valori opportuni di α e β è una funzione monotona di z. La relazione tra z e z s è non lineare, ma l ordinamento sulla profondità è conservato. b Angel la chiama matrice di normalizzazione prospettica

Grafica al Calcolatore Rendering I - 29 Volume di vista canonico La trasformazione (normalizzazione) prospettica mappa il frustum di vista in un parallelepipedo (per α e β opportuni) chiamato volume di vista canonico. Gli oggetti vengono distorti di conseguenza. Proiettando questo parallelepipedo ortogonalmente (ovvero si elimina la terza coordinata cartesiana, z s nel nostro caso) si ottiene la proiezione prospettica desiderata. y y s z x z s x s Se invece si vuole effettuare una proiezione ortogonale (ortografica), basta sostituire la trasformazione prospettica con una trasformazione (affine) che mappa il volume di vista (un parallelepipedo in questo caso) nel volume di vista canonico.

Grafica al Calcolatore Rendering I - 30 sintetizzando, la proiezione prospettica viene realizzata in due fasi: proiezione prospettica = trasformazione prospettica + proiezione ortografica

Grafica al Calcolatore Rendering I - 31 Diversi sietemi (PHIGS, OpenGL, Renderman,...) adottano convenzioni diverse per le dimensioni del volume di vista canonico. In OpenGL il volume di vista canonico un cubo di lato unitario, in cui il far plane ha equazione z s = 1, ed il near plane z s = 1 Vogliamo dunque scegliere α e β in modo che l intervallo di profondità z [n, f] venga mappato in z s [ 1, 1]. z= f y z= n y=+1 y z z piano immagine piano immagine y= 1 z=+1 z= 1 Nota: il piano vista si prende coincidente con il near plane, dunque d = n.

Grafica al Calcolatore Rendering I - 32 Una tale trasformazione è implementata dalla seguente matrice di trasformazione prospettica con M = c/a 0 0 0 0 c 0 0 0 0 α β 0 0 1 0 α = f + n n f β = 2fn n f c = cot(θ/2) Si può verificare trasformando i vertici del frustum di vista. Questa matrice 4 4 viene chiamata anche (in terminologia OpenGL) matrice di proiezione (projection matrix) anche se, a rigore, non effettua una proiezione dello spazio 3D, ma una sua trasformazione. Si noti che abbiamo sempre considerato la trasformazione operata da una matrice in coordinate omogenee composta da: moltiplicazione matrice-vettore seguita da divisione prospettica. Risulterà utile per il clipping separare le due operazioni (vedi pipeline OpenGL).

Grafica al Calcolatore Rendering I - 33 Spazio Immagine La trasformazione nello spazio immagine si applica dopo la proiezione ortografica. Dipende dalle caratteristiche del display (in senso ampio) Ai punti proiettati del 3D screen viene applicata una matrice di trasformazione affine che : ripristina il fattore di aspetto corretto per l immagine (distorto dalla trasformazione prospettica) scala e trasla l immagine per aggiustarla alla finestra di vista corrente (es. 640 480)

Grafica al Calcolatore Rendering I - 34 Culling e Clipping Il view frustum culling consiste nel selezionare, mediante un test veloce, i poligoni che intersecano il volume di vista. È riconducibile al problema di rilevare collisioni (trattato più avanti) con il view frustum. Il clipping consiste nel ritagliare le parti dei polgoni che sono solo parzialmente contenuti nel volume di vista. Effetto del clipping evidenziato grazie al near plane che interseca oggetti della scena. c Alan Watt

Grafica al Calcolatore Rendering I - 35 Il clipping avviene nello spazio 3D screen: infatti lavorando con il volume di vista canonico, l operazione risulta semplificata, poiché le facce del volume di vista sono ortogonali. I due principali algoritmi di clipping sono (non li vedremo, ma sono spiegati nell Angel, a pg. 288 e seguenti): Cohen-Sutherland Liang-Barsky