Sei sulla pagina 1di 52

Domande/esercizi

* *

* * * *

16/05/12

Che cos' un complesso simpliciale? Cos hanno in comune i triangoli che compongono una fan? Data una mesh complessa, sar possibile decomporla in un numero minore di fan o di strip? Quali vantaggi fornisce la rappresentazione half edge delle mesh? Sapendo che zs = !a"b#z$ ricavare a e b tali che lintervallo z % n, f& venga mappato in %',(& Calcolare la normale di un triangolo di vertici !',',($,!(,','$, !',(,'$ Calcolare l'intersezione della retta perpendicolare al piano definito dai punti !',',($,!(,','$,!',(,'$ e passante per l'origine con la sfera di raggio ) centrata in !*,*,)$$ Descrivere il modello di illuminazione di +hong,
TIM 11/12 2

Applicazione grafica
*

+ossiamo vedere lapplicazione grafica come un front end per il motore di rendering !pipeline$, costruita per alimentare !di poligoni$ -uestultima,

.applicazione grafica ha, tra gli altri/

il compito di costruire e visitare la struttura dati che rappresenta la scena, dove le correlazioni naturali tra le primitive sono rese esplicite !p,es, raggruppate in oggetti$, il compito di inviare alla pipeline di rendering un carico di poligoni da disegnare adeguato alle capacit di -uestultima,
TIM 11/12 3

16/05/12

Gerarchie
* *

.a struttura dati che contiene le primitive della scena bene che ne renda esplcite le naturali correlazioni .a correlazione tra primitive pu0 esprimersi sia tra i poligoni !raggruppamento in oggetti$, sia per gli oggetti stessi !raggruppamento degli oggetti$ Spesso tali raggruppamenti prendono la forma di gerarchie, utilizzando o alberi o grafi, Si avranno essenzialmente tre tipi di raggruppamenti

(, 1erarchie di poligoni/ in tal caso i poligoni della scena vengono distribuiti su una struttura gerarchica !es, ad albero$, .uso tipicamente nellottimizzazione di certe operazioni !ricerca geometrica$ o per risolvere in maniera pi2 agevole il visibilit3 culling !rimozione delle facce che non sono visibili$4
16/05/12 TIM 11/12 4

Gerarchie
), 1erarchie di oggetti/ in tal caso gli oggetti vengono distribuiti su un albero !o un D51$, Si usa per esplicitare -ualche relazione di contenimento !la bottiglia nel frigo nella cucina nella casa nella citt ,,,$ oppure in animazione per agevolare il calcolo della postura di oggetti composti complessi, *, 1erarchia della scena/ !scene graph$ in tal caso la scena descritta da una gerarchia che contiene sia gli oggetti da disegnare, che alcuni stati che determinano come disegnarli !trasformazioni, shading etc,,$, +er fare il rendering della scena basta visitare in modo opportuno tale struttura,
16/05/12 TIM 11/12 5

Scene graph

16/05/12

TIM 11/12

5d esempio, si supponga di avere una applicazione che debba disegnare centinaia di cubi di varie dimensioni e posti in varie parti dello spazio con varie posture e colori 6' inutile definire una mesh poligonale per ciascun cubo, Conviene invece definire una mesh C per un cubo logico !ad esempio un cubo di lato unitario, posto con il baricentro nellorigine ed orientato perpendicolarmente ai tre assi cartesiani$ 7gni cubo da disegnare, una istanza, sar specificato dando una matrice di trasformazione Mi, che conterr una scalatura, una rotazione ed una traslazione tali da avere il cubo desiderato semplicemente applicando Mi a C !che indichiamo con Mi(C)$ 8isogna stare attenti allordine in cui le trasformazioni affini entrano nella matrice Mi4
TIM 11/12 7

16/05/12

Oggetti logici e istanze


*

+rima di cominciare bene vedere brevemente un' importante distinzione che viene spesso usata in linguaggi o applicazioni di grafica al calcolatore .a distinzione -uella tra un oggetto logico ed una sua istanza fisica

Con il primo si intende spesso un oggetto di dimensioni standard, posto in una posizione standard, con propriet di shading !colore etc,$ standard Con il secondo si intende una serie di operazioni !trasformazioni affini, coloritura$ che, applicate all oggetto standard, ne specificano una particolare configurazione

in altri termini loggetto logico un'astrazione di un oggetto, le istanze esplicitano tale astrazione nelluniverso dellapplicazione grafica
TIM 11/12 8

16/05/12

9 vantaggi sono almeno due

(, Da un punto di vista dello spazio occupato dagli oggetti occupa meno una matrice di trasformazione affine che non una mesh per ogni oggetto !cosa non evidente per il cubo$ ), Se devo specificare a mano i cubi da disegnare, pi2 semplice trovare la matrice Mi che non la mesh Mi(C)
*

:ale distinzione !logico vs istanza$ si riflette nei pacchetti di grafica ed in alcuni linguaggi di rendering * 9n genere -uando si crea un oggetto primitivo con -uesti !ad esempio un cubo$ tale oggetto viene creato nellorigine delle coordinate ed orientato in maniera standard * .utente cambia -uindi il cubo scalandolo, ruotandolo o traslandolo nel modo desiderato * 5lternativamente !il caso di ;ender<an, delle 7pen1. e di =;<.$ il programma mantiene una pila !o stac>$ di trasformazioni e -uando si richiama la funzione che crea il cubo logico !ad esempio$, ad esso viene automaticamente applicata la prima trasformazione dello stac> attuale TIM 11/12 16/05/12 9

.a distinzione tra oggetti logici ed istanze pu0 influenzare le strutture gerarchiche da usare * 5d esempio si immagini di avere una struttura gerarchica che descriva lapplicazione precedente, ovvero un insieme elevato di cubi di varia forma, posizione e postura * Se ciascun cubo viene visto come oggetto a se stante, tale gerarchia pu0 ad esempio essere un albero, in cui radice le foglie contengono alcuni dei cubi C1 C2 C3 * Daltra parte se la distinzione tra logico ed istanza esplicitata, si potr mettere nelle foglie il cubo logico, ottenendo cos? un grafo aciclico diretto !D51$ * @odi di tale D51 possono contenere le matrici Mi radice associata allistanza * 9n generale non molto diverso lavorare M1 M2 M3 con alberi o con D51, solo -uestion di gusti !e di efficenza$4 alle volte si usa una via di mezzo
16/05/12 TIM 11/12

10

Gerarchia di oggetti
Considerazioni generali/ * 1li oggetti in una gerarchia possono essere in due tipi di relazione

1li oggetti della gerarchia sono sottoparti di un oggetto pi2 complesso !eA, le dita che formano la mano$ 1li oggetti sono separati, ma vi una relazione di contenimento !eA, la bottiglia che nel frigo$

9l primo tipo di gerarchia viene usato tipicamente in animazioni poichB semplifica la gestione di un oggetto composto 9l secondo caso viene spesso usato per ottimizzazioni della pipeline grafica !se non devo disegnare il frigo, sicuramente non disegno nemmeno il suo contenuto$
TIM 11/12 11

16/05/12

Oggetti composti
* *

Si immagini di voler descrivere una macchina e che la descrizione comprenda le -uattro ruote, e la carrozzeria +osso immaginare di trattare -uesti cin-ue oggetti in modo del tutto indipendente

9n tal caso per specificare la posizione della macchina, devo specificare cin-ue trasformazioni affini, per la carrozzeria e per le ruote4 chimiamole Mc ed Mi con i = ( , , , C 7gni volta devo verificare la coerenza della rappresentazione4 siccome le ruote sono attaccate alla carrozzeria, non potranno essere messe ovun-ue .a mia rappresentazione degli oggetti per0 non mi permette di utilizzare tale relazione e -uindi sono costretto ogni volta a verificare che sia soddisfatto un certo vincolo
TIM 11/12 12

6siste cioB una relazione ben precisa tra le matrici

16/05/12

9n realt il vincolo molto semplice * 9n un riferimento centrato nel baricentro della carrozzeria e tale che -uesta risulti orientata in modo semplice, !Mc=I$, le -uattro ruote saranno posizionate con -uattro semplici traslazioni Ti !non tengo conto della rotazione di -ueste$ * 9n generale -uindi si avr Mi = McTi
* * *

Si vede che si pu0 esplicitare -uesta relazione !e -uindi evitare di fare un test di coerenza spaziale ogni volta$ usando un albero .a radice sar la carrozzeria, con -uattro figli che contengono le ruote .a gerarchia indica che le ruote sono vincolate alla carrozzeria e -ualsiasi matrice affine trasformi -uesta, deve essere applicata anche alle ruote dopo aver applicato le trasformazioni Ti

:ra parentesi, essendo le ruote tutte uguali, -uesto un caso in cui si possono usare istanze di un oggetto logico e -uindi un D51 al posto di un albero,
TIM 11/12 13

16/05/12

Gerarchia di oggetti
*

* *

9n generale, una gerarchia di oggetti definita da un albero in cui ogni nodo contiene uno degli oggetti ed una matrice di trasformazione affine <, detta matrice di trasformazione locale di +er sapere come trasformare loggetto basta trovare lattraversamento dellalbero dalla radice ad Supponiamo che la se-uenza di nodi r, r' rn, rappresenti tale attraversamento, che parte dalla radice r, attraversa i nodi da r' fino ad rn ed arriva in 5llora la matrice di trasformazione da applicare alloggetto in per posizionarlo, o matrice globale di , sar data da

MrMr0 M rnM
16/05/12 TIM 11/12 14

Gerarchia di oggetti
*

* *

Quando -uindi cambiamo la posizione o la posa di un oggetto nella gerarchia, automaticamente tutti gli oggetti nel sottoalbero generato da tale oggetto vengono cambiati nello stesso modo ;uotando o traslando la radice, ad esempio, ruoto o traslo nella sua totalit loggetto composto che la gerarchia rappresenta +er disegnare la scena basta visitare lalbero4 in generale si usa una previsita 5d esempio, si consideri loggetto rappresentato in figura, costituito !con un po di fantasia$ da una base !rossa$, un avambraccio !blu$ ed un braccio !verde$
TIM 11/12 15

16/05/12

Gerarchia di oggetti
*

9n -uesto caso la gerarchia molto semplice e pu0 essere rappresentata sia come albero che come D51 !trascuriamo le due giunture grigie$ Se <b, <cb e <cv sono le matrici locali dei tre elementi, per -uanto visto fino ad ora il braccio verde avr la matrice globale <b<cb<cv, lavambraccio la matrice <b<cb e la base semplicemente <b 5ttenzione/ le rotazioni nelle matrici in generale non saranno rispetto ad un asse passante per lorigine !da dove passa?$
16/05/12 TIM 11/12 16

16/05/12

TIM 11/12

17

* *

Come si fa in pratica la visita di un albero di -uesto tipo? Supponiamo di avere una funzione che disegni ciascun elemento !ad esempio un cilindro, un cubo etc$ che chiamiamo genericamente disegna e che accetta come argomento una matrice C C Supponiamo poi date due funzioni per manipolare le matrici di trasformazione

Copia-Matrice(float *M1, float *M2) copia la matrice contenuta nellarra3 !(D componenti$ <( in <) Moltiplica(float *M1, float *M2, float *M3) che mette in <* il prodotto riga colonna tra <( ed <)

7gni elemento della gerarchia deve contenere un puntatore alla funzione adatta per disegnarlo, una matrice locale di trasformazione ed un puntatore al primo figlio ed al fratello destro !supponendo di aver ordinato i fratelli da sinistra a destra$
TIM 11/12 18

16/05/12

typedef struct{ float M[16]; void (*disegna)(float *M); struct treenode *fratello_destro; struct treenode *primo_figlio; } treenode; void Attraversa(float *Mat, treenode *radice){ float M_t[16]; if (radice == NULL) return; Copia-Matrice(Mat, M_t); // Copia Mat in M_t Moltiplica(Mat,radice->M,Mat) // Mette in Mat radice->M*Mat radice->disegna(Mat); if (radice->primo_figlio != NULL) Attraversa(Mat, radice->primo_figlio); Copia_Matrice(M_t, Mat); // Ripristina Mat if (radice->fratello_destro != NULL) Attraversa(Mat, radice->fratello_destro); TIM 11/12 19 } 16/05/12

* *

5bbiamo visto le gerarchie per descrivere oggetti composti 1erarchie del tutto analoghe, in termini di strutture dati ed algoritmi, vengono usate per esplicitare relazioni di contenimento spaziale di oggetti indipendenti 5d esempio se vi un oggetto treno che contiene degli oggetti passeggeri, chiaro che -ualsiasi trasformazione avviene sul treno deve essere applicata anche ai passeggeri Si usa lo stesso principio di attraversamento di un albero .'albero pu0 essere usato per fare un visual culling grossolano

Oggetti contenuti

16/05/12

Se un oggetto non contenuto nel campo di vista della camera virtuale non viene disegnato e non vengono disegnati anche gli oggetti che esso contiene Dun-ue ad ogni nodo dellalbero gerarchico si pu0 fare un test per capire se loggetto deve essere o meno disegnato4 se il nodo viene scartato si pu0 scartare tutto il sottoalbero che esso genera @on per0 un metodo molto efficiente
TIM 11/12 20

Abbattimento della complessit


*

* *

+er soddisfare re-uisiti di interattivit con scene#modelli complessi, lapplicazione grafica deve applicare tecniche efficienti per filtrare !ridurre$ i dati, in modo da non sovraccaricare la rendering pipeline, Semplificazione geometrica

se loggetto troppo complicato, rendilo pi2 sempliceE aggiustare il livello di dettaglio !numero di poligoni$ della maglia poligonale rispetto alla distanza del punto di vista, in modo da non processare inutilmente poligoni praticamente invisibili !troppo piccoli$, filtrare e i poligoni che non dovranno essere disegnati perchB non visibili,
TIM 11/12 21

.ivello di dettaglio !.7D$/

=isibilit3 culling/

16/05/12

Semplificazione geometrica
* * *

Fn modo banale per non sovraccaricare la rendering pipeline gettare via un po di triangoli semplificando i modelli, Sembra semplicistico ma pu0 servire specialmente per modelli sovracampionati come -uelli ottenuti da laser scanning, Semplificazione di maglie poligonali

5bbiamo gi visto alcune tecniche +otete provarle su <eshlab 6s, algoritmo di 1arland Gec>bert

9mpostori planari, .a semplificazione estrema di un oggetto ridurlo ad un piano !un rettangolo$ su cui e mappata !come teAture$ una immagine pre calcolata delloggetto, Ftile per rappresentare oggetti visti da lontano,
TIM 11/12

16/05/12

22

Decimazione triangoli

16/05/12

TIM 11/12

23

Impostori planari
*

.aggiunta di particolari geometrici alla superficie di un oggetto spesso sia proibitiva ed abbiamo gi visto come sia possibile utilizzare dei trucchi !teAture mapping, bump mapping$ di shading per evitare -uesto sovraccarico, pur riuscendo a raggiungere buoni livelli fotorealistici Fnaltra occasione in cui He necessario ricorrere a tali trucchi -uando un numero elevato di oggetti geometricamente complicati devono essere inclusi nella scena, 6sempio/ un terreno anche molto realistico, perde completamente di credibilit se non si vedono alberi !ad esempio$, <a un albero un oggetto piuttosto complesso da un punto di vista geometrico I Se il terreno visto da molto lontano allora sufficiente applicare la giusta teAture al terreno per dare limpressione che -uesto sia ricoperto da foreste
16/05/12 TIM 11/12 24

Impostori planari (sprite)


*

* *

9l problema complesso in una situazione intermedia, in cui siamo abbastanza lontani dal terreno da poter abbracciare con lo sguardo una porzione rilevante di foresta !magari centinaia o migliaia di alberi$, ma troppo vicini perchB una semplice teAture sul terreno basti !si vede che piatto$ 5ltro esempio/ in una esplosione vi sono svariate decine di pezzi che volano da tutte le parti !tipicamente in fiamme$ Se lapplicazione deve introdurre una loro descrizione geometrica, il carico di calcolo sarebbe proibitivo, sopratutto se vi la possibilit di pi2 esplosioni in se-uenza 5ltro esempio/ si supponga di voler fare il rendering di una folla di persone, 9l problema del tutto analogo a -uello degli alberi discusso sopra, con la differenza che le persone si possono anche muovere, 9n -ueste situazioni si introducono i cosiddetti impostori planari o sprite
16/05/12 TIM 11/12 25

Impostori planari (sprite)


6ssenzialmente si tratta di rappresentare loggetto da inserire nella scena come una immagine * :ale immagine viene usata come teAture per un poligono !in genere un rettangolo$ * 9n genere limmagine ha un canale di trasparenza tale che solo loggetto che si vuole rappresentare risulti visibile, ovvero non si vede il bordo della teAture * Se si posiziona tale poligono in modo opportuno, l oggetto sembrer inserito geometricamente nella scena, non semplicemente una immagine )D * +er ogni istanza basta aggiungere, da un punto di vista della geometria, un semplice poligono, Si possono cos? aggiungere centinaia di elementi senza sovraccaricare il motore di rendering grafico, *16/05/12 Come va posizionato il poligono? TIM 11/12 Dipende dall applicazione, 26
*

16/05/12

TIM 11/12

27

* * *

16/05/12

9n genere, se la telecamera si pu0 spostare liberamente nella scena, bisogna far si che il poligono non venga mai visto di taglio !altrimenti risulta palese la sua natura bidimensionale$ .a tecnica pi2 nota va sotto il nome di billboarding 9l poligono viene ruotato intorno ad un suo asse per far si che la faccia del poligono punti sempre in direzione della camera Se n la normale al poligono e v il vettore di vista, ovvero il vettore che specifica la direzione dalla camera al billboard !entrambi i vettori si suppongono normalizzati$, allora bisogner fare in modo che n v = 1 Se limpostore possiede, grosso modo, una simmetria sferica, allora sar possibile ruotarlo per soddisfare la precedente condizione Se loggetto da simulare ha simmetrie pi2 restrittive !ad es, cilindrica nel caso di un albero$ allora la tecnica ha senso solo se la telecamera vincolata a stare su un piano perpendicolare allimpostore, o comun-ue molto vicino a tale piano TIM 11/12
28

9noltre muovendo la telecamera si pu0 notare come loggetto mostri sempre la stessa faccia allosservatore, il che puHo risultare strano, 9n presenza di molti impostori ed in scene viste molto velocemente comun-ue non vi si fa caso, * Fna variante prevede di cambiare immagine a seconda dellangolo di vista !tipico il caso di J immagini$ * .esempio degli alberi la pi2 nota applicazione del billboard, Se la telecamera vincolata a rimanere vicina al terreno e a puntare in direzione parallela a -uesto, allora gli alberi possono rappresentarsi efficacemente tramite billboard * Fna variante, meno efficace, -uella di costruire l albero come due poligoni intersecantesi posti perpendicolari e proiettare limmagine su entrambi i poligoni4 in -uesto caso, per ottenere leffetto *D non c bisogno di ruotare limpostore * Fn altro esempio tipico di billboard He la simulazione delle lens flare, ovvero le riflessioni interne tipiche di alcuni obbiettivi di telecamere o gli effetti di rifrazione !molto di TIM 11/12 16/05/12 29 moda, ma poco significativi$
*

sempio

16/05/12

TIM 11/12

30

!illboarding
* *

Fn altro uso tipico dei billboard la simulazione di esplosioni e, pi2 in generale, per effetti che coinvolgano numerose particelle Ciascuna particella viene rappresentata da un poligono con teAture opportuna e viene spostata nella scena avendo sempre cura che la faccia del poligono sia sempre rivolta in direzione dellosservatore, Si possono usare sistemi di particelle siffatti per simulare, ad esempio, effetti atmosferici !neve, pioggia, etc$

16/05/12

TIM 11/12

31

"i#ello di dettaglio ("OD)


*

16/05/12

+er descrivere un oggetto complesso con una mesh mantenendo un sufficiente dettaglio geometrico sono necessari tipicamente molti poligoni, 5ltrimenti vi sar una mancanza di dettaglio -uando loggetto viene analizzato da vicino, =iceversa vi sar uno spreco di risorse -uando loggetto lontano dal punto di vista !viene proiettato su pochi piAel dellimmagine$, Fna soluzione -uella di rappresentare loggetto con una mesh diversa a seconda della distanza dallosservatore4 tipicamente se ne usano tre o -uattro, Questo approccio per0 non efficiente -uando si ha una variazione del punto di vista continua !la telecamera si sposta$ e loggetto da rappresentare molto grande rispetto al campo di vista !es, terreno$, 9n tal caso alcune parti delloggetto possono risultare vicine ed alcune lontano
TIM 11/12 32

$eal%time Optimall& Adapting 'eshes


6' necessario introdurre strutture dati multirisoluzione che consentano di modellare la scena in modo che la sua rappresentazione !triangoli$ possa variare in maniera continua e dinamica, 6sempio/ algoritmo ;75<, basato sui binar3 triangle tree,

Si immagini di voler costruire una tessellazione con triangoli che approssimi un certo heightfield Fn heightfield una matrice i cui elementi !numeri interi di solito$ vengono interpretati come altezze su un livello di riferimento .a triangolazione pi2 semplice data dal rappresentare il terreno con una griglia cui vertici siano alle altezze date dalla mappa !la griglia ha le stesse dimensioni dellarra3$, e poi suddividere ciascun -uadrilatero in due triangoli con una diagonale, Sebbene molto veloce da fare, -uesta mesh non dinamica, ma statica !livello di dettaglio fisso e costante$
TIM 11/12 33

16/05/12

$eal%time Optimall& Adapting 'eshes


6' necessario introdurre strutture dati multirisoluzione che consentano di modellare la scena in modo che la sua rappresentazione !triangoli$ possa variare in maniera continua e dinamica, 6sempio/ algoritmo ;75<, basato sui binar3 triangle tree,

Si immagini di voler costruire una tessellazione con triangoli che approssimi un certo heightfield Fn heightfield una matrice i cui elementi !numeri interi di solito$ vengono interpretati come altezze su un livello di riferimento .a triangolazione pi2 semplice data dal rappresentare il terreno con una griglia cui vertici siano alle altezze date dalla mappa !la griglia ha le stesse dimensioni dellarra3$, e poi suddividere ciascun -uadrilatero in due triangoli con una diagonale, Sebbene molto veloce da fare, -uesta mesh non dinamica, ma statica !livello di dettaglio fisso e costante$
TIM 11/12 34

16/05/12

$eal%time Optimall& Adapting 'eshes


*

9 binar3 triangle tree sono una struttura dati simile al -uadtree,


Si parte dalla considerazione geometrica che possibile dividere un triangolo rettangolo in due triangoli rettangoli 9terando tale suddivisione si ha una gerarchia di triangoli, in modo del tutto simile alla gerarchia di -uadrati del -uadtree .albero associabile a tale struttura binario !a differenza del -uadtree$ Come nel -uadtree la suddivisione puHo non essere omogenea, alcuni triangoli possono essere divisi, altri no

Come vedremo una struttura ideale per rappresentare una mesh di triangoli con una risoluzione non omogenea

16/05/12

TIM 11/12

35

$eal%time Optimall& Adapting 'eshes


*

:ipicamente per ogni triangolo si tengono dei puntatori ai due figli !destro e sinistro$ ed ai tre triangoli adiacenti dello stesso livello, ovvero il triangolo vicino di base !-uello che incide sullipotenusa$ al triangolo vicino destro ed a -uello sinistro

16/05/12

TIM 11/12

36

$eal%time Optimall& Adapting 'eshes


*

* *

Supponiamo per semplicit che lheightfield sia -uadrato !@ @$, Si parte con il creare -uattro vertici nei -uattro angoli della mappa e nel dividere tale -uadrato con una diagonale 5 -uesto punto si potranno suddividere i due triangoli risultati con il metodo di suddivisione visto per i binar3 triangle tree .a divisione pu0 procedere su profondit elevate dove sia richiesto un livello di dettaglio alto, mentre pu0 fermarsi a basse profondit !nel senso dellalbero$ in zone in cui non sia richiesto un alto dettaglio Fn commento prima di proseguire/ la triangolazione nello spazio *D sar composta, in generale, da triangoli non rettangoli4 per -uanto riguarda le operazioni sul triangle binar3 tree, si immaginer sempre -uesto proiettato sul piano z = ', in tal modo i suoi triangoli sono rettangoli ed ha senso parlare di ipotenusa di un triangolo in modo univoco
16/05/12 TIM 11/12 37

$eal%time Optimall& Adapting 'eshes

* *

+er decidere -uando suddividere un triangolo e -uando non farlo occorre avere una funzione errore !detta alle volte metrica$ che ci dica -uanto la superficie triangolata lontana dalla superficie definita dallheightfield in una dato triangolo Discutiamo una scelta della metrica semplice, ma efficace Dato un triangolo dellalbero, definiamo la sua varianza come la differenza tra il valore dellheightfield nel centro dellipotenusa ed il valore medio dellheightfield sui due vertici del triangolo incidenti sullipotenusa vart = |h(ti) (h(t2) + h(t1))/2| dove t il triangolo, ti il centro dellipotenusa, t2 e t1 i due vertici di t incidenti sullipotenusa ed h la funzione che interpola i valori dellheightfield per ogni punto del piano A3 7vviamente il punto ti sul piano xy dato da ti = (t1+t2)/2

16/05/12

TIM 11/12

38

$eal%time Optimall& Adapting 'eshes


* *

.a suddivisione ricorsiva non deve introdurre inconsistenze nella triangolazione !crac> o giunzioni a :$ +er esempio nella seguente figura, la suddivisione del triangolo superiore e non di -uello inferiore introduce una inconsistenza nella mesh risultante !-uello inferiore un -uadrilatero$ Si devono fare ulteriori suddivisioni, separando diversi casi particolari !nulla di complicato$

16/05/12

TIM 11/12

39

$eal%time Optimall& Adapting 'eshes


*

* *

5 -uesto punto si pu0 procedere con literazione/ triangoli con varianza superiore ad una certa soglia vengono suddivisi e si itera il test sui figli cos? ottenuti .a suddivisione avviene fino a -uando tutti i triangoli della mesh hanno varianza inferiore ad una soglia Se si cambia il valore di tale soglia a seconda del punto di vista !pi2 alta -uando ci si allontana e viceversa$, allora si sar pi2 tolleranti nelle zone lontane dalla telecamera .effetto netto di avere zone con molto dettaglio e vicine alla telecamera tessellate in modo fitto, zone lontane e con pochi dettagli tessellate in modo sparso 5llo spostarsi della telecamera cambiano le soglie e -uindi la triangolazione si adatta al punto di vista
16/05/12 TIM 11/12 40

Attenzione(
* * *

Se calcolo sulla C+F il modello aggiornato c' un carico computazionale notevole Si preferisce oggi mandare un modello multirisoluzione alla 1+F !tanto la memoria notevole$ ed evitare calcoli sulla C+F Si parla ad esempio di geomipmapping

16/05/12

TIM 11/12

41

)isibilit& culling
*

+er -uanto la determinazione della visibilit sia un problema oramai risolto in hardKare con lo z buffering, anche la scheda pi2 veloce non pu0 gestire una intera scena fatta da milioni di poligoni, garantendo tempi di risposta interattivi, Daltra parte spesso le scene sono densamente occluse oppure sono troppo grandi per essere esaminate da un solo punto di vista, Questo implica che in molte situazione solo una frazione della scena effettivamente visibile, Quindi, lapproccio naive di spedire tutti i poligoni della scena alla rendering pipeline non praticabile e non intelligente, @on ci si pu0 affidare completamente ad algoritmi di visibilit !=SD$ che esaminano ciascuna primitiva !o poligono$ della scena per risolverne la visibilit !costo lineare nel numero totale delle primitive della scena$, come fa la rendering pipeline,
16/05/12 TIM 11/12 42

)isibilit& culling
*

* * *

.a complessit dell intera scena non deve avere un impatto significativo sul tempo dielaborazione richiesto per disegnare !render$ una singola immagine, +iuttosto -uesto deve solo dipendere dalla complessit della porzione di scena che effettivamente visibile, 5lgoritmi con -uesta propriet si chiamano algoritmi di visibilit output sensitive o algoritmi di visibilit3 culling !=C$, 1li algoritmi di =C operano uno sfoltimento, non lavorano al livello del singolo poligono ma di gruppi di poligoni o di interi oggetti, 1li algoritmi di =C devono essere conservativi, ovvero non scartare mai un poligono che dovrebbe essere visualizzato,

16/05/12

TIM 11/12

43

)isibilit& culling
*

1li algoritmi di =C devono essere efficienti, nel senso che devono scartare un gruppo di poligoni ad un costo inferiore alla scansione di ciascun poligono !altrimenti il lavoro lo poteva fare la rendering pipeline$, 9n generale, lidea del =C cercare di stabilire una approssimazione per eccesso !pi2 stretta possibile$ dellinsieme del poligoni visibili !visible set$, scartando allingrosso i poligoni che non contribuiscono alla immagine corrente, ovvero che non devono essere disegnati, perchB non visibili !occlusi o esterni al vieK frustum$, Si dovr pre elaborare !off line$ la scena, costruendo strutture dati opportune !tipicamente gererchiche$ che possano consentire di scartare i poligoni non visibili in tempo sub lineare in fase di rendering,
16/05/12 TIM 11/12 44

)isibilit& culling
*

