• Non ci sono risultati.

Bump-map (*)

N/A
N/A
Protected

Academic year: 2021

Condividi "Bump-map (*)"

Copied!
13
0
0

Testo completo

(1)

Bump-Mapping

see demo!

+ =

Low-poly mesh

(uv-mapped!)

Bump-map

(here: a tangent space normal map)

lots of cheap geometric detail

(apparently)

Low-poly mesh

assets courtesy of “Mount&Blade” (Talesworlds)

Bump-map

Bump-map (*)

texture preposta a fornire un’illusione di dettaglio geometrico

(non modellato nella mesh)

recall: mesh can only be low-res (low-poly) not much detail in it, usually

arpoccio detto “Texture-for-Geometry”

much cheaper to render/store than real geometry!

details may extrudeoutor be encarvedin the mesh surface

usually: this affects lighting only sufficient to trick the eye!

especially with dynamic lighting (*) Terminologia non universalmente adottata…

(2)

Bump-map

Dal punto di vista del modellatore:

macro-strutturadell’oggetto low-poly mesh es: la forma generale del cavallo

es: la forma generale del viso es: la forma generale del drago

meso-strutturadell’oggetto bump-map es: la muscolatura del cavallo

es: le rughe sul viso es: le scaglie del drago

micro-strutturadell’oggetto parametri del materiale es: la peluria del cavallo

es: la struttura del derma / del sebo

es: la variabile ruvidità / liscezza delle scaglie

Bump maps:

Categorie

Bump maps

Displacement maps

Normal maps

Scalar Vectorial Object

Space

Tangent Space most common

(3)

Bump maps:

Categorie

Bump map:

qualunque tessitura che codifica dettagli hi-freq (“meso-struttura”) su una sup low-res

Displacement Map

Dettagli codificati memorizzando le differenze fra low-res e hi-freq Come scalari(distanza lungo la normale) oppure come vettori Usati per re-tasselation, o per effetto parallasse (parallax mapping)

Normal Map:

Dettagli codificati memorizzando le normali della sup hi-freq Modificano il lighting

In quale spazio (in che base vettoriale)?

Tangent Space: (spazioTBN)

Riutilizzabili su più superfici indipendentemente dall’oreintamento Richiede direzioni Tangenti-Bitangenti (e normali) def su superifcie Object Space:

Solo per UV-mapping 1:1

Displacement map (scalare):

concept

Store the Distancesof the detailed surfaces from the low-poly mesh

example -- a bump-map for a screw-head :

superficie dettagliata (che vorrei modellare)

testa della vite

low-poly mesh

(approssimaz di ^) (qui: piatta )

displacement map (scalare)

0 0 0 0 .1 .5 .6 .6 .7 .5 .4 .2 0 0 0 0 0 0 0 0 0 0

0.2 0.6 0.4

(4)

Displacement map (scalare):

note

Ogni texel:

distanzadella sup descritta lungo la direzione dellanormale

(della mesh low-poly)

1 scalareper texel – texture a 1 canale Verso:

in fuori (estrusione) in dentro (scavo) entrambi

Valori positivi: estrusione Valori negativi: scavo, in dentro

Storage:

immagine a gray-scale (1 scalare per pixel)

rimappando i valori nell’intervallo [0..1]

Usi:

lighting diretto, approssimato?

effetto “embossing”

calcolo illuminazione globale (ambient occlusion) dato intermedio per la costruzione di una normal map

white = verso alto black = verso il basso

VEDREMO

facili da dipingere manualmente!

praticamente, un campo di altezza (height field)

def. sulla sup. della mesh

Displacement map vettoriale:

concept

Store Vectorsfrom the low-poly mesh to the detailed surfaces

superficie dettagliata (che vorrei modellare)

low-poly mesh

(approssimaz di ^) (qui: piatta )

displacement map (vettoriale)

“sottosquadro”!

non un campo di altezza

Variante più espressiva, ma più cara e meno utlizzabile.

