Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.

Slides:



Advertisements
Presentazioni simili
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
Advertisements

Ombre e riflessioni in tempo reale
OMOLOGIA.
Frontespizio Economia Monetaria Anno Accademico
DISEGNO TECNICO INDUSTRIALE
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
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 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
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 prove generali.
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 2006/07 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 Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Matrici di Proiezione Prospettica
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 6 U n i v e r s i t à d e l l I n s u b r i a - 1/40 Esercizio Rasterizzazione (risultato.
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.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 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 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.
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.
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 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.
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
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 Lezione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Culling e Sorting Giancarlo Todone
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.
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
1 Informatica Senza Computer? Chiariamoci un po le idee!!! Carlo Gaibisso Informatica senza Computer?
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Determinazione delle superfici visibili
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Cominciamo a parlare di tangenti.
Le proiezioni e la prospettiva
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Texturing - Tessiture Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
Le proiezioni e la prospettiva
Superfici nascoste Daniele Marini.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Controllare le proiezioni
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Controllare la prospettiva
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
lun mar mer gio ven SAB DOM FEBBRAIO.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Sistemi Multimediali II Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Transcript della presentazione:

Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 6: culling: se c'e' ma non si vede!

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 2/40 Se non si vede, che non ci sia CULLING –cioe': non perdiamo tempo a renderizzare ciò che non si vede –buttiamo via le primitive che non cambiano la scena o, che non la cambiano abbastanza –facciamolo il prima possibile! (nel pipeline) i tiangoli! (o segmenti, o punti...) chiaro?

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 3/40 Notazione Lo chiamiamo culling se si scartano primitive intere –o interi gruppi di primive Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clipping Se e' un frammento ad essere scartato, si tratta di testing per frammento quale ci fa piu' gola?

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 4/40 Notazione Lo chiamiamo culling se si scartano primitive intere –o interi gruppi di primive Se una primitiva viene spezzata in una parte visibile e una no, lo chiamiamo clipping Se e' un frammento ad essere scartato, si tratta di testing per frammento (principalmente) una ottimizzazione ! (principalmente) una necessità ! (principalmente) una necessità !

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 5/40 Metodologie di Culling Occlusion culling –non si vede... perchè coperto da qualcos'altro View-frustum culling –non si vede... perchè é fuori dal frustum di vista Backface culling –non si vede... perchè é la parte interna di una superficie chiusa Importance culling –(quasi) non si vede... perchè é la sua proiezione è troppo piccola rispetto alla scena

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 6/40 Tipi di culling Eseguiti dall'hardware –automatici –molto efficienti (overhead minuscolo) –ma scartano tardi, e una primitiva alla volta Eseguiti dall'applicazione (SW) –richiedono algoritmi e strutture dati –meno efficienti (overhead anche grandino) –ma scartano presto, e a gruppi quindi é chiaro che la scelta non é fra HW e SW, ma fra solo HW ed entrambi

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 7/40 Tipi di culling Conservativi –scartano solo se sono sicuri –piuttosto, rischiano di diesgnare anche cose che poi non si vedranno Non Conservativi –scartano seguendo un'euristica –rischiano di NON disegnare qualcosa che (in parte) era visibile! casomai, non succede nulla. Si è solo spercato un po di calcolo GPU se succede, si è creato un errore nel renering, cioè un...

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 8/40 Dicasi artefatto un difetto di rendering, –una discrepanza fra modello e immagine –o fra realtà e modello –tipicamente, piazzare sullo schermo un dettaglio che non c'era parentesi notazione parentesi notazione parentesi notazione..."artefatto"!

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 9/40 Dicasi artefatto un difetto di rendering, –una discrepanza fra modello e immagine –o fra realtà e modello –tipicamente, piazzare sullo schermo un dettaglio che non c'era parentesi notazione parentesi notazione parentesi notazione..."artefatto"!

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 10/40 Metodologie di Culling Occlusion culling –non si vede... perchè coperto da qualcos'altro View-frustum culling –non si vede... perchè é fuori dal frustum di vista Backface culling –non si vede... perchè é la parte interna di una superficie chiusa Importance culling –(quasi) non si vede... perchè é la sua proiezione è troppo piccola rispetto allo schermo

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 11/40 Backface Culling Concetto: –superficie di oggetto chiuso... –non vedro' mai l'interno –cioè non vedrò mai il "dietro delle faccie"

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 12/40 Concetto BASE di questo corso Vettore normale ortogonale ad un piano o ad un un poligono –Detto anche "vettore" normale –Detto anche NORMALE (al/del piano) In pratica: normale == orientamento Nota: a rigore di termini, vettore normale = vettore con norma 1 n ^

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 13/40 Come si trova la normale di un triangolo? Cioe' il suo orientamento nello spazio n ^ v0v0 v2v2 v1v1 facile! e' anche per questo che ci piacciono tanto i triangoli

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 14/40 Come si trova la normale di un triangolo? Traingolo front-facing Traingolo back-facing –"che ci da le spalle" n ^ v0v0 v2v2 v1v1 n ^ v0v0 v2v2 v1v1 view dir

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 15/40 (HW) Backface Culling: dove? frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice set- up

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 16/40 (HW) Backface Culling: quanto? frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice set- up scarto circa il 50% delle faccie... Lo speed-up? x2 ?...ma solo da questo punto in poi!

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 17/40 (HW) Backface culling: quando? Non posso usarlo sempre! –devo sapere a priori che l'oggetto é chiuso primitive qui pixels tutto il pipeline HW di rendering (proiezione, setup, rasterizzazione...) stato di OpenGL occlusion culling ON / OFF

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 18/40 (HW) Backface culling: come? Accendere e spengere: glEnable( GL_CULL_FACE ); glDisable( GL_CULL_FACE ); Decidere se scartare le front o le back-facing : glCullFace(GL_FRONT ); glCullFace(GL_BACK ); Tutti questi comandi cambiano solo lo stato. "non fanno nulla sullo schermo" Quale sarà il default? Quando è utile cambiarlo?

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 19/40 Metodologie di Culling Occlusion culling –non si vede... perchè coperto da qualcos'altro View-frustum culling –non si vede... perchè é fuori dal frustum di vista Backface culling –non si vede... perchè é la parte interna di una superficie chiusa Importance culling –(quasi) non si vede... perchè é la sua proiezione è troppo piccola rispetto allo schermo

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 20/40 (HW) View-frustum culling Dato una primitiva –triangolo, segmento, punto E' dentro il view frustum? –(o parzialmente dentro – conservativi!) y z x Meglio fare il conto nelle Normalized Device Coords [-1,+1] x [-1,+1] x [-1,+1]

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 21/40 (HW) View-frustum Culling: dove? frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice...di nuovo, solo da questo punto in poi! Ma ora possiamo agire dall'inizio! Posso scartare moltissimo della scena! set- up

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 22/40 Software View-frustum Culling Idea: farlo prima di mandare triangoli nel pipeline di rendering Dividere la scena in blocchi –è nata gia divisa la maggior parte delle volte perchè così sarà possibile scartare (=to cull) interi blocchi alla volta!

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 23/40 left plane near plane bottom plane Software View-frustum Culling Problema: –bisogna fare culling prima delle proiezioni –come sono i piani? view frustum top plane far plane right plane

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 24/40 Software View-frustum Culling Parte 1/4: test di un singolo poligono Nelle coordinate oggetto o mondo! 6 test con 6 piani del view frustum! Ripasso di geometrica: –i piani...

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 25/40 Software View-frustum Culling Parte 2 /4 : Gerarchia di bounding spheres

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 26/40 Software View-frustum Culling Parte 3 /4 : intersezione sfera view frustum Sfera centro c raggio r Test con un piano p (con normale normalizzata) Facile! –pc > r sfera tutta al di qua del piano –pc < -r sfera tutta al di là del piano –altrimenti: sfera mezza dentro e mezza fuori Test contro view frustum: –testare tutti e 6 i piani

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 27/40 Software View-frustum Culling Parte 4 /4 : algoritmo finale Test effettuato con la Bounding sphere della cella se è TUTTA FUORI del VF CULLED se è TUTTA DENTRO il VF, RENDERED tutta la cella se è PARZIALMENTE dentro il VF: –Se siamo allultimo livello: RENDERED –Altrimenti: Test sulle celle di livello inferiore

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 28/40 Metodologie di Culling Occlusion culling –non si vede... perchè coperto da qualcos'altro View-frustum culling –non si vede... perchè é fuori dal frustum di vista Backface culling –non si vede... perchè é la parte interna di una superficie chiusa Importance culling –(quasi) non si vede... perchè é la sua proiezione è troppo piccola rispetto allo schermo

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 29/40 Occlusion Culling Una forma molto importante di culling Scarta moltissimi poligoni –soprattutto quelli che compongono il "mondo" Ma dove attuarla? frammenti (candidati pixels) Vertici (punti in R 3 ) pixel finali (nello screen-buffer) Vertici proiettati (punti in R 2 ) Z rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 30/40 Cell-Based Occlusion-Culling (software) Idea base: Preprocessing: –dividere il mondo in celle collegate da "portali" –calcolare per ogni cella il "PVS" PVS = Potentially Visible Set cioe' la lista di celle sono visiblili da quella cella Rendering: –trova la cella x dove è l'occhio –rendering solo delle celle nel PVS di x dentro il view frustum di solito molto oneroso computazionalmente vediamo degli esempi

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 31/40 Struttura: BSP-tree il mondo Obiettivo: circa stesso numero di primitive in ogni cella

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 32/40 Quad-Tree stesso obiettivo il mondo

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 33/40 Quad-Tree esempio frame buffer mondo diviso con quad tree celle con bordo bianco sono nel view frustum ma non sono nel PVS: CULLED James Stewart, School of Computing, Queen's University, Kingston, Ontario

M a r c o T a r i n i C o m p u t e r G r a p h I c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a - 34/40 Metodologie di Culling Occlusion culling –non si vede... perchè coperto da qualcos'altro View-frustum culling –non si vede... perchè é fuori dal frustum di vista Backface culling –non si vede... perchè é la parte interna di una superficie chiusa Importance culling –(quasi) non si vede... perchè é la sua proiezione è troppo piccola rispetto allo schermo