:re tipici algoritmi di =C sono/


=ieK frustum culling/ scarto di oggetti esterni a vieK frustum4 7cclusion culling/ scarto di oggetti nascosti allosservatore4 8ac> face culling/ scarto di gruppi di poligoni che rivolgono la faccia posteriore allosservatore

16/05/12

TIM 11/12

45

)ie* frustum culling


*

* *

9l vieK frustum culling consiste nello scartare in modo efficiente e conservativo i poligoni !o gli oggetti$ che non intersecano il volume di vista, Serve ad alleggerire il clipping, ma non va confuso con -uestultimo, 6' riconducibile al problema di rilevare in modo efficiente le intersezioni tra oggetti, in cui un oggetto il il vieK frustum, 5nche il ra3 casting !e ra3 tracing$ si riconduce al problema !analogo$ di rilevare intersezioni oggetto raggio !e le tecniche sono simili$, @ota/ abbiamo accennato al problema delle collisioni tra oggetti !collision detection$ che importantissimo in scene dinamiche, @on tenendo conto della coerenza temporale del moto, il problema delle collisioni si riduce a -uello delle intersezioni, 9n generale pi2 complesso, tuttavia,
16/05/12 TIM 11/12 46

!ounding #olume
*

Fna prima tecnica per sfoltire le intersezioni consiste nel racchiudere gli oggetti in volumi che li contengono, con i -uali sia facile testare lintersezione/ se non c intersezionecon il bounding volume non c intersezione con loggetto racchiuso,