Non molto usata (nei games).

(5)

½ · + ½·( 1- ) = lighting

Displacement map (scalare):

Rendering - effetto embossing

Displ.-map Displ.-map

(approssimato)

shifted: !

Approx troppo cruda:

non più usato (nei games)

Metodo image processing per approssimare il lighting su una displ map (scalare)

concept:

differenze finite : approssima gradiente 2D approssima (X,Y) normali sup

approssima lighting

Displacement map (scalare):

Rendering – parallax mapping

Tecnica per simulare l’effetto parallasse

(su un Displacement Map scalare)

Vedremo, nella lez sul rendering

(6)

Normal Map:

concept

Store the Normalsof the detailed surfaces

example -- a normal-map for a screw-head :

superficie dettagliata (che vorrei modellare)

testa della vite

low-poly mesh

(approssimaz di ^) (qui: piatta )

normal map

(una normale per texel)

Normal Map:

note

Modifica il lighting

nonil parallasse

nonla sagoma dell’oggetto

il lighting riflette il dettaglio hi-freq dell’oggetto dinamicamente (con luci variabili!)

illusione totale: molto convincente

se non si tenta di modellare macro-strutture

In rendering: usare la normale dalla tessitura

(per il lighting)

invece che la normale per-vertice interpolata

Le normali sono espresse in coord cartesiane

Spesso

ma non sempre (∃ modi migliori per esprimere vett unitari!) Domanda: ok, ma in quale spazio??? more later

(7)

Normal Maps:

in che spazio esprimo le norm?

Spazio oggetto: Object-Space Normal-Maps (lo stesso in cui esprimo le pos dei vertici)

☺la normale per vertice diventa superflua!

(basta la normale dalla texture!)

☺banale in fase di rendering

normal map legata ad uno specifico oggetto no riuso delle normal map su oggetti diversi

ogni regione della normal map legata alla sua regione preposta nell’oggetto!

solo mapping iniettivi!!!

e.g. no tiling, no sfruttamento simmetrie

Normal Maps:

in che spazio esprimo le norm?

Intuizione:

sarebbe più pratico definire le normali relativamente allo spazio texture :

X: verso destra della texture Y: verso il basso della texture Z: ortogonale al piano di texture

ma, come portare questo spazio sul modello 3D?

(8)

Spazio tangente (aka spazio TBN)

Spazio vett definito ∀ punto della superficie:

asse Z: Normale (alla superficie)

assi X e Y: vettori Tangenti (alla superficie)

X = Tangente Y = “Bi-Tangente”

(a volte, ma inappropriatamente: “Bi-Normale”)

memorizzato: per vertice sulla mesh

come attributo interpolato nel resto della sup possibile ottimizzare! non necessariamente 3 vettori

Spazio tangente (aka spazio TBN)

Come li calcolo

Normale

as usual(vedi lez. sulle mesh)

Tangente&Bi-Tangente calcolabili dall’ UV mapping!

sono i gradientidella coord U e della coord V riespett.

(dettaglio implementativo:

calcolare per faccia, mediare per vertice)

Note:

non necessariamente esattamente ortonormale left-handed o right-handed, anche nella stessa mesh richiede discontinuità seams

(le stesse dell’UV mapping? non solo! perché?)

(9)

Normal Maps:

in che spazio esprimo le norm?

Spazio tangente: Tangent Space Normal-Maps (le bump-maps di default, nei games)

servono, per vertice, attributi extra:

direzione Normale direzione Tangente direzione Bitangente

normal map condivisibile per più oggetti

normal map con UV-mapping anche non-iniettivi e.g. tileable

e.g. sfruttamento simmetrie

normal map costruibile a prescindere dall’oggetto a partire da un displacement map

lo spazio tangente

(si può ottimizzare il suo storage, non necess. 3 vettori)

Normal Maps:

in che spazio esprimo le norm?

Spazio tangente: Tangent Space Normal-Maps (le bump-maps di default, nei games)

servono, per vertice, attributi extra:

