Bump Mapping & Under-Water Effects

Slides:



Advertisements
Presentazioni simili
Relighting everything Real Time relighting..... Luminosita e contrasto? Aumentare la luminosita di una immagine non vuol dire assolutamente reilluminare!
Advertisements

Osservatorio Astronomico Lic. Classico A. D. Azuni Sassari
Ombre e riflessioni in tempo reale
BUMP MAPPING dott.ing.jun Alex Zupan –
LEZIONI DI OTTICA per le scuole medie Dott
Rendering È quel processo di creazione di un’immagine bidimensionale a partire da un modello tridimensionale Tale immagine deve tendere a rappresentare.
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
Texture.
Texture Mapping.
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.
25 Nov 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 22 Estensioni Opengl, Multitexturing,
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.
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 2006/07 Lezione.
22 Nov 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 22 Texturing
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 30 MMeditor e collision detection
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Applicazioni progettuali di grafica computerizzata a.a. 2008/2009 Rendering grafico.
La Rappresentazione cartografica
Introduzione alla grafica digitale 2005,6,7,8,9,.. Matjaž Hmeljak.
Corso di Elementi di Grafica Digitale Massimo De March
Texturing - Tessiture Daniele Marini.
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.
Stefano CERONI Sara TOIA
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
La polarizzazione e le lenti polarizzate
“Come fanno due corpi a sentirsi a distanza, attraverso
11 ottobre 2012 Modelli a poligoni Roberto Pirrone.
GRAFICA DIGITALE Silvia Lombardi Trento, 18 Maggio 2012
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Corso tecniche di rappresentazione dello spazio A.A. 2009/2010 docente Arch. Emilio Di Gristina 11.
Illuminamento e Shading
Studente: Banovaz Diego Trieste, 15/12/2008AA: 2008/2009.
Effetti fotorealistici
Face Recognition Gessica Vagnoli.
Davide Gadia Davide Selmo
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Daniele Marini Con contributi di Maurizio Rossi
Le ombre proiettate Daniele Marini.
Dal modello alla visualizzazione: Verso il foto realismo Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Corso di Programmazione Grafica
Corso Di Programmazione Grafica
00 corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina.
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 00.
Superfici nascoste Daniele Marini.
1 Struttura di un sistema grafico e frame buffer Daniele Marini.
Modelli di Illuminazione
Texturing - Tessiture Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2006/2007.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Training Course on Architectural Heritage Conservation
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Formule generali per il calcolo di superficie e volume di solidi a 2 basi Preparatevi all’esame di matematica e scienze, studiando queste pagine, rielaborate.
22 Nov 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 19 Texturing
Geometria Solida Poliedri Prima parte.
Simulazione Interattiva di Capelli Marta De Cinti Anno accademico 2005/2006 Università di Roma “La Sapienza” Relatore Prof. Marco Schaerf Correlatore Ing.
LEZIONI DI OTTICA.
Prova di esame di Fisica 4 - A.A. 2004/5 I prova in itinere 5/4/05 COGNOME…………..……………………… NOME. …………… ……… ) Due prismi di vetro sono accoppiati.
Transcript della presentazione:

Bump Mapping & Under-Water Effects Dott. Stefano Tubini

Bump Mapping Il bump mapping è un metodo per simulare superfici scabrose, con rilievi, con textures bidimensionali. Per esempio: se realizziamo un oggetto che rappresenta un tronco di legno, le fenditure della corteccia, grazie al bump mapping, possono apparire tridimensionali anche se non sono realizzate realmente con poligoni. In questo modo, eventuali cambi di illuminazione possono far apparire tali solchi profondi anche se sono assolutamente piatti; grazie al bump mapping si possono, utilizzare molti meno poligoni per disegnare un oggetto 3D.

Bump Mapping Types Emboss Bump Mapping Emboss non è il termine corretto: in realtà questo metodo si dovrebbe chiamare Multi-Pass Alpha Blended Bump Mapping, che rende molto meglio l'idea di come agisce. Con l'emboss bump mapping viene creata una texture monocromatica che è la mappatura luminosa della textures stessa. Riapplicandola sulla texture principale mediante il canale alfa, che gestisce la trasparenza dei pixel, si ottiene la texture finale. In pratica, si sfrutta la variazione dell'angolo di incidenza della sorgente luminosa per simulare la scabrosità della texture. Questo metodo di bump mapping è stato il primo realizzato ed è gestibile da quasi tutti i chip grafici, anche se l'incidenza sulle prestazioni dipende da come viene poi effettivamente implementato in hardware. La resa qualitativa non è eccellente.

