Texturing - Tessiture Daniele Marini.

Slides:



Advertisements
Presentazioni simili
SCALA INTERVALLO / A RAPPORTO
Advertisements

Ombre e riflessioni in tempo reale
COORDINATE POLARI Sia P ha coordinate cartesiane
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
POTENZE cosa sono proprietà curiosità visualizzazione.
R. Soncini Sessa, MODSS, L 24b Analisi a molti obiettivi-esempi Rodolfo Soncini Sessa MODSS Copyright 2004 © Rodolfo Soncini Sessa.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
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 prove.
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.
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.
22 Nov 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 22 Texturing
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Campionamento di Immagini
Corso di Elementi di Grafica Digitale Massimo De March
Bump Mapping & Under-Water Effects
Lezione 8 Numerosità del campione
Num / 36 Lezione 9 Numerosità del campione.
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
Modelli Globali Daniele Marini.
Modelli del colore 2 Daniele Marini.
Smoothing Daniele Marini.
Modelli del colore 3 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.
1 Modelli Globali Radiosity Daniele Marini. 2 Radiosity Bilancio radiativo in un ambiente chiuso (senza scambio di energia con lesterno) Indipendente.
Sampling and Quantization
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
I NUMERI IMMAGINARI X2 + 1 = 0 X2 = -1
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Illuminamento e Shading
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Effetti fotorealistici
Modelli Globali: Ray Tracing
Image Based Rendering Daniele Marini.
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:
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
POTENZE cosa sono proprietà curiosità visualizzazione.
Superfici nascoste Daniele Marini.
Texturing - Tessiture Daniele Marini.
1 Struttura di un sistema grafico e frame buffer Daniele Marini.
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
Modelli di Illuminazione
Texturing - Tessiture Daniele Marini.
Texturing Daniele Marini Corso Di Programmazione Grafica aa2007/2008.
Antialiasing tratto da: Han-Wei Shen.
Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2007/2008.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Trasformazioni Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Antialiasing parzialmente tratto da: Han-Wei Shen
Titolo Daniele Marini Davide Gadia Marco Ronchetti Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
22 Nov 2002Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 19 Texturing
Visione e Percezione Matlab Filtri Lineari Operazioni su immagini Piramidi Gaussiane Esercitazione 4 Maggio.
Transcript della presentazione:

Texturing - Tessiture Daniele Marini

Texture mapping 2D, 3D o 4D La texture è una qualsiasi immagine L’operazione di mapping trasferisce l’immagine sulla superficie

Pipe-line di texturing Usa una funzione di proiezione MAPPING Usa una funzione di corrispondenza Calcola posizione nello spazio mondo (x,y,z) Es: proiezione ortografica (proiettare una slide) (u,v) in (0,1) Da (0,1) a es. (256x256), trova valore in array R,G,B Applica funzione di trasformazione dei valori Modifica valore di illuminazione Applica modello illuminazione con terna R,G,B Es. moltiplica R,G,B per 1.1 Perché valori troppo scuri

Gli elementi dell’array di texture sono i texels La configurazione di texture 2D è definita sul piano s,t - coordinate di texture normalizzate in [0,1] o in coord. di array, T(s,t) è la texture Gli elementi dell’array di texture sono i texels La texture map associa a ogni punto dell’oggetto un unico punto su T Ogni punto dell’oggetto viene trasferito al display con le operazioni di rendering

I valori di T sono espressi in (R,G,B) La terna viene usata per modificare la terna (r,g,b) del punto dell’oggetto come calcolata dal modello di illuminazione durante la fase di shading Il mapping: se la superficie è parametrica un punto è: La funzione di mapping puo’ essere lineare (proiezione ortografica):

La funzione è invertibile se ae ≠ bd La conversione alle coordinate schermo: Questo approccio non tiene conto della curvatura, va bene per mappare su un piano

Funzioni di corrispondenza Altre funzioni di corrispondenza possono essere: Wrap, repeat, tile: l’immagine viene ripetuta come una piastrella Mirror: l’immagine viene ripetuta riflettendola verticalmente o orizzontalmente Clamp: i valori esterni a (0,1) sono forzati agli estremi, il bordo dell’immagine si prolunga su tutta la superficie Border: i valori esterni a (0,1) sono resi con un colore proprio, va bene per decalcomanie

Funzioni di modifica Replace: rimpiazza i valori R,G,B della texture agli r,g,b del modello di illuminazione - chiamato anche glow texture Modulate: moltiplica r,g,b per R,G,B

Image texture Mappare una immagine es. 256 x 256 su una superficie piana; se la superficie proiettata supera o è inferiore alla risoluzione dell’immagine: Magnification Minification

Magnification Nasce aliasing, si supera con interpolazione Nearest neighbor: produce pixellizzazione, va bene per piccoli ingrandimenti (max fattore 2) Interpolazione bilineare: smoothing Altri filtri per ingrandimenti elevati (ricampionamento)

