Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
Mat_Insieme Lavoro di Gruppo Prodotti Notevoli
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.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Frontespizio Economia Monetaria Anno Accademico
I MATEMATICI E IL MONDO DEL LAVORO
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
Programmazione 1 9CFU – TANTE ore
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 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.
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.
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.
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 2006/07 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.
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.
Canale A. Prof.Ciapetti AA2003/04
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Cos’è un problema?.
Lezione 6 Encoder ottici
Texturing - Tessiture Daniele Marini.
Velocità ed accelerazione
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Esercitazione 1: Rispetto al test di ansia (Media=25; σ=5), calcolare:
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
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.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
Un trucchetto di Moltiplicazione per il calcolo mentale
Image Based Rendering Daniele Marini.
Texturing - Tessiture Daniele Marini.
Dal modello alla visualizzazione: Verso il foto realismo Daniele Marini.
Corso di Programmazione Grafica
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
Texturing - Tessiture Daniele Marini.
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
Il numero più grande Accademia dei Lincei
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:

Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione 12: realismo a buon prezzo: il texture Mapping

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 2/40 Memoria RAM nelle schede grafiche Frammenti & attributi interpolati Vertici & loro attributi Screen buffer (RGBA) Screen buffer 2 (RGBA) Depth buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice DISPLAY LISTs Texture RAM computazioni per frammento

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 3/40 Texture Mapping Nelle operazioni per frammento si può accedere ad una RAM apposita –la Texture RAM –strutturata in un insieme di Textures ("tessiture") Ogni tessitura è un array 1D, 2D o 3D di Texels (campioni di tessitura) dello stesso tipo

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 4/40 Texels Tipici esempi di texels: –ogni texel un colore (componenti: R-G-B, o R-G-B-A) la tessitura è una "color-map" –ogni texel una componente alpha la tessitura è una "alpha-map" –ogni texel una normale (componenti: X-Y-Z) la tessitura è una "normal-map" o "bump-map" –ogni texel contiene un valore di specularità la tessitura è una "shininess-map" –...

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 5/40 Tipica applicazione: rimappare immagini sulla geometria geometria 3D (mesh di quadrilateri) + RGB texture 2D (color-map) =

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 6/40 Altro esempio

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 7/40 Altro esempio +=

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 8/40 Texture Mapping: Storia 1974 introdotto da Ed Catmull –nella sua Phd Thesis Solo nel 1992 (!) si ha text. mapping hardware –Silicon Graphics RealityEngine Dal 92 a oggi: aumento rapidissimo della diffusione –strada intrapresa soprattutto da low end graphic boards Oggi: una delle piu fondamentali primitive di rendering –il re indiscusso delle tecniche image based Ed Catmull (MEGA-MEGA- GURU)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 9/40 Notazione Texture 2D u v texel Texture Space (o "spazio parametrico" o "spazio u-v") Una Texutre e' definita nella regione [0,1] x [0,1] dello "spazio parametrico" 512 texels 1024 texels 1.0

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 10/40 Texture Mapping Ad vertice (di ogni triangolo) assegno le sue coordinate u,v nello spazio tessitura Screen Space x 0,y 0 x 2,y 2 x 1,y 1 u 0,v 0 u 1,v 1 u 2,v 2 posizione del 1mo vertice attributi del 1mo vertice u 0,v 0 u 1,v 1 u 2,v 2

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 11/40 Texture Mapping Così in pratica definisco un mapping fra il triangolo e un triangolo di tessitura Texture Space Screen Space

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 12/40 Texture Mapping Ogni vertice (di ogni triangolo) ha le sue coordinate u,v nello spazio tessitura Texture Space Screen Space texture look-up

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 13/40 Texture Mapping Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate compreso: coordinate texture (per vertice!) texture look-up interpolo coordinate texture

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 14/40 Problema: interpolazione lineare coordinate texture Non vale per la proiezione prospettica! –era solo una approssimazione –andava bene quando interpolavamo colori, normali –non va bene quando interpoliamo coordinate texture... V1V1 V2V2 V3V3 p f(p) f( v 1 ) f( v 2 ) f( v 3 ) proiezione f p ha coord. baricentriche a,b,c nel triangolo v 1 v 2 v 3 f(p) ha coord. baricentriche a,b,c nel triangolo f(v 1 ) f(v 2 ) f(v 3 )

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 15/40 Problema: interpolazione lineare coordinate texture Esempio: u v 1 1 u,v= (1,0) u 1,v 1 = (1,1) u 1,v 1 = (0,1) u 1,v 1 = (0,0)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 16/40 Problema: interpolazione lineare coordinate texture Esempio:

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 17/40 Soluzione: Correzione Prospettica p ha coordinate baricentriche c 0 c 1 c 2 V0V0 V2V2 V1V1 A 0,B 0... A 1,B 1... A 2,B 2... p p = c 0 v 0 + c 1 v 1 + c 2 v 2 attributi di p: (senza considerare la "correzione prospettica") A p = c 0 A 0 + c 1 A 1 + c 2 A 2 B p = c 0 B 0 + c 1 B 1 + c 2 B 2 = ( x 0, y 0, z 0, w 0 )

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 18/40 Soluzione: Correzione Prospettica p ha coordinate baricentriche c 0 c 1 c 2 V0V0 V2V2 V1V1 A 0,B 0... A 1,B 1... A 2,B 2... p p = c 0 v 0 + c 1 v 1 + c 2 v 2 attributi di p: (senza considerare la "correzione prospettica") A p = c 0 A 0 + c 1 A 1 + c 2 A 2 A0A0 w0w0 A1A1 w1w1 A2A2 w2w2 Ap =Ap = 1 w0w0 1 w1w1 1 w2w2 = ( x 0, y 0, z 0, w 0 )

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 19/40 Soluzione: Correzione Prospettica Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento attributo originale A applico transofrm. poi calcolo: A' = A / w e w' = 1 / w c 0 + c 1 + c 2 A0A0 w0w0 A1A1 w1w1 A2A2 w2w2 Ap =Ap = 1 w0w0 1 w1w1 1 w2w2 interpolo A' e w' attributo finale del frammento: A' / w' c 0 + c 1 + c 2

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 20/40 Correzione Prospettica SenzaCon

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 21/40 Correzione Prospettica Texture mapping con correzione prospettica –anche conosciuto come: texture mapping perfetto metodo dei 3 vettori magici (arcaico) metodo dei 9 numeri magici (arcaico)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 22/40 Nota: la tessitura va caricata Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice computazioni per frammento Texture RAM LOADLOAD

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 23/40 Nota: la tessitura va caricata 1.Da disco a memoria RAM main (sulla scheda madre) 2.Da memoria RAM main a Texture RAM (on board dell'HW grafico) Entrambe operazioni piuttosto lente. Per es, impossibili da fare una volta per frame!

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 24/40 In OpenGL Ad esempio: glEnable(GL_TEXTURE_2D); glBindTexture (GL_TEXTURE_2D, ID); glTexImage2D ( GL_TEXTURE_2D, 0, // mipmapping GL_RGB, // formato interno imageWidth, imageHeight, 0, // bordo GL_RGB, // formato nella RAM GL_UNSIGNED_BYTE, imageData);

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 25/40 Come si assegnano le coordinate texture ai vertici? Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate compreso: coordinate texture (per vertice!) texture look-up compreso: coordinate texture (per vertice!)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 26/40 Come si assegnano le coordinate texture ai vertici? Due classo di soluzioni: –Assegnarle le coordinate textures al volo durante il rendering… –Precomputarle (e salvarle insieme alla mesh) Dipende dallapplicazione!

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 27/40 Problema difficile: u-v mapping Assegnare una coppia di coordinate texutres ad ogni vertice della mesh –In preprocessing u v u v

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 28/40 Problema difficile: u-v mapping fatto a mano, o automatizzato

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 29/40 In OpenGL Come ogni altro attributo TexCoord2d( u,v )

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 30/40 Come si assegnano le coordinate texture ai vertici? Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate texture look-up coordinate texture (eventualmente trasformate) compreso: coordinate texture

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 31/40 Come si assegnano le coordinate texture ai vertici? Due classo di soluzioni: –Assegnarle le coordinate textures al volo durante il rendering… –Precomputarle (e salvarle insieme alla mesh)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 32/40 Come si assegnano le coordinate texture ai vertici? Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate texture look-up coordinate texture produco coordinate texture a partire dalla posizione

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 33/40 Create automaticamente Concetto: da (x,y,z) a (u,v) - Linearmente In coordinate oggetto o vista –(prima o dopo la trasformazione) Esempi:

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 34/40 Create automaticamente Anche 1D 1D texture!

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 35/40 Come si assegnano le coordinate texture ai vertici? Due classo di soluzioni: –Assegnarle le coordinate textures al volo durante il rendering… –Precomputarle (e salvarle insieme alla mesh)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 36/40 Environment mapping: sferico Environment map: una tessitura che memorizza il colore dellambiente riflesso da ogni normale della semisfera. Come coordinata tessitura, basta usare la normale trasformata!

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 37/40 Environment mapping: sferico simula oggetto a specchio che riflette uno sfondo lontano simula un materiale complesso (condizioni di luce fisse)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 38/40 Environment mapping: cubico frontrightback below above left

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 39/40 Environment mapping: cubico Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture 3D coordinate texture 3D interpolate proietto sul cubo, accedo alla faccia corrispondente calcolo coordinate texture 3D [-1,+1] x [-1,+1] x [-1,+1] come raggio di vista riflesso dalla normale

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 40/40 Environment mapping: cubico frontrightback below above left

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 41/40 Environment mapping: cubico e sferico Sferico: –un texel per ogni direzione nella semisfera proiettata su un cerchio –come coordinata texture uso la normale –per forza effetto "headlight": ruoto oggetto mentre punto vista rimane fermo Cubico –un texel per ogni direzione nella sfera proiet. sulla sup di un cubo –come coordinata texture uso la direzione di vista rifelssa dalla normale –punto di vista può ruotare intorno ad oggetto fermo

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 42/40 Creazione Automatica Coordinate Texture glEnable(GL_TEXTURE_GEN_S); 1- abilitarla: 2- scegliere la modalita': glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, mode ) S, T, R, Q mode = GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP computa le coord texture dalle pos nel sist di rif oggetto (prima della trasformazione) computa le coord texture dalle pos nel sist di rif camera (dopo la MODEL-VIEW) computa come coord texture il raggio di vista rifelsso – usa la normale (dopo la MODEL-VIEW)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 43/40 Creazione Automatica Coordinate Texture glTexGenfv(GL_S, GL_EYE_PLANE, v); 3- scegliere il piano S, T, R, Q EYE OBJECT o vettore di 4 elementi coordinata texture prodotta = v T pos_vertice (e' distanza da un piano!)

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 44/40 Texture Mapping Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate compreso: coordinate texture (per vertice!) texture look-up

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 45/40 u Texture Look-up: fuori dai bordi: modo "clamp" if (u 1) u1; if (v 1) v1; 1 1 v

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 46/40 Texture Look-up: fuori dai bordi: modo "repeat" u v 1 1 u u – [ u ] v v – [ v ]

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 47/40 Tessiture ripetute Tipico utilizzo: Molto efficiente in spazio! Nota: deve essere TILABLE

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 48/40 In OpenGL glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); o nota: setto per u e v separatemente sono parametri della tessitura. Ogni tessitura caricata in memoria ha i propri parametri.

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 49/40 Texture Mapping Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM computazioni per frammento interpolo coordinate texture coordinate texture interpolate compreso: coordinate texture (per vertice!) texture look-up

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 50/40 Texture Look-up Un frammento ha coordinate non intere (in texels) Texture Space Screen Space texture look-up

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 51/40 pixel Texture Look-up Texture SpaceScreen Space pixel texel un pixel = meno di un texel un pixel = più di un texel minification magnification

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 52/ Caso Magnification u v Soluzione 1: prendo il texel in cui sono (equivale a prendere il texel più vicino) equivale ad arrotondare alle coordinate texel intere "Nearest Filtering" 7.5

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 53/40 Caso Magnification texture 128x128 Nearest Filtering: risutlato visivo "si vedono i texel !"

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 54/ Caso Magnification u v Soluzione 2: Medio il valore dei quattro texel più vicini Interpolazione Bilineare 7.5 Ripasso: interpolazione lineare (1D) interpolazione bi-lineare (2D) Formule...

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 55/40 Caso Magnification texture 128x128 Bilinear Interpolation: risutlato visivo

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 56/40 Caso Magnification Modo Nearest: –si vedono i texel –va bene se i bordi fra i texel sono utili –più veloce Modo Interpolazione Bilineare –di solito qualità migliore –può essere più lento –rischia di avere un effetto "sfuocato"

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 57/40 Caso Minification Nearest Filtering Bilinear interpolation non risolve il problema

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 58/40 Caso Minification: MIP-mapping MIP-map level 0 MIP-map level 1 MIP-map level 2 MIP-map level 3 MIP-map level 4 (un solo texel) MIP-mapping: "Multum In Parvo"

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 59/40 Mipmap Math Definiamo un fattore di scala, =texels/pixel – è il massimo fra x e y –può variare sullo stesso triangolo –può essere derivato dalle matrici di trasformazione –calcolato nei vertici, interpolato nei frammenti il livello di mipmap da utilizzare è: log 2 –livello 0 = massima risoluzione –se livello<0 cosa significa? –nota: il livello non è necess. un numero intero

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 60/40 Caso Minification: MIP-mapping Bilinear interpolation non risolve il problema MIP-mapping

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 61/40 Caso Minification: MIP-mapping altro esempio

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 62/40 In OpenGL glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); o decidere che tipo di magnificazione usare:

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 63/40 In OpenGL glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, modo ); modo = GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_LINEAR_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_LINEAR o decidere che tipo di minifacazione usare: interpolazione trilineare

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 64/40 In OpenGL Caricare sulla scheda i vari livelli di mipmapping. –uno per uno: glTexImage2D ( GL_TEXTURE_2D, i, // MIP-map level GL_RGB, // formato interno imageWidth, imageHeight, 0, // bordo GL_RGB, // formato nella RAM GL_UNSIGNED_BYTE, imageData);

M a r c o T a r i n i S i s t e m i M u l t i m e d i a l i I I / 0 5 U n i v e r s i t à d e l l I n s u b r i a - 65/40 In OpenGL Caricare sulla scheda i vari livelli di mipmapping. –tutti insieme (con la liberira glu): glTexImage2D ( GL_TEXTURE_2D, 0, // MIP-map level GL_RGB, // formato interno imageWidth, imageHeight, 0, // bordo GL_RGB, // formato nella RAM GL_UNSIGNED_BYTE, imageData); gluBuild2DMipmaps (