Bump Mapping Types Environment map bump mapping : è uno tra i metodi più nuovi apparsi nel campo della grafica 3D. Famoso è quello del G400, il chip Matrox che per primo ne ha diffuso in modo significativo l'utilizzo. L'environment map bump mapping utilizza 3 texture diverse: la texture di base, una bump map ed una environment map. La bump map contiene i valori di altezza dei particolari della texture di base. Per capire meglio riprendiamo l'esempio della texture della corteccia: avremo i solchi più profondi che rappresenteranno il livello di base, avremo i rilievi più alti che potranno sporgere di 10 unità, quelli intermedi di 5 unità, ecc... Tutti questi valori sono raccolti nella height map sotto forma di una matrice di valori. L'environment map è la matrice che contiene le informazioni su cosa deve essere fatto: in genere, l'environment map può essere una semplice mappa di illuminazione, ma può contenere anche altri effetti da applicare. Alla fine, quando le 3 texture sono combinate insieme, si ottiene quella finale che sarà applicata sul poligono.

Environment map bump mapping

Bump Mapping Types Dot3 Bump Mapping : Questo metodo di bump mapping è anche detto Dot Product Perturbed Bump Mapping o Per-pixel lighting. L'algoritmo alla base del Dot3 mapping è relativamente semplice e si basa sulla creazione di una normal map, vale a dire una mappa dove i valori di ogni singolo pixel non rappresentano un colore come nelle texture convenzionali (secondo il classico schema RGB [red-green-blue]) ma vettori 3D, o normali (rette perpendicolari). A questo punto si esegue un prodotto (da cui "dot product") tra queste normali ed il vettore della luce: il risultato indica l'intensità di riflessione della luce per ogni pixel trattato. Modulando questo valore con il pixel della texture di base si ottiene la texture finale che sarà applicata all'oggetto.

Dot3 Bump Mapping Texture Normal Map Final Image

Bump Mapping (Normal Map) Generata da programmi dedicati a partire dalla immagine della texture di partenza. Esiste un plugin del noto programma di grafica open-source Gimp per la loro creazione. La Normal map è rappresentata da una matrice a due dimensioni di valori di elevazione. Questa bump map è definita come la differenza scalare F(u,v) tra la superficie piatta P(u,v) e la superficie rialzata desiderata P'(u,v) lungo la normale N per ogni punto u,v della texture. I colori rosso, verde, e blu della Normal map rappresentano I valori delle X, Y, Z del vettore normale in ogni punto.

Bump Mapping (Teoria 1) Scostamento rispetto a u : Scostamento rispetto a v : Calcolo della nuova normale :

Bump Mapping (Teoria 2) Il vettore normale a u,v è calcolato mediante il prodotto incrociato delle derivate parziali di P' in u e v. I valori Fu e Fv sono facilmente calcolabili come scostamenti della 2D bump map, e Pu e Pv possono essere calcolati direttamente dalle cordinate della superficie.

Dot3 Mapping (Codice) Associo normal map alla texture unit 0 glActiveTextureARB(GL_TEXTURE0_ARB); glBindTexture(GL_TEXTURE_2D, oggetto3D->normalMap); glEnable(GL_TEXTURE_2D); //Associo normalisation cube map alla texture unit 1. Normalisation cube map: può essere vista come 6 texture 2D posizionate in modo da formare un cubo. glActiveTextureARB(GL_TEXTURE1_ARB); glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, normalisationCubeMap); glEnable(GL_TEXTURE_CUBE_MAP_ARB); … Dot 3 Bump Mapping … glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_DOT3_RGB_ARB); … Texture Rendering

Parallax Mapping Parallax Mapping è un miglioramento della tecnica del bump mapping applicata alle textures nelle applicazione di 3D rendering come i video games. Le textures, con l’utilizzo di questa tecnica avranno una maggiore profondità e realismo senza aumentare la loro complessità poligonale. Il Parallax mapping agisce su di una texture modificando le coordinate di ogni punto che la compone di un valore uguale a quello riportato nella normal map associata.