direzione Normale direzione Tangente direzione Bitangente

normal map condivisibile da più oggetti

normal map con UV-mapping anche non-iniettivi e.g. tileable

e.g. sfruttamento simmetrie

normal map costruibile a prescindere dall’oggetto a partire da un displacement map

lo spazio tangente

in pratica, la normal map specifica come modificarela normale memorizzata per vertice, invece di sovrascriverla

(10)

Mesh GPU Object

LOAD

Tangent Directions (B+T) as per vertex attributes

DISK CENTRAL RAM GPU RAM

PREPROCESS:

COMPUTE TANGENT DIRS

Mesh Object

IMPORT

Mesh File

Stored negli asset mesh, or computed after import:

CON TANGENT DIRS

(per vetex)

Normal-maps:

Storage

Idea:

come RGB texture

R X G Y B Z

ma X,Y,Z∈ [-1,+1] e R,G,B∈ [0,+1]

quindi necessario remapping:

Vantaggio: stessa compressione delle RGB textures/images

+1

-1 0

1.0

0.0

X R

X = 2 R – 1 R = ½ (X + 1 )

(normals = unitvectors)

(11)

Normal-maps:

Storage

Esempi:

caso

tangent space normal-map

normale prevalente: X=~0 , Y=~0 , Z=~1 colore prevalente: R=~0.5 , G=~0.5, B=~1

( ~azzurro)

Per es: Tiled

(tangent space) Normal Maps

+ =

UV-mapping con tiling!

Tangent dirs.

Tileable!

Low-poly mesh Normal-map

Non sarebbe possible con Object Space NM!

(12)

Bump-maps assets at a glance

(can you tell which is which?)

Object Space Normal map Tangent Space

Normal map

Displacement Map (scalar)

the default kind

Nota

Object Space Normal map UV-mapping 1:1 gamba destra !=

gamba sinistra

(Tangent Space) Normal map UV-mapping NON iniettivo

simmetrie sfruttate!

(13)

Normal maps:

come si ottengono (1/4)

Da displacement maps!

Displacement map come grayscale

= estruso - in fuori

= profondo - incassato

Filtro (e.g.

photoshop) 2D texture

painter / etc

Normal map

see demo!

Normal maps:

come si ottengono (1/4)

Da: displacement map a: normal map

algoritmo:

∀ texel t di displacement map

nota: ad ogni texel corrisponde un punto 3D (x , y , z = height[x,y])

compute best fitting plane

piano che minimizza la distanza dai punti dei i 3x3 texel centrati su t

semplice problema di minimizzazione quadratica la normale di questo piano è la normale per t

Nota:

si ottiene la normal map relativa allo spazio tessitura

una tangent space normal map, dunque

o 5x5, o 7x7…

Riferimenti

Documenti correlati

Abstract. We review the salient properties of subelliptic harmonic maps and morphisms, both from a domain in  N endowed with a H¨ ormander system and from a strictly pseudoconvex

Sea, Travels and Rites on the Early Modern Stage chair: Maria Luisa De Rinaldis. Gilberta Golinelli, Università degli Studi

In the case of the logistic maps, one could be tempted to relate the di erence to the smoothness of the natural invariant density (a similar argument has been used in [10] to

pratically, the normal map specifies how to modify the normal sotred per vertex, instead of overwriting it.. Bump-maps assets at

 Object space: Object-Space Normal-Maps (The same in which I express the vertex pos).   the normal per vertex

Abbreviations of lithostratigraphic units: TIT, Tithonian limestones; GRA, Cime de la Graye Limestone; CLA, Clarissia Formation; GV, Grès Verts (GVa, lower interval; GVb,

In the non-overlap region, where insufficient data support means reliance on model specification is necessary, individual causal effects are estimated by extrapolating trends from

In questo lavoro si cerca di mettere in relazio- ne i bisogni dell’individuo con le risposte di svi- luppo del territorio nella logica di tradurre in realtà l’apprendimento