1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere...

Post on 02-May-2015

216 views 1 download

Transcript of 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere...

1

Texturing - Tessiture

Daniele Marini

2

Modellazione geometrica• Per ottenere il realismo ricorrere a modelli

geometrici complessi non è spesso la soluzione migliore

• Esempi– Nuvole– Erba– Terreno– Pelle

Durand and Cutler

3

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

4

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

5

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

6

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??

7

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

8

Tipologie di mapping

• Texture 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

9

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

10

Texture Mapping

modello geometrico applicazione della texture

11

Bump Mapping

12

Environment Mapping

13

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

14

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

15

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

16

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

pT(s,t) pO(x,y,z)pS(xs,ys)

Texture mapSuperficie 3D

Schermo

M

17

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?

18

• Supponiamo di avere una superfice parametrica

• Dato il pixel dell’immagine che devo assegnare lo retroproietto sulla superficie, ottengo una patch quadrangolare

Difficoltà

19

M-1

• Dai valori u,v della patch determino s,t

• Ottengo un quadrilatero

Quale valore assegno al pixel?

Difficoltà

20

DifficoltàAliasing: texture periodica

21

Aliasing• Oppure posso fare una media pesata dei texel

adiacenti• Ma dove sono finite le strisce??

22

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

23

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),,(),(: zyxtsM →

•Difetto: posso avere dei buchi o delle sovrapposizioni, non è usato

24

Mapping inversoIn 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 considerareLa funzione di mapping deve quindi essere invertibile

),(),,(:1 tszyxM →−

25

Mapping inversoIl calcolo è eseguito in screen space. Per ogni pixel si calcola la pre-immagine del pixel individuando le sue coordinate (s,t)

26

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 mapping

27

Texture rendering di maglie poligonali

28

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)

⎥⎥⎥

⎢⎢⎢

⎡=

),(

),(

),(

),(

vuz

vuy

vux

vup),(),(: vutsM →

),(),(:1 tsvuM →−

Texture mapping

29

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

⎥⎥⎥

⎢⎢⎢

⎡=

),(

),(

),(

),(

vuz

vuy

vux

vup u=as+bt+c

v=ds+et+ f

u=umin+s−smin

smax−smin

(umax−umin)

v=vmin+t−tmin

tmax−tmin

(vmax−vmin)

),(),(: vutsM →

30

Texture lineare

• Esempio: un cilindro di altezza h

⎟⎠

⎞⎜⎝

⎛=→− vh

tu

stsvuM maxmax1 ,

2),(),(:

π

• E se ho superfici complesse?

ry

xu=0u=0.5

31

Pipe-line di texturing

Calcola posizionenello spazio mondo

Usa una funzione di proiezioneMAPPING

Usa una funzione di corrispondenza

Applica funzione di trasformazione dei valori

Modifica valore di illuminazione

(x,y,z) Es: proiezione ortografica(proiettare una slide)(u,v) in (0,1)

Da (0,1) a es.(256x256), trovavalore in arrayR,G,B

Es. moltiplica R,G,B per 1.1per evitare valori troppo scuri

Applica modello illuminazione con terna R,G,B

32

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

33

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

34

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

35

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)

36

Texture mapping in due fasi

S-mapping O-mapping

),(),(: vutsM →

37

• 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:

Cilindro:

x=r cos(2πu)

y=rsin(2πu) con u,v ∈ 0,1[ ]

z=v/h

mappa:

s=u

t=v

38

Fase 1: mapping sferico• u e v sono i parametri che descrivono la

sfera unitaria, con u,v in [0,1]

φ

φ

θ

θ

sin

cos

sin

cos

ry

rr

rz

rx

y

y

y

=

=

=

=

θθφθφ

sin

sincos

coscos

ry

rz

rx

=

=

=

πφπθ

)5.0(

2

−=

=

v

u

39

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

intermediafinale

40

Mapping cilindrico

C. Weigle

41

Mapping sferico

C. Weigle

42

Box mapping

43

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

44

Texture samplingPosso 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

45

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

46

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 staticheIn animazione posso avere un effetto di migrazione della textureIl 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

47

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.

48

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

49

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

50

Mipmapping• Se un pixel ingloba più texel si scende di

livello

• d individua il livello, la terna (u,v,d) individua il texel

51

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

52

Mipmapping

a) Point sampling: si vedono le seghettature e i pattern moirè

b) Linear filtering: riduco le seghettature

53

Mipmapping

c) Mipmapping point sampling

d) Mipmapping linear filtering

54

Esempio

Without MIP-mappingWithout MIP-mapping

With MIP-mappingWith MIP-mapping

55

2D Texture mapping• Dobbiamo poi indicare come gestire i valori di s,t

che vanno fuori range (Es.: ripetere, arrotondare....)

56

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.

III tttf αα +−= )1(

Constant Diffuse ColorDiffuse Texture ColorTexture used as LabelTexture used as Diffuse Color

Durand and Cutler

57

Texture mapping e shading

Giannitrapani e Fusiello

58

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

Andries van Dam

dnn += oldnew

59

Bump mapping

Giannitrapani e Fusiello

60

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 è:

vu ppn ×=

npp ),(' vud+=

61

Bump mapping

• Ma in realtà non vogliamo alterare la superficie. La nuova normale sarebbe:

• Se calcoliamo le derivate parziali:

• Supponendo che d() sia piccola

vu ''' ppn ×=

uuu vudu

dnnpp ),(' +

∂∂

+=vvv vud

v

dnnpp ),(' +

∂∂

+=

uv v

d

u

dpnpnnn ×

∂∂

+×∂∂

+≈'

62

Bump mapping

Cylinder w/Diffuse Texture Map

Bump Map

Cylinder w/Texture Map & Bump Map

Durand and CutlerIl bump mapping non determina occlusioni e ombre

63

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

64

Normal mapping• Variante di bump mapping. I texel

rappresentano la normale (normal map).

z

y

x BR

G)5.0,5.0,5.0( −−− bgr

65

Phong shading

66

Texture mapping

67

Bump mapping

68

Displacement mapping

• Utilizzo la texture map per variare la geometria

• I texel rappresentano degli offset da applicare alla geometria

npp ⋅+= holdnew

69

Displacement mapping

Pharr & Hanrahan

70

Texture procedurali

• Utile per definire l’aspetto di elementi naturali che presentano una certa regolarità

• Generatore di numeri casuali (rumore bianco)

• Algoritmo di correlazione

71

Esempio

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

72

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)

73

Esempio

Image by Henrik Wann Jensen

74

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).

75

Confronto• Notare la mancanza di auto riflessioni

nell’environment map

76

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.

77

Environment mapping

Miller and Hoffman, 1984

78

Environment mapping

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

79

Environment mapping

• Primo 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

80

81

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

82

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

83

Environment map• Il texel dipende dalla posizione

dell’osservatore

superficie

eye

Environment map

vn

r

vnvnr −⋅= )(2

2

1+=

mr

s x

2

1+=

mr

t y

222 )1(2 +++= zyx rrrm

84

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

85

Sphere mappingCiascun pixel dell’immagine corrisponde ad una direzione di osservazione

86

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

87

Box mapping

88

Environment Maps

Durand & Cutler

89

Environment Maps

Cubical Environment Map

Cylindrical Panoramas

90

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

91

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

[ ]ABGR ssss=s

[ ]ABGR dddd=d

[ ]AAAABBBBGGGGRRRR dcsbdcsbdcsbdcsb ++++='d

92

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:

fss cffcc )1(' −+=

93

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

94

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

95

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)

96

• 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

97

• 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)