1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Ombre e riflessioni in tempo reale
a’ = f(a) Definizione e proprietà
angoli orientati negativamente se la rotazione avviene in verso orario
1 la Torre Berardino Force rendering & Collision detection Dipartimento di Ingegneria dellInformazione Siena Ore F1F1 F2F2.
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Matrici di Proiezione Prospettica
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Scene Modelling, Recognition and Tracking
Scan conversione di poligoni
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
Smoothing Daniele Marini.
Il calcolo di radiosity
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
Lavorare con le matrici in OGL
1 Modelli Globali Radiosity Daniele Marini. 2 Radiosity Bilancio radiativo in un ambiente chiuso (senza scambio di energia con lesterno) Indipendente.
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
Determinazione delle superfici visibili
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Le proiezioni e la prospettiva
Effetti fotorealistici
Modelli Globali: Ray Tracing
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Le ombre proiettate Daniele Marini.
1 Scan conversione di poligoni Daniele Marini. 2 Test interno-esterno Scan conversione di un poligono = decidere se pixel interno Test di intersezione:
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Le trasformazioni Daniele Marini.
Le proiezioni e la prospettiva
Le proiezioni e la prospettiva
Programmazione grafica 1
Superfici nascoste Daniele Marini.
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
1 Il rendering Daniele Marini. 2 Fasi del rendering Modellare Elaborazione geometrica - geometric processing Rasterizzazione Display.
Pippo.
Modelli di Illuminazione
Controllare le proiezioni
Intersezioni e distanze
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Trasformazioni Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
1 Ottimizzazione della scena Daniele Marini. 2 Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici.
Ottimizzazione della scena Daniele Marini. Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici 2 Programmazione.
Controllare la prospettiva
1 Ottimizzazione della scena Daniele Marini. 2 Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici.
Controllare la prospettiva
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2007/2008.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Ottimizzazione della scena Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Controllare le proiezioni
Collisioni Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Daniele Marini Con contributi di Maurizio Rossi
Transcript della presentazione:

1 Ottimizzazione della scena: culling (decimazione) Daniele Marini

2 Tipi di decimazione back face view frustum culling portali detail occlusion culling

3 Quando farlo per un pieno controllo: nella applicazione si può anche sfruttare info contenute nel fram buffer e includerlo nella pipe line il metodo ideale spedisce alla pipe line solo EVS exact visibility set, primitive parzialmente o totalmente visibili –complessità alta O(n 2 ) alternativa PVS potentially visible set, e deve comprendere EVS (conservativo), pena errori nelle immagini (approssimato) –sfrutta z-buffer per la visibilità finale

4 La pipe line ApplicGeomRast Model and View Transform LightingProjectionClipping Screen Mapping

5 Riassunto coordinate Model and View Transform LightingProjectionClipping Screen Mapping World Coord. 3D World Coord. 4D (Omogenee) Normalized Device Coord. 4D (Omogenee) Window Coord. 2D (x’,y’) coordinate schermo + coordinata z di profondità mantenuta a parte

6 Back face culling sono le facce autonascoste, orientate in senso opposto all’osservatore si calcola la normale al poligono proiettato sul piano immagine: n=(v 1 -v 0 )x(v 2 -v 0 ), v i vertici poligono; la normale ha la forma (0,0,a) o (0,0,-a) con a>0; se asse z punta verso lo schermo (0,0,a) indica un poligono orientato verso l’osservatore il risparmio consiste nell’evitare la scan conversione dei poligoni esclusi accresce la complessità nella fase di geometria

7 Back face culling si può eseguire prima nello stadio geometrico, lavorando nello spazio “vista” non cambia nienete dal punto di vista geometrico è meglio eseguirlo nello spazio schermo: errori di arrotondamento possono modificare lievemente l’orientamento di un poligono

8 Back face culling OGL disponibile la funzione glCullFace da chiamare dopo aver abilitato il culling con: glEnable OGL permette di riorientare le facce di un poliedro con glFrontFace(GL_CCW|GL_CW) considera orientato verso l’osservatore un poligono con i vertici in senso antirorario o orario rispettivamente