Minification Molti texel posson cadere sullo stesso pixel Ancora nearest neighbor, sceglie il texel più vicino al pixel, aliasing forte! Ancora interpolazione bilineare: sceglie il texel medio per il pixel Meglio ricampionamento dell’immagine

MipMapping Mip: “multi in parvo” L’immagine di texture originale viene affiancata da molte versioni via via più piccole Livello 0 originale Livello 1 sottocampionato a un quarto (subtexture), si usa filtro gaussiano Si prosegue fino alla risoluzioe del pixel Attenzione al gamma!per avere birghtness costante

MipMapping Per scegliere quale texture usare si usa un parametro d per cercare di avere pixel:texel in rapporto 1:1 o 2:1 (frequenza di Nyquist) Se un pixel ingloba più texel si scende di livello d individua il livello, la terna (u,v,d) individua il texel, il campione si determina con interpolazione trilineare

Ripmapping Si sottocampiona anche linearmente lungo u e v Permette di evitare effetti di sfocatura ai bordi

Per la curvatura si segue un approccio a due passi: Mappare su una sfera o un cilindro o un cubo - S mapping Mappare la struttura ottenuta sull’oggetto finale - O mapping Secondo passo:

Poiché il rendering procede pixel per pixel, siamo più interessati a conoscere il valore di texture di un singolo pixel, quindi l’approccio più adatto procede in modo inverso, si deve calcolare la preimmagine Aliasing!

Texture mapping in OgL

Il texturing è fatto durante la rasterizzazione della primitiva mappa punti 3D in locazioni (pixel) sul display Ciascun frammento generato viene testato per la visibilità (z-buffer) e se visibile viene calcolato lo shading Durante l’interpolazione di shading si calcola il valore di texture usando ancora interpolazione tra vertici estremi

Dichiarazione della texture Glubyte my_texels [512][512] /* dichiara una immagine di texture glTexImage2D(GL_TEXTURE_2D,0,components,512,512, 0,format,type, my_texels); /*specifica che l’immagine deve essere una Texture components determina il numero di colori (da 1 a 4) format è determinato dai due parametri successivi (valori dei pixel e dim immagine) glEnable(GL_TEXTURE_2D)

Dichiarazione del modo di mapping glTexCoord2f(s,t) /* range di variazione delle coordinate dello spazio texture La texture viene associata alla primitiva all’atto della dichiarazione: glBegin(GL_QUAD); glTexCoord2f(0.0, 0.0); glVertex2f(x1, y1, z1); glTexCoord2f(1.0, 0.0); glVertex2f(x2, y2, z2); glTexCoord2f(1.0, 1.0); glVertex2f(x3, y3, z3); glTexCoord2f(0.0, 1.0); glVertex2f(x4, y4, z4); glEnd();

Posso usare anche un intervallo inferiore di s e t, in tal caso viene mappata solo una parte della texture; OgL interpola i valori Cosa succede se si specificano valori di s e t esterni all’intervallo 0,1? Potremmo volere che la texture si ripeta periodicamente Oppure vorremmo “clampare” gli estremi ed estendere 0 ed 1 per i valori inferiori o superiori glTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT) /*texture ripetute glTexParameter(GL_TEXTURE_WRAP_S,GL_CLAMP) /* texture “clampate”

Aliasing: raramente un pixel corrisponde a una coordinata esatta dello spazio texture (a un texel) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR applica un filtro smooth 2x2

mipmapping OgL permette di creare una serie di array di texture a risoluzione decrescente gluBuild2DMipmaps(GL_TEXTURE_2D,3,64,64,GL_RGB, GL_UNSIGNED_BYTE,my_texels) /* crea le texture 64x64-32x32-16x16-8x8-4x4-2x2-1x1 glTexParametrf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST) /*invoca l’opzione mipmap

Influenza del colore Il colore può essere modulato o coperto dalla texture: glTexEnv(GL_TEX_ENV,GL_TEX_ENV_MODE,GL_MODULATE) glTexEnv(GL_TEX_ENV,GL_TEX_ENV_MODE,GL_DECAL)

Bump mapping

Bump mapping Perturbazione della normale Funzione di bump d(u,v): Meglio perturbare la normale e non il punto:

Environmental mapping Simula riflessioni a specchio senza ray tracing, chiamato anche reflection map Si calcola la proiezione dell’ambiente su una forma determinata (sfera o cubo nel caso di ambienti chiusi) La proiezione viene trattata come una texture, ma la texture viene proiettata dal punto vista dell’osservatore

Il programma applicativo deve calcolare la proiezione dell’ambiente sulla superficie intermedia (sfera o scatola) OgL genera automaticamente le coordinate di texture per un mapping sferico

Nebbia ed effetti di profondità Depth cueing Fog factor f viene trattato come il coefficiente alfa blending, è approssimato da una funzione del tipo GLFloar fcolor[4] = […] glEnable(GL_FOG) glFogf(GL_FOG_MODE,GL_EXP) glFoGf(GL_FOG_DENSITY,0.5) glFogfv(GL_FOG_COLOR, fcolor)