Questo non rende sub lineare la complessit ma semplifica le operazioni, e dun-ue sortisce nella pratica un miglioramento dei tempi,

:ipici bounding volumes sono sfere, parallelepipedi con i lati paralleli agli assi cartesiani !5588, da aAis aligned bounding boA$, oppure parallelepipedi generici !788, da oriented bounding boA$

16/05/12

TIM 11/12

47

+ierarchical Space partitioning


* *

.a tecnica sfrutta una partizione gerarchica dello spazio in regioni, come -uelle offerte da -uad tree, > d tree e 8S+ tree, 8S+ tree per =ieK Lrustum Culling !=LC$, Si visita lalbero ed ad ogni nodo si controlla se il frustum non interseca il piano associato al nodo !sostituendo le coordinate dei M vertici del frustum nelle-uazione del piano i segni devono essere concordi$, Se cos? lintero sottoalbero associato al semispazio che non contiene il frustum pu0 essere eliminato,

16/05/12

TIM 11/12

48

+ierarchical bounding #olumes


*

Si costruiscono gerarchie di bounding volumes, dove al livello pi2 alto si ha un volume che racchiude tutta la scene, ed al livello pi2 basso si hanno bounding volumes per i singoli oggetti,

16/05/12

TIM 11/12

49

.7cclusion culling serve a scartare in modo efficiente e conservativo poligoni !o oggetti$ non visibili perchB nascosti !occlusi$ allosservatore da altri oggetti, Si consideri per esempio un interno di edificio/ le stanze diverse da -uella dove si trova la telecamera non sono visibili, salvo -uelle che lo sono attraverso porte o finestre, Serve ad alleggerire il =SD, ma non va confuso con -uestultimo,