9 Clustered Back face culling scarta un gruppo di poligoni dello stesso tipo (mseh, triangoli) si genera un normal cone racchiudendo tutte le normali ai vertici entro un cono troncato (per contenere tutti i vertici) di apertura  (semiangolo del cono) vertice del cono orientato come l’osservatore in f (vertice del cono contro- orientato in b) osservatore in e il test è: n.((e-f)/||e-f||)≥cos(  )=sin(  ) si può fare il test con il cono contro-orientato

10 b f   L L L L front cone back cone a n

11 View frustum culling valutare il BV rispetto al frustum di visione se il BV è gerarchico anche il culling è gerarchico le primitive interne a un BV devono essere clippate se esegue nella fase di applicazione (CPU) è quindi molto efficiente si può applicare anche a BSP tree per scenari statici

12 View frustum culling si sfrutta anche la coerenza tra frame: se un bV è esterno lo è probabilmente anche nel frame successivo –si memorizza un indice, al frame successivo si testano per primi i BV con indice se i movimento sono vincolati (traslazioni o rotazioni attorno un solo asse) al frame successivo il test può essere accelerato, memorizzando la distanza dal piano del frustum e aggiornandola

13 Portali adatto a scenari architettonici, una parete svolge un ruolo di occlusore si considera un frustum limitato da finestre o porte quando si attraversa una finestra o una porta il frsutum viene aggiornato

14 Portali si esegue un pre-processing suddividendo lo scenario in celle (una per ogni stanza o corridoio) porte, finestre e pareti della cella formano la struttura dati le celle si organizzano in un grafo di adiacenza per descrivere la topologia della scena

15 Portali 1.localizza la cella V dove si trova l’osservatore 2.inzializza un BB P rettangolare pari alla finestra di vista 3.renderizza la geometria della cella V con view frustum culling, definito da P e con vertice nell’osservatore 4.ripeti ricorsivamente per le celle adiacenti seguendo il grafo di adiacenza; per ciascun portale della cella corrente proietta il portale sullo schermo e trova il rettangolo AABB della proiezione; calcola l’intersezione logica di P e del rettangolo AABB proiettato

16 Portali 5. per ciascuna intersezione logica: se è vuota allora la cella adiacente non è visibile e si scarta, se non è vuota esegui il culling rispetto al frustum che va dall’osservatore al rettangolo proiettato dall’intersezione rettangolare 6. se l’intersezione logica non era vuota le celle adiacenti successive possono essere visibili e si ripete ricorsivamente da 3. con un nuovo P generato dalla intersezione precedente; ogni oggetto già esaminato va etichettato per evitare di ripassarci

17 eye

18 Dettagli (detail culling) si stima l’area in pixel del BV sul piano di proiezione se è sotto una soglia non si rende quando l’osservatore è fermo viene disabilitato e si rende tutto è simile a un LOD semplificato a due soli livelli

19 Occlusion culling evitare di rendere più volte oggetti che si occludono lavorando sempre sugli stessi pixel nello z-buffer (paesaggi, alberi, edifici,...) occlusion culling è simile a un test di ombra molte soluzioni: spazio immagine, spazio oggetti, spazio raggi altra classificazione: basati su un punto, basati su una cella

20 Occlusion culling richiede un test di visibilità, basato su ordinamento tra oggetti G insieme di oggetti da rendere O R insieme che rappresenta le occlusioni P insieme di occlusori potenziali

21 Occlusion culling O R =empty P=empty for each object g in G if (isOccluded(g,O R ) skip(g) else render(g) add(g,P) if(largeEnough(P)) update(O R, P) P=empty end

22 Occlusion culling è costoso una buona strategia consiste nel creare una rappresentazione degli occlusori iniziale e aggiornarla frame per frame si può accelerare ordinando gli oggetti ssecondo la distanza