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

97
1 Texturing - Tessiture Daniele Marini

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

Page 1: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

1

Texturing - Tessiture

Daniele Marini

Page 2: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 3: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 4: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 5: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 6: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 7: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 8: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 9: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 10: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

10

Texture Mapping

modello geometrico applicazione della texture

Page 11: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

11

Bump Mapping

Page 12: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

12

Environment Mapping

Page 13: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 14: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 15: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 16: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 17: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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?

Page 18: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

18

• Supponiamo di avere una superfice parametrica

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

Difficoltà

Page 19: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

19

M-1

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

• Ottengo un quadrilatero

Quale valore assegno al pixel?

Difficoltà

Page 20: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

20

DifficoltàAliasing: texture periodica

Page 21: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

21

Aliasing• Oppure posso fare una media pesata dei texel

adiacenti• Ma dove sono finite le strisce??

Page 22: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 23: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 24: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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 →−

Page 25: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

25

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

Page 26: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 27: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

27

Texture rendering di maglie poligonali

Page 28: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 29: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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 →

Page 30: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

30

Texture lineare

• Esempio: un cilindro di altezza h

⎟⎠

⎞⎜⎝

⎛=→− vh

tu

stsvuM maxmax1 ,

2),(),(:

π

• E se ho superfici complesse?

ry

xu=0u=0.5

Page 31: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 32: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 33: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 34: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 35: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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)

Page 36: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

36

Texture mapping in due fasi

S-mapping O-mapping

),(),(: vutsM →

Page 37: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 38: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 39: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 40: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

40

Mapping cilindrico

C. Weigle

Page 41: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

41

Mapping sferico

C. Weigle

Page 42: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

42

Box mapping

Page 43: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 44: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 45: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 46: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 47: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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.

Page 48: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 49: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 50: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

50

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

livello

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

Page 51: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 52: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

52

Mipmapping

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

b) Linear filtering: riduco le seghettature

Page 53: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

53

Mipmapping

c) Mipmapping point sampling

d) Mipmapping linear filtering

Page 54: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

54

Esempio

Without MIP-mappingWithout MIP-mapping

With MIP-mappingWith MIP-mapping

Page 55: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

55

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

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

Page 56: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 57: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

57

Texture mapping e shading

Giannitrapani e Fusiello

Page 58: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 59: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

59

Bump mapping

Giannitrapani e Fusiello

Page 60: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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+=

Page 61: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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 ×

∂∂

+×∂∂

+≈'

Page 62: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 63: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 64: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 65: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

65

Phong shading

Page 66: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

66

Texture mapping

Page 67: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

67

Bump mapping

Page 68: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

68

Displacement mapping

• Utilizzo la texture map per variare la geometria

• I texel rappresentano degli offset da applicare alla geometria

npp ⋅+= holdnew

Page 69: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

69

Displacement mapping

Pharr & Hanrahan

Page 70: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 71: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

71

Esempio

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

Page 72: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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)

Page 73: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

73

Esempio

Image by Henrik Wann Jensen

Page 74: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 75: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

75

Confronto• Notare la mancanza di auto riflessioni

nell’environment map

Page 76: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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.

Page 77: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

77

Environment mapping

Miller and Hoffman, 1984

Page 78: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

78

Environment mapping

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

Page 79: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 80: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

80

Page 81: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 82: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 83: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 84: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 85: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

85

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

Page 86: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 87: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

87

Box mapping

Page 88: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

88

Environment Maps

Durand & Cutler

Page 89: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

89

Environment Maps

Cubical Environment Map

Cylindrical Panoramas

Page 90: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 91: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 92: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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(' −+=

Page 93: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 94: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 95: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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)

Page 96: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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

Page 97: 1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere a modelli geometrici complessi non è spesso la soluzione.

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)