Occlusion culling

Soluzione cell based / lo spazio viene diviso in celle !stanze$ che comunicano attrecerso portali, .idea di fondo che se non si vede un portale, non si vedono nemmeno le celle dietro ad esso, Se il portale invece in vista, bisogna determinare -uali altre celle possono essere visibili attaverso di esso, ovvero si vuole calcolare il +otentiall3 =isible Set !+=S$, .e celle che rientrano nel +=S vengono disegnate,
TIM 11/12 50

16/05/12

9l +=S si pu0 calcolare staticamente !off line$ o dinamicamente

!ac, face culling


* *

Come nel caso del vieK frustum culling, si vuole evitare di processare linearmente tutti i poligoni, 5 tale fine si costruisce una struttura gerarchica in cui i poligoni vengono raggruppati in cluster !gruppi$ basati sulle normali e sulla prossimit, Ciascuno dei cluster induce una partizione dello spazio in * regioni/ -uella alla -uale tutti i poligoni del cluster danno la faccia, -uella alla -uale tutti i poligoni del cluster mostrano il retro, e una regione mista, 5l tempo di rendering, dato un punto di vista, se -uesto giace nella regione ( o ) il destino dei poligoni del cluster determinato, mentre He necessario visitare i sottocluster solo se il punto di vista giace nella regione *,
16/05/12 TIM 11/12 51

$iferimenti
*

5ngel !D,ed,$ capitolo J

16/05/12

TIM 11/12

52

Domande di #erifica
* * * *

Qual la differenza tra D51 albero Qual la differenza tra oggetto logico e istanza? Cosa si intende per scene graph? Quale problema sussiste nell'adattare dinamicamente il dettaglio delle mesh in base al punto di vista,

16/05/12

TIM 11/12

53

Potrebbero piacerti anche