Texture maps assets e Mesh assets Notazione di spazio texture

Transcript

Texture maps assets e Mesh assets Notazione di spazio texture
Game Engines - Texture Assets - part2
22/11/2014
Texture maps assets
e Mesh assets
Non necessariamente 1:1
1:N -- vari texture «sheets» associati ad una mesh
N:1 -- più meshes sullo stesso sheet (bene)
esempio di struttura per :
ogni mesh associata a un materiale
ogni materiale:
1 sheet di diffuse-map
1 sheet bumpmap (se serve)
1 sheet di alphamap (se serve)
1 vertex + fragment shader
vari parametri
(es, shininess, …)
se parti diverse di mesh associate a tessiture diverse:
scomporre oggetto in sottomesh
Notazione di spazio texture
t
es: 512 texels
1.0
Texture Space
(o "spazio parametrico" o "spazio s-t" o "spazio u-v")
Texture 2D
1.0
s
es: 1024 texels
texel
Marco Tarini - 2014
Texture space
= [0,1] x [0,1]
1
Game Engines - Texture Assets - part2
22/11/2014
Due notazioni
più diffusa
(in game industry)
u-v
(es DirectX)
s-t
(es OpenGL)
t
1.0
(0,0)
1.0
(0,0)
1.0
u
1.0
s
v
Task di modellazione:
“u-v mapping” (“u-v” == “s-t”)
Assegnare una coppia di coordinate texutres
ad ogni vertice della mesh
In preprocessing
t
t
s
Marco Tarini - 2014
s
2
Game Engines - Texture Assets - part2
22/11/2014
Task di modellazione:
“u-v mapping” (“u-v” == “s-t”)
fatto a mano,
oppure automatizzato
Texture “atlas”
(composto di
vari “charts”)
Task di modellazione:
“u-v mapping” (“u-v” == “s-t”)
strategie pratiche:
1. selezionare edge di taglio
…o…
1. assegnare facce a charts
decidere dove sono i “texture seams”
2. unfolding
minimizzare “distorsione”
3. packing dei charts
minimizzare spazi vuoti
assegnare aree secondo necessita’
(es, parti importanti
maggiore spazio tessitura)
Marco Tarini - 2014
3
Game Engines - Texture Assets - part2
22/11/2014
Tileable Textures
B
A
A
B
Tileable textures
Marco Tarini - 2014
4
Game Engines - Texture Assets - part2
22/11/2014
Tileable textures
Tipico utilizzo:
Molto efficiente in spazio!
RGB maps:
come si ottengono
Image first, then UV-mapping
e.g. immagine da fotografie
e.g. tileable images
/
/
2D painter
UV-mapper
3D modeller
Marco Tarini - 2014
5
Game Engines - Texture Assets - part2
22/11/2014
Texture maps come assets
Vari texture «sheets»
associati ad una mesh
o anche: più meshes sullo stesso sheet (bene)
tipica struttura dati:
mesh divisa in sottomesh
ogni sottomesh associata a un materiale
ogni materiale:
1 sheet di diffuse-map
1 sheet bumpmap (se serve)
1 sheet di alphamap (se serve)
1 vertex + fragment shader
vari parametri
(es, shininess, …)
RGB maps:
come si ottengono
Image first, then UV-mapping
e.g. immagine da fotografie
e.g. tileable images
UV-mapper
UV-mapping first, then paint 2D
paint with 2D app (e.g. photoshop)
UV-mapper
2D painter
UV-mapper
3D painter
UV-mapping first, then paint 3D
paint within 3D modelling software,
or: 1. export 2D rendering,
2. paint over with e.g. photoshop,
3. reimport images
4. goto 1
Marco Tarini - 2014
6
Game Engines - Texture Assets - part2
22/11/2014
RGB maps:
come si ottengono
…or:
first Paint 3D
on hi-res model,
“paint” on vertex attributes
e.g. with Z bursh…
then coarsen
build / autobuild final low-poly version
then UV-map
the low-poly model
must be a 1:1 mapping!
then auto-texture
auto build texture
more
about
this later…
Alpha mapping
(texels = lvl trasparenza)
Alpha map
RGB map
Marco Tarini - 2014
7
Game Engines - Texture Assets - part2
22/11/2014
Alpha mapping
(texels = lvl trasparenza)
es: drappi, barba...
tessitura
by Micheal
Marco
Filipowskip u t e r
2004
Tarini ‧ Com
Graphics ‧ 2
011/12 ‧ Universit
à dell’Insubria
Texture mapping e Alpha Test
es: alberi, foliage
Marco Tarini - 2014
8
Game Engines - Texture Assets - part2
22/11/2014
Texture mapping e Alpha Test
Es: pelo, pellicce
tessitura
(ripetuta)
Marco Tarini ‧ Com
puter Graphics ‧ 2
011/12 ‧ Universit
à dell’Insubria
Bump-Mapping
(see demo)
stessa geometria (una sfera)
bumpmaps diverse
Marco Tarini - 2014
9
Game Engines - Texture Assets - part2
22/11/2014
Bump maps: Categorie
Bump maps
Normal
maps
Object
Space
Displacement
maps
Tangent
Space
Scalar
Vector
Bump maps: Categorie
Bump map:
qualunque tessitura che codifica dettagli hi-freq
(“meso-struttura”) su una sup low-res
Normal Map:
caso più comune,
di “bump map”
Dettagli codificati memorizzando le normali della sup hi-freq
Modificano il lighting
In quale spazio (in che base vettoriale)?
Tangent Space: (spazio TBN)
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
Dettagli codificati memorizzando le differenze fra low-res e hi-freq
Come vettori, oppure come scalari (distanza lungo la normale)
Usati per re-tasselation, o per effetto parallasse (parallax mapping)
Marco Tarini - 2014
10
Game Engines - Texture Assets - part2
22/11/2014
Normal maps
Memorizzati come immagini
RGB => XYZ
(come?)
caratteristico colore RGB
(0.5,0.5,1) - (128,128,255)
(Tangent Space)
Normal maps
Espressi in spazio tangente
Memorizzare direzioni tangenti
Tangente e Bi-tangente
Nuovi attributi x vertice!
Computati automaticamente
a partire da UV mapping (come?)
Marco Tarini - 2014
11
Game Engines - Texture Assets - part2
22/11/2014
Normal maps
Come si ottengono (1/3):
Filtro
(e.g.
photoshop)
2D texture
painter
Displacement map
come grayscale
= estruso - in fuori
Normal map
= profondo - incassato
Normal maps
Come si ottengono (2/3):
Photometric Stereo
da: N immagini (N>=4) reali
Stesso punto di vista
Illuminazione diversa
(e possibilmente controllata e nota)
a Normal Map
Marco Tarini - 2014
12
Game Engines - Texture Assets - part2
22/11/2014
Normal maps
Come si ottengono (3/3):
Detail recovery
da:
1) mesh Hi-Res
2) mesh Low-res + UV mapping (senza ripetizioni)
a:
Normal map per 2
(che mimica il dettaglio presente in 1)
More about this later…
Normal maps
Come si ottengono (bonus):
Proceduralmente
Marco Tarini - 2014
13
Game Engines - Texture Assets - part2
22/11/2014
Semplificazione automatica
aka. “poly reduction”
Strategie completamente diverse
Approcci iterativi
remove
vertex
repeat
compi l'azione di semplificazione
atomica meno costosa
(in termini di errore aggiunto)
aggiorna costi
edge
collapse
until (obiettivo raggiunto)
es: numero faccie,
errore
remove
face
Semplificazione automatica
Strategie completamente diverse
Vertex clustering:
dividi i vertici originali in una griglia regolare
"collassa" in un solo vertice tutti quelli nella stessa
casella
togli i triangoli che hanno solo 1 o 2 vertici diversi
Approssimazione dipende da dimensione griglia
Marco Tarini ‧ [GAME
-DEV] ‧ Verona ‧
2013
Marco Tarini - 2014
14
Game Engines - Texture Assets - part2
22/11/2014
Semplificazione automatica
Semplificazione a clustering
Simplificazione ad edge collapse
(adattva)
215k faces
(non adattiva)
235k faces
Marco Tarini ‧ [GAME
-DEV] ‧ Verona ‧
2013
Semplificazione automatica
Strategie completamente diverse
Fitting di piani
sostituire molte facce con poligoni planari quando i
loro vertici sono quasi coplanari
Cohen-Steiner,
Alliez,
Desbrun
(SIGGR04)
Marco Tarini - 2014
15
Game Engines - Texture Assets - part2
22/11/2014
Detail preservation / recovery
(o "texture for geometry")
Idea:
data
una mesh A low res, uv-mapped
una mesh B hir res
sintetizzare una tessitura per A
per ripristinare il dettaglio hi-freq
presente in B
es: A ottenuto da B
tramite
semplificazione
automatica
500mila
triangoli
TESSITURA
fatta apposta
detail
recover
(es. BumpMap
normali o
RGB map x colori)
semplificazione
automatica
2mila
triangoli
rendering
Marco Tarini ‧ [GAME
-DEV] ‧ Verona ‧
2013
Marco Tarini - 2014
sempre duemila triangoli, ma con texture mapping
16
Game Engines - Texture Assets - part2
22/11/2014
originale
semplificato
simplificato
ma con tessitura
500K triangles
2K
2Ktriangles
triangles
Marco Tarini ‧ [GAME
-DEV] ‧ Verona ‧
2013
Detail Recovery: how to
Low-res
model
Hi-res
model
v
Texture map
find a suitable spot
u
e.g.: color,
precomputed shading,
normal...
Marco Tarini - 2014
Some
attribute
Code & Store
17
Game Engines - Texture Assets - part2
22/11/2014
Esempio
Esempio
Marco Tarini - 2014
18
Game Engines - Texture Assets - part2
22/11/2014
esempi da cg-talks – CG society
esempi da cg-talks – CG society
Marco Tarini - 2014
19
22/11/2014
esempi da cg-talks – CG society
Game Engines - Texture Assets - part2
Mesh: task tipici nella game
industry
Poly reduction / Retopology
e.g. LOD construction
Light baking
Precomputazione Luce
e.g.: Ambient Occlusion
U-V mapping
parametrizzazione
Texturing
creazione tessiture di vario tipo
Rigging / Skinning / Animation
more about this next time
Marco Tarini - 2014
20
Game Engines - Texture Assets - part2
22/11/2014
Una classe di tool utili:
attribute transfer
Attribute transfer
Da mesh A a mesh B
Retargeting di:
Animazioni, UV-mapping, tessiture, …
Solid textures
Marco Tarini - 2014
21
Game Engines - Texture Assets - part2
22/11/2014
Solid Textures
Tessitura volumetrica voxelizzata
1 texel == 1 voxel
E.g. ogni voxel un colore RGB
solid RGB textures
Come tutte le tessiture:
In video RAM
Accesso veloce durante rendering
MIP mapping, filtering in accesso…
Modellano colore di tutto il volume
superficie + interno
utile, per es, per fratture
Nota: nessun bisogno di UV-mapping!
tessitura indicizzata con geometria mesh
Solito problema: spazio ram
Cubico con risoluzione
Soluz: tessiture procedurali?
Marco Tarini - 2014
22