Formule Per Il Calcolo Degli Elementi Geometrici - Dentature Esterne
1 Texturing - Tessiture Daniele Marini. 2 Modellazione geometrica Per ottenere il realismo ricorrere...
-
Upload
lothario-bosco -
Category
Documents
-
view
216 -
download
1
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)