Parallax Mapping Senza Parallax Mapping Con Parallax Mapping

Under-Water Effects Componenti Effetto Sottomarino Colore sfondo. Nebbia. Caustics su Oggetti Scena. Superficie marina. Moto ondoso della superficie.

Effetto Nebbia Rende più realistica la simulazione di visibilità sottomarina. La luce ha più difficoltà a penetrare in un mezzo denso come l’acqua rispetto all’aria. Le particelle d’acqua tendono a diffondere in ogni direzione la radiazione luminosa. GLfloat fogColor[4] = {0.23, 0.52, 0.99, 0.7}; glFogi (GL_FOG_MODE, GL_EXP); glFogfv (GL_FOG_COLOR, fogColor); glFogf (GL_FOG_DENSITY, 0.015); glHint (GL_FOG_HINT, GL_NICEST); glClearColor(0.23, 0.52, 0.99, 0.7);

Caustics 1 Riproducono l’andamento della luce che attraversa una superficie di acqua Textures generate mediante algoritmi matematici Riproducono pattern di immagini continui Esistono programmi che si occupano di generarle (Caustics Generator)

Caustics 2 La luce colpendo la superficie increspata dell'acqua genera degli effetti di focalizzazione o “caustics" sulle superfici subacquee (come sulle pareti di una piscina). Questo movimento lumimoso è un'indicazione importante per la distinzione tra ambientazioni subacquee e ambientazioni terrestri. I patterns caustici sono dinamici in modo che in ogni frame è possibile osservare una leggera variazione dell’effetto. Il piano di proiezione delle caustics textures è quasi tangente alla superficie marina rappresentata, così che le caustics disegnate appaiono sempre più allungate man mano che la superficie su cui sono riportate diviene verticale.

Caustics (Codice) …Caricamento Caustics Textures for (int i=0; i<64; i++) { char filename[80]; BITMAPINFO *BitmapInfo; /* Bitmap information */ imageData = LoadDIBitmap(filename, &BitmapInfo); //Converti immagine in texture GLuint Texindex = i + 21; glGenTextures(1, &Texindex); glBindTexture(GL_TEXTURE_2D, i + 21); gluBuild2DMipmaps( GL_TEXTURE_2D, 3, BitmapInfo->bmiHeader.biWidth, BitmapInfo->bmiHeader.biHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, (const GLvoid *) imageData ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); free(imageData); }

Caustics (Codice 2) …Disegno le Caustics Textures su un Oggetto /* The 0.03 in the Y column is just to shift the texture coordinates a little based on Y (depth in the water) so that vertical faces (like on the cube) do not get totally vertical caustics. */ GLfloat sPlane[4] = { 0.05, 0.03, 0.0, 0.0 }; GLfloat tPlane[4] = { 0.0, 0.03, 0.05, 0.0 }; sPlane[0] = 0.05 * caustScale; sPlane[1] = 0.03 * caustScale; tPlane[1] = 0.03 * caustScale; tPlane[2] = 0.05 * caustScale; glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); glTexGenfv(GL_S, GL_OBJECT_PLANE, sPlane); glTexGenfv(GL_T, GL_OBJECT_PLANE, tPlane); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); //associo texture glBindTexture(GL_TEXTURE_2D,currentCaustic); glEnable(GL_TEXTURE_2D); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); … disegno oggetto glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); glDisable(GL_TEXTURE_2D); }

Superficie Marina Mesh piana di triangoli. Utilizza il bump-mapping per rendere più realistici gli effetti luce. Rappresenta un unico oggetto nella scena da rappresentare. La mesh sovrasta tutti gli oggetti che compongono la scena.

Superficie Marina (Moto ondoso) Utilizzando la Idle function dell’OpenGL si aggiornano le posizioni dei punti della mesh. Ad ogni aggiornamento vendono ricalcolate sia le posizioni (x,y,z) di ogni vertice che le normali ad esse associate. Dispendioso in fatto di risorse CPU utilizzate. Formula utilizzata per la simulazione : Sinusoide NO !! Trocoide SI !! (come mi è stato ricordato da un ingegnere navale) Formula Trocoide :

Superficie Marina (Risultato)