Texturing - Tessiture Daniele Marini.

Slides:



Advertisements
Presentazioni simili
Numeri a 100 Electronic flashcard. 1 uno ritorno.
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Valutazione d’Istituto A.S. 2008/2009
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
Mat_Insieme Lavoro di Gruppo Prodotti Notevoli
Ombre e riflessioni in tempo reale
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Frontespizio Economia Monetaria Anno Accademico
I sistemi di riferimento
Associazione Nazionale Medici Cardiologi Ospedalieri
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
Varianza campionaria Errore standard della varianza campionaria
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
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.
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.
Canale A. Prof.Ciapetti AA2003/04
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
Già primario f.f. U.O. di neurochirurgia
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.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
Cos’è un problema?.
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Ropol09anci INDAGINE SU PATTO DI STABILITA 2009 IN PIEMONTE ANCI PIEMONTE Torino, 29 giugno 2009.
Texturing - Tessiture Daniele Marini.
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
Modelli del colore 2 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.
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
Regolarità nella griglia dei numeri
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.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
Illuminamento e Shading
GEOGRAFIA DEI NUMERI Accademia dei Lincei - Roma 18 Ottobre2011
Un trucchetto di Moltiplicazione per il calcolo mentale
Navigazione piana, introduzione pns pnr.
Effetti fotorealistici
Prima rilevazione sullo stato di attuazione della riforma degli ordinamenti nelle istituzioni scolastiche in LOMBARDIA Attuazione del D.L. 59/2003 a.s.
Modelli Globali: Ray Tracing
Image Based Rendering Daniele Marini.
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
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
Esempi risolti mediante immagini (e con excel)
Le proiezioni e la prospettiva
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.
Modelli di Illuminazione
Controllare le proiezioni
Texturing - Tessiture Daniele Marini.
Corso di Programmazione Grafica e Laboratorio 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.
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
TRASFORMATA DI FOURIER
Transcript della presentazione:

Texturing - Tessiture Daniele Marini

Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione migliore Esempi Nuvole Erba Terreno Pelle Il modello di illuminazione di Phong `e abbastanza versatile: con una scelta opportuna dei vari parametri si possono imitare diversi materiali in modo abbastanza realistico (per esempio la plastica) • comunque limitato: non si possono simulare i dettagli di un materiale, a meno di non introdurli nella geometria (ovvero aumentare il numero dei poligoni). • Invece di incrementare la complesssit`a del modello, si aggiungono particolari come parte del processo di rendering. • Le tecniche di mappatura (texture mapping) interagiscono con lo shading usando una mappa bidimensionale o texture (tessitura) come tabella di lookup, in modo da aggiungere dettagli alla superficie. • Si possono ottenere risultati ottimi dal punto di vista del fotorealismo con un limitato carico computazionale. `e ampliamente sopportato dalle schede grafiche. Durand and Cutler

Il colore degli oggetti Abbiamo visto come calcolare il colore di un oggetto: dobbiamo definire il modello di illuminazione locale, cioè assegnare i parametri che descrivono come il materiale riflette la luce (parametri che descrivono la riflettanza) il modello è definito per primitive geometriche: tutte le variazioni delle caratteristiche superficiali devono essere modellate geometricamente

Texture mapping La tecnica usata per gestire variazioni di riflettanza è memorizzare la riflettanza come una funzione o una immagine e “mapparla” sulla superficie La funzione o immagine è detta texture map ed il processo di mappatura è detto texture mapping

Texture mapping Può essere classificato in base a differenti proprietà: Dimensionalità della funzione di texture Il tipo di corrispondenza tra punti della superficie e punti della texture map Se la funzione di texture è procedurale o se è essenzialmente una tabella Il texture mapping non riguarda solo la definizione del colore

Modellare una arancia Sfera arancione Troppo semplice Devo modellare l’irregolarità della superficie Quanti poligoni? Troppi Soluzione più efficiente: prendere una fotografia digitale dell’arancia applicare l’immagine alla superficie Texture mapping Sono soddisfatto??

Modellare una arancia La superficie è comunque ancora “liscia” rendiamo localmente irregolare la geometria Bump mapping STRATEGIA: aggiungo dettagli non nella fase di modellazione ma in fase di rendering

Tipologie di mapping Texture Mapping Bump mapping Utilizzo di un pattern per determinare il colore di un frammento. I pattern possono essere: Determinati da una procedura di generazione di texture Immagine digitalizzata Bump mapping Simulazione di irregolarità geometriche superficiali attraverso la perturbazione delle normali Richiede elaborazione su ciascun frammento

Tipologie di mapping Displacement mapping Perturbazione della geometria Environment (reflection mapping) Come immagine per il texture mapping uso una immagine dell’ambiente Simulazione di superfici riflettenti, cerco di ottenere un effetto simile al ray-tracing E’ un caso particolare di texture mapping

Texture Mapping modello geometrico applicazione della texture

Bump Mapping

Environment Mapping

Texture mapping 1D, 2D, 3D Texture mapping Il texture mapping, nella sua forma più usata (color mapping) consiste nell’applicare una immagine su una superficie

2D Texture mapping Tutte le strategie di mapping comportano mapping tra sistemi di riferimento: Coordinate di texture: utilizzate per identificare i punti sulla immagine da mappare Coordinate parametriche: utilizzate per modellizzare curve e superfici Coordinate object o world: dove avviene il mapping (concettualmente) Coordinate window: dove l’immagine finale è prodotta In realtà possiamo avere anche 1D (colore di una linea) o 3D, ma il 2D è il più usato. Questo si pu`o fare quando si ha la descrizione parametrica della superficie soggiacente alla maglia poligonale.

Texture mapping Gli elementi della texture map, sono detti texels o texture elements La texture map è una matrice 2D che immaginiamo descritta da una funzione continua T(s,t) s, t sono le coordinate di texture (normalizzate in [0,1]) T sono i valori RGB (ma potrebbero essere altro) 1 1

Come avviene il mapping? Definizione della funzione M che associa un punto della texture pT ad un punto della superficie dell’oggetto 3D pO Mapping del punto pO nella sua proiezione sullo schermo pS pS(xs,ys) pO(x,y,z) pT(s,t) M rendering della texture si occupa poi di stabilitre il valore di texture da associare a ciascun pixel. Texture map Schermo Superficie 3D

Difficoltà Definizione di un mapping tra una superficie rettangolare (texture map) e una superficie arbitraria (es.: sfera) Assegnamo il colore nella fase di rendering....il mapping è tra coordinate window e coordinate texture: che effetto ha la proiezione prospettica?

Difficoltà Supponiamo di avere una superfice parametrica Dato il pixel dell’immagine che devo assegnare lo retroproietto sulla superficie, ottengo una patch quadrangolare

Difficoltà Dai valori u,v della patch determino s,t Ottengo un quadrilatero M-1 Quale valore assegno al pixel?

Difficoltà Aliasing: texture periodica

Aliasing Oppure posso fare una media pesata dei texel adiacenti Ma dove sono finite le strisce??

Texture mapping Il mapping può essere diretto o inverso Mapping diretto: l’algoritmo opera in texture space. Ogni texel viene mappato in world coord. poi trasformato e proiettato

Mapping diretto Definiamo una funzione che associa un texel con un punto dell’oggetto, che a sua volta verrà mappato sul piano immagine s t (x,y,z) M In coordinate non omogenee servono 3 funzioni Difetto: posso avere dei buchi o delle sovrapposizioni, non è usato

Mapping inverso In realtà ci servirebbe procedere in senso opposto: nel momento in cui assegnamo il colore al pixel dell’immagine finale vogliamo sapere quali sono i valori RGB da considerare La funzione di mapping deve quindi essere invertibile Questo tipo di mapping è il più usato

Mapping inverso Il calcolo è eseguito in screen space. Per ogni pixel si calcola la pre-immagine del pixel individuando le sue coordinate (s,t) Questo tipo di mapping è il più usato

Texture mapping Maglie poligonali: Definizione della texture nello spazio bidimensionale (s,t): coordinate di texture In fase di modellazione associare ad ogni vertice di ciascun triangolo (xi,yi,zi) il corrispondente punto nello spazio (s,t) In fase di rendering associare ad ogni frammento generato all’interno di una faccia il colore del corrispondente punto nello spazio (s,t)

Texture rendering di maglie poligonali

Texture mapping Si può definire facilmente la funzione di mapping se ho la superficie descritta in forma parametrica Basta specificare una corrispondenza tra u,v e s,t (può essere l’identità con un fattore di normalizzazione)

Texture mapping lineare Mapping semplice ed invertibile Non tiene conto della curvatura della superficie descritta da u,v Va bene per mappare su un piano

Texture lineare Esempio: un cilindro di altezza h y x u=0 u=0.5 E se ho superfici complesse?

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 per evitare valori troppo scuri

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

Texture mapping in due fasi Si può applicare sia a superfici descritte da coordinate geometriche che parametriche Non richiede la conoscenza dell’equazione parametrica della superficie Mapping della texture su una superficie intermedia semplice (sfera, cilindro, cubo) in modo che la corrispondenza superficie-texture sia immediata (S-mapping) Mapping della superficie intermedia sull’oggetto finale (O-mapping) Una tecnica pi`u generale, che si pu`o usare senza conoscere l’equazione parametrica della superficie, `e la mappatura in due passi Si mappa la texture su una superficie intermedia semplice, in modo che la parametrizzazione (corrispondenza punti-superficie con pixel-texture) sia immediata; questa prende il nome di S-mapping • Quindi si mappa ogni punto della superficie intermedia in un punto della superficie in esame; questa prende il nome di O-mapping • La concatenazione dei due mapping genera la corrispondenza W trai pixel della texture ed i punti dell’oggetto • Il primo passaggio (S-mapping) `e in genere semplice; basta scegliere superfici facili da parametrizzare • Ad esempio si pu`o prendere come superficie intermedia un cilindro (vedi slide precedente) • Oltre al cilindro `e facile fare l’S-mapping con cubi, piani e sfere. • In genere si considera la superficie intermedia come esterna all’oggetto da tessiturare.

Texture mapping in due fasi S-mapping O-mapping

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:

Fase 1: mapping sferico u e v sono i parametri che descrivono la sfera unitaria, con u,v in [0,1]

Seconda fase Mapping verso l’oggetto reale. Tre possibili strategie: Lungo le normali dalla forma intermedia alla finale Lungo le normali dalla forma finale alla intermedia Lungo i vettori dal centro della forma intermedia finale intermedia

Mapping cilindrico C. Weigle

Mapping sferico C. Weigle

Box mapping

Texture sampling Quando mappiamo le coordinate texture sull’array di texel difficilmente otteniamo un punto che corrisponde al centro di un texel Una possibilità è scegliere il texel più vicino (point sampling) Posso ottenere notevoli effetti di aliasing I quadratini azzurri sono i texel che verrebbero usati per una interpolazione con 4 texel. La mappatura W-1, associa una coordinata texture (s, t) ad ogni vertice della maglia; • Quindi a ciascun vertice di un triangolo proiettato `e associata una coordinata texture (s, t). • Durante la scan conversion del triangolo si determinano le coordinate texture di ciascun pixel interno conl’interpolazione scan-line (come abbiamo gi`a usato per la profondit`a e per lo shading di Gouraud). • Si determina quindi il valore di texture da associare al pixel arrotondando le coordinate texture all’intero pi`u vicino. In questo modo ogni pixel riceve contributo da un solo texel (texture element). Se la risoluzione della texture `e molto diversa da quella del display (ovvero la corrispondenza pixel-texel `e molti a uno o uno a molti) si incorre nell’aliasing

Texture sampling Posso decidere di fare una media dei texel adiacenti con un filtraggio bilineare: Trovare i 4 vicini del texel (floor e ceiling di s e t) Interpolare i texel in un parametro (s) Interpolare il risultato nell’altro parametro (t) Usare il risultato per assegnare il colore al pixel

Aliasing Minification: un pixel corrisponde a molti texel. La texture viene “campionata”: posso avere un effetto di mancanza di dettagli Magnification: un texel corrisponde a molti pixel. La texture viene “ingrandita” sull’immagine Si ha aliasing ogni qualvolta non ci sia corrispondenza uno-a-uno tra elementi del display (pixel) ed elementi della texture (texel). Distinguiamo due casi: (a) Magnification: un texel corrisponde a molti pixel. In questo caso un singolo texel appare come un blocco di pixel nell’immagine. Quello che si vede `e una versione ingrandita “a blocchi” della texture. `E come ingrandire una immagine digitale: se i pixel diventano troppo grossi si notano e®etti “a blocchi”. (b) Minification: (il peggiore) un pixel corrisponde a molti texel. Si dovrebbe vedere una versione rimpicciolita della texture. Ma se si usa il metodo delineato prima, in cui ad ogni pixel contribuisce un solo texel, vuol dire che ci sono texel che restano fuori.` come quando si riduce un’immagine digitale: se si sottocampiona si possono perdere particolari.

Texture aliasing Cosa succede se un pixel copre molti texel (minification)? Se uso il point sampling posso avere artefatti tipo seghettature e pattern nelle immagini statiche In animazione posso avere un effetto di migrazione della texture Il filtraggio bilineare va bene se non ho una minificazione eccessiva Dovrei considerare tutti i texel che vengono coperti dal pixel (area averaging, si fa la media dei pixel adiacenti) Per ridurre i tempi di calcolo della media uso delle strutture a piramide

Mipmapping Si calcola l’immagine a bassa risoluzione, detta mipmap MIP-Multum in parvo (molte cose in poco spazio): occupa 4/3 della memoria dell’originale. mappatura - 12 • La soluzione `e: – per fattori di riduzione moderati, usare interpolazione bilineare nelle coordinate texture per determinare il valore (invece di arrotondare all’intero) – per fattori di riduzione significativi (maggiori di due) `e necessario tenere conto del valore di tutti i texel che ricadono nella pre-immagine del pixel (che `e – grossomodo – pi`u grande di quattro texel), facendone la media. • L’operazione `e costosa da e®ettuare on-line, per cui si preferisce immagazzinare una versione multi-risoluzione (piramide) della texture, che prende il nome di mipmap. c°

Mipmapping Per una texture di dimensioni 2n x 2n, ho un totale di n texture: Livello 0: L’originale Livello i: ½ della risoluzione del livello i-1, ciascun texel è la media di un’area 2x2 dal livello i-1 Livello 0: 1 texel

Mipmapping Ciascun livello della mipmap è una versione filtrata della texture originale: A livello n, ciascun texel è la media di 4n texel originali Al momento del rendering, dato un pixel da colorare, si sceglie la texture nella mipmap al livello di dettaglio che corrisponde alla copertura del pixel

Mipmapping Se un pixel ingloba più texel si scende di livello d individua il livello, la terna (u,v,d) individua il texel

Mipmapping Posso poi adottare strategie di: Point sampling nella mipmap Bilinear filtering nella minimap: Interpolazione dei texel sul livello d della minimap Trilinear filtering: Determinare i due livelli tra cui si posiziona la minificazione (d-1 e d+1) Eseguire un filtraggio bilineare indipendente su ciascun livello Interpolare tra i due valori filtrati L’interpolazione dei valori filtrati è in base alla alla copertura del pixel e al livello

Mipmapping Point sampling: si vedono le seghettature e i pattern moirè Linear filtering: riduco le seghettature

Mipmapping c) Mipmapping point sampling d) Mipmapping linear filtering

Esempio Without MIP-mapping With MIP-mapping

2D Texture mapping Dobbiamo poi indicare come gestire i valori di s,t che vanno fuori range (Es.: ripetere, arrotondare....)

Texture mapping e shading Il valore di colore ottenuto dal texture mapping può essere usato come tale per assegnare il colore al pixel o può essere composto al valore di riflessione diffusa del modello di Phong. Texture used as Diffuse Color Diffuse Texture Color Constant Diffuse Color Texture used as Label Durand and Cutler

Texture mapping e shading Giannitrapani e Fusiello

Bump mapping Tecnica per far apparire corrugate superfici lisce senza alterare il modello geometrico Basata sulla alterazione della normale alla superficie prima che venga applicato il modello di shading Il bump mapping viene usato per fare apparire corrugata (con rigonfiamenti e indentazioni) una superficie liscia (es. arancia). • Cambiare la geometria per aggiungere i particolari di piccola scala non `e in genere fattibile perch´e richiederebbe un numero troppo elevato di poligoni. • Invece il bump mapping modifica le normali alla superficie (senza toccare la superficie stessa), cos`ý quando viene applicato il modello di illuminazione (Phong) l’apparenze della superficie (il suo “shading”) risulta quella della superficie corrugata che si voleva ottenere. Andries van Dam

Bump mapping Giannitrapani e Fusiello

Bump mapping Vogliamo alterare la normale in modo che essa corrisponda alla normale ad una superficie opportunamente deformata Consideriamo un punto su una superficie parametrica p(u,v), la cui normale è definita da: Sia d(u,v) la funzione di displacement (o bump function). Ciò che vogliamo ottenere è:

Bump mapping Ma in realtà non vogliamo alterare la superficie. La nuova normale sarebbe: Se calcoliamo le derivate parziali: Supponendo che d() sia piccola

Bump mapping Il bump mapping non determina occlusioni e ombre Cylinder w/Diffuse Texture Map Cylinder w/Texture Map & Bump Map Il bump mapping non determina occlusioni e ombre Durand and Cutler

Bump mapping Devo variare la normale per ciascun frammento. Lo posso realizzare nella pipeline?? SI, programmando un fragment shader SI, effettuando varianti del bump mapping (normal mapping) Il bump mapping non è supportato in OpenGL perchè la texture è applicata dopo il calcolo dell’illuminazione

Normal mapping Variante di bump mapping. I texel rappresentano la normale (normal map). Nelle moderne schede grafiche esistono modalità di applicazione delle texture che consentono di eseguire il prodotto scalare tra componenti. Nella normal map i valori RGB rappresentano le normali. Se ho una seconda texture che rappresenta la direzione della luce incidente, con il prodotto scalare ho il termine per pesare la componente diffusa della riflessione lambertiana G y R x B z

Phong shading Interpolation of surface normals. Note: specular highlights but no shadows – pure local illumination model

Texture mapping

Bump mapping Global Illumination: Global illumination model with texture, bump, and reflection mapping

Displacement mapping Utilizzo la texture map per variare la geometria I texel rappresentano degli offset da applicare alla geometria The geometry must be displaced before visibility is determined. Is this easily done in the graphics pipeline? With the newest generation of graphics hardware displacement mapping can be interpreted as a kind of vertex-texture mapping, where the values of the texture map do not alter the pixel color, but change the position of the vertex instead. Unlike bump mapping and normal mapping, displacement mapping can in this way produce a genuine rough surface. It is currently only implemented in a few desktop graphics adapters, and it has to be used in conjunction with adaptive tessellation techniques (that increases number of rendered polygons according current viewing settings), to produce highly detailed meshes, and to give a more 3D feel and a greater sense of depth and detail to textures which displacement mapping is applied to.

Displacement mapping Pharr & Hanrahan

Texture procedurali Utile per definire l’aspetto di elementi naturali che presentano una certa regolarità Generatore di numeri casuali (rumore bianco) Algoritmo di correlazione

Esempio f(x,y,z)->color

Texture 3D Il metodo di generazione di texture può essere utilizzato per definire texture 3D. Non ho più il problema del mapping: devo mappare un punto (s,t,r) in (x,y,z) Equivalente a fare una scultura con un materiale non uniforme (definizione di una funzione T(s,t,r) che rappresenta il materiale, es.: marmo o granito)

Esempio Image by Henrik Wann Jensen

Environment mapping Le superfici altamente riflettenti riflettono l’ambiente circostante La simulazione di questi effetti richiede informazioni globali sulla scena Ray tracing Come rendere questi effetti avendo a disposizione un modello di illuminazione locale? Attraverso le mappe di riflessione (environment map o reflection map).

Confronto Notare la mancanza di auto riflessioni nell’environment map

Environment mapping Blinn, J. F. and Newell, M. E. Texture and reflection in computer generated images. Communications of the ACM Vol. 19, No. 10 (October 1976), 542-547. Il primo oggetto con environment-map è stato la Utah Teapot con una immagine di una stanza realizzata con un programma di disegno. In the paper, Blinn also included an image of a satellite, environment-mapped with an image of the earth and the sun which he drew, shown below.  Note that in both cases the objects are also being illuminated by a traditional light source to create their diffuse appearance.

Environment mapping Miller and Hoffman, 1984

Environment mapping La tecnica è stata utilizzata per realizzare effetti speciali in film degli anni ’80 e ’90.

Environment mapping Primo passo: Secondo passo: Rendering della scena con la camera nella posizione dello specchio Visione degli oggetti nella scena “visti” dallo specchio Secondo passo: Utilizzare la scena generata come texture

Global Illumination: Global illumination model with texture, bump, and reflection mapping

Environment mapping Difetti: L’immagine che generiamo nel primo passaggio non è molto corretta perchè è generata senza la presenza dello specchio Su quale superficie proiettiamo la scena nel primo passo? Vorrei avere una informazione completa sulla scena in modo da poterla applicare se muovo lo specchio

Environment mapping L’approccio classico è fare la proiezione su una sfera Nella versione originale dell’environment mapping la superficie della sfera veniva poi convertita in un rettangolo Nella versione originale dell’environment mapping, la sfera veniva poi mappata su un rettangolo, con ovvie distorsioni ai poli.

Environment map Il texel dipende dalla posizione dell’osservatore superficie eye Environment map v n r

Sphere mapping OpenGL supporta una variazione dell’approccio classico detto sphere mapping L’applicazione deve fornire una immagine circolare L’immagine si può ottenere con un angolo di vista molto ampio o rimappando altri tipi di proiezione

Sphere mapping Ciascun pixel dell’immagine corrisponde ad una direzione di osservazione

Box mapping Per ambienti chiusi, è naturale mappare l’ambiente in una scatola Servono 6 proiezioni, corrispondenti ad una camera che punta verso alto, basso e ai 4 lati Le sei immagini vengono trattate come un’unica environment map e da essa ricavate le informazioni di texture

Box mapping

Environment Maps Durand & Cutler

Environment Maps Cylindrical Panoramas Cubical Environment Map

Blending RGBA: A=canale alfa, indica la trasparenza A=1 indica superficie opaca, A=0 indica superficie trasparente Variando il valore di A possiamo assegnare una data opacità (o trasparenza, 1-A) alle superfici

Blending Colore del frammento (source) Colore nel frame buffer (destination) b e c sono i fattori di blending sorgente e destinazione I valori che risultano fuori range vengono clippati

Fog Possiamo utilizzare il blending per assegnare il colore in modo dipendente dalla distanza f = fattore di nebbia (fog factor) funzione esponenziale o lineare; modifica il colore come coefficiente di alphablending:

Blending La maggior difficoltà è il fatto che l’ordine con cui renderizziamo i poligoni altera il risultato finale Funziona bene con algoritmi depth-sort (algoritmo del pittore) Non dobbiamo attivare la rimozione dei poligoni nascosti perchè è necessario che tutti vengano renderizzati se sono dietro un poligono trasparente Soluzione con z-buffer: Abilitare la rimozione dei poligoni nascosti e rendere lo z-buffer read-only per i poligoni traslucidi

Composizione di immagini Uno dei maggiori utilizzi del blending è per la composizione di più immagini (es.: risultati di rendering indipendenti) Devo definire opportunamente il fattore di blending per ciascuna immagine altrimenti il clipping porta a risultati insoddisfacenti Per una composizione uniforme di n immagini potrei definire dei fattori 1/n

Accumulation buffer Se facciamo la composizione di più immagini con la tecnica del blending possiamo perdere risoluzione colore se il frame buffer memorizza in interi Si definisce un buffer (buffer di accumulazione, di solito è in SW) con le stesse dimensioni del frame buffer, ma con maggior risoluzione (floating point)

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

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)