Game Dev - GAME TOOLS
Modelli 3D nei games
Marco Tarini
Modelli 3D
Modello 3D = Mesh poligonale
Di triangoli, o mista (quadrilateri + triangoli)
Struttura dati per modellare oggetti 3D
GPU friendly
Risoluzione (potenzialmente) adattiva
“Complessità” = numero facce
Mesh triangolare (o mesh simpliciale)
Un insieme di triangoli adiacenti
facce
vertici
spigoli (o edges)
Mesh di triangoli
discretizzazione lineare a tratti
di una superfice continua (un “2 manifold”) immersa in R3
Componenti:
geometria
i vertici, ciascuno con pos (x,y,z) un campionamento della superficie!
connettività
come sono connessi i vertici (es.: in una tri-mesh, i triangoli) attributi
es: colore, materiali, normali, UV, …
Mesh: geometria
Insieme di posizioni dei vertici
Un vettore posizione (x,y,z) per ogni vertice
Mesh: connettività
Triangoli (e edges) che connettono fra loro i vertici
Come nodi in un grafo
Mesh: attributi
Proprietà che variano sulla superficie Di solito memorizzati per vertice
(almeno, nei games)
Attributi più diffusi nei games:
Normale
per: re-lighting dinamico Colore
per: baked lighting (ambient occlusion) per: aggingere varietà (RGB)
Coordinate tessitura (“uv mapping”) per: texture mapping
Direzioni tangenti per: bump mapping
Bone assignment (“rigging” o “skinning”) per: animazioni skeletali
Meshes: complessità crescente
70.000 △
1994 1994
1994 1994
Meshes: complessità crescente
1.200.000 △
1997 1997 1997 1997
Meshes: complessità crescente
2.000.000.000 △
2002
2002
2002
2002
Ma… in ambiente games
LOW POLY MODELLING!
Low-poly modelling
pixel art
: (high-res) mesh
(high res) image
= :
low-poly model
Metal Slug (1996, Nazca Copr), on Neo Geo (SNK) Solomons’s key
(1986, Temco) on Z80
reminder:
per tutti gli ‘80,
il principaleassetdei games è consistito da
sprites / tilemapsin pixel art ...
Anche nei games
800 △ Unreal Torunement (1999)
Anche nei games
800 △ Unreal Torunement (1999)
Unreal Torunement 2K3 (2002)
3000 △
Anche nei games
800 △ Unreal Torunement (1999)
Unreal Torunement 2K3 (2002)
3000 △
Unreal Torunement 3 (2007)
4500 △
solo l’arma questa, 12000 △
800 △ (1999)
3000 △ (2002)
15000 △ (2006)
Anche nei games
230 △ (1996)
300 △ (1998)
30.000 △ (2008)
48.000 △ (2012) 4.000 △
(2002)
Come rappresento una mesh?
(quali strutture dati)
Una tri-mesh è un insieme di triangoli adiacenti Modo
diretto:un vettore di triangoli
e per ogni triangolo tre vertici e per ogni vertice tre coordinate
Ma: replicazione dati poco efficiente in spazio oneroso fare updates
Come rappresento una mesh?
(quali strutture dati)
Modo
indexed:Geometria: array di vertici
in ogni vertice, posizione e attributi Attributi:
coi vertici
(e.g. campi della classe “vertice”)
Connettività:
Array di triangoli Per ogni triangolo:
tripletta di indicia vertice
Come rappresento una mesh?
(quali strutture dati)
Modo
indexed:class Vertex { vec3 pos;
rgb color; /* attribute 1 */
vec3 normal; /* attribute 2 */
};
class Face{
int vertexIndex[3];
};
class Mesh{
vector<Vertex> vert; /* geom + attr */
vector<Face> tris; /* connettivita’ */
};
LetteraL.off
Esempio di mesh indexed:
guardiamo dentro un file in formato OFF
1 5 1 0 5 1 4 3 2 1 0 4 5 4 3 0 4 6 7 8 9 4 6 9 10 11 4 0 1 7 6 4 1 2 8 7 4 2 3 9 8 4 3 4 10 9 4 4 5 11 10 4 5 0 6 11 OFF
12 10 40 0 0 0 3 0 0 3 1 0 1 1 0 1 5 0 0 5 0 0 0 1 3 0 1 3 1 1 1 1 1
# vertici
# facce # edges
x,y,z 2ndo vert
prima faccia:
4vertici:
con indici 3, 2, 1 e 0 indice 0
indice 3 indice 2 indice 1
Come rappresento una mesh?
(quali strutture dati)
Alternativa x storare la connettività : come vettore di half-edges
V2
V3
V5 V4
V1
Come rappresento una mesh?
(quali strutture dati)
connettività con indexed triangles
V2
V3
V5 V4
V1
T1
T2
T3
Tri:
Wedge 1:
Wedge 2:
Wedge 3:
T1 V4 V1 V2
T2 V4 V2 V5
T3 V5 V2 V3
Come rappresento una mesh?
(quali strutture dati)
connettività con half-edges
V2
V3
V5 V4
V1
H1 H2
H3
H4 H5 H6
H7 H8
H9
Half
edge: Da: A: Next:
Oppo- site:
H1 V4 V1 H2 -- H2 V1 V2 H3 --
H3 V2 V4 H1 H4
H4 V4 V2 H5 H3
H5 V2 V5 H6 H7
H6 V5 V4 H4 --
H7 V5 V2 H8 H5
H8 V2 V3 H9 -- H9 V3 V5 H7 --
Strutture per connettività a confronto
INDEXED
HW friendly (directly maps to:
vertex arrays, VBO) Navigazione… complicata
richiede strutture dati ulteriori (“di adiacenza”)
Ok per: mesh “pure”
(di soli tri, o, al max, di soli quad) Compatta: 3 indici x tri
> adatta per rendering
HALF-EDGES
Rendering… complicato
Navigazione semplice
es: x trovare tutti i vertici nella
“stella 1” di un vertice…
Ok anche per: polygonal mesh (poligoni misti a piacere) Prolissa: 12 indici per tri
> adatta a mesh processing
Mesh processing
aka Geometry Processing
Un buon manuale
x programmare
mesh processing:
Mesh processing
aka Geometry Processing
Librerie:
VCG-Lib(CNR, )
Vision and Computer Graphic Lib
OpenMesh(RWTH, de ) + open flipper
CGAL(INRIA, )
Computational Geometry Algorithms Library
(tutte: C++, open-source.)
Attributi comuni: normale
Vettore direzione unitario Orientamento della superficie Usato per il lighting
Di solito, calcolate automaticamente dalla geometria
…
Ma l’artista decide
quali edges sono
softe quali hard
(2) (1)
v3
Calcolo normali dalla geometria
Geometria
=(1)=>
normali x faccia
=(2)=>
normali x vertice
e1
e2
e1×e2
N ˆ
v1
Nˆ
2
Nˆ
3
Nˆ
4
Nˆ
5
Nˆ
6
Nˆ
Nn
N N
N
ˆ ˆ ... ˆ
2
1
+ + +
=
|
| ˆ
N N = N
v1
v2
Calcolo normali dalla geometria
Nota:
l’orientamento delle facce deve essere coerente
1
3 2 1
3 2
senso opposto, edge coerente A
B C
D
Nota:
normali alla superficie
normali
geometrichedefinite per faccia implicite
“vere”
(verso dipende da orientamento vertici in faccia)
usate per…
back face culling
normali
come attributodefinite per vertice esplicitamente memorizzate arbitrio dell’artista
(nel caso generale)
usate per…
lighting
≠
si possono usare come modo per calcolare
Crease edges
(aka “hard edges”)
Edges di discontinuità delle normali.
Come si ottiene una discontinuità(C0) negli attributi?
No Creases:
(all edges “soft”)
With Creases:
(red edges “hard”)
risposta:
Vertex seams
Vertex seam = due vertici coincidenti in xyz
(attributi diversi assegnati ad ogni copia)
es: vertex seams per implementare hard edges
a literal
“seam”
Attributi Comuni: colore
Utile per:
Differenziare modelli Baked global lighting
(per vertex amient occlusion)
Modelli 3D:
come ottenerli
Come tutti gli asset, possible aquistarli
Formati files per mesh …
(daxkcd.com)
Formati files per mesh
(una Torre di Babele!)
3DS -3D Studio Max file format
OBJ -Another file format for 3D objects
MA, MB -Maya file formats
3DX -Rinoceros file format
BLEND -Blender file format
DAE -COLLADA file format (Khornos)
FBX -Autodesk interchange file format
X -Direct X object
SMD -good for animations (by Valve)
MD3 -quake 3 vertex animations
DEM -Digital Elevation Models
DXF -(exchange format, Autodesk's AutoCAD)
FIG -Used by REND386/AVRIL
FLT -MulitGen Inc.'s OpenFlight format
HDF -Hierarchical Data Format
IGES -Initial Graphics Exchange Specification
IV -Open Inventor File Format Info
LWO, LWB & LWS- Lightwave 3D file formats
MAZ -Used by Division's dVS/dVISE
MGF -Materials and Geometry Format
MSDL -Manchester Scene Description Language
3DML -by Flatland inc.
C4D –Cinema 4D file format
SLDPTR -SolidWork "part"
WINGS -Wings3D object
NFF -Used by Sense8's WorldToolKit
SKP -Google sketch up
KMZ -Google Earth model
OFF -A general 3D mesh Object File Format
OOGL -Object Oriented Graphics Library
PLG -Used by REND386/AVRIL
POV -“persistence of vision” ray-tracer
QD3D -Apple's QuickDraw 3D Metafile format
TDDD -for Imagine & Turbo Silver ray-tracers
NFF & ENFF -(Extended) Neutral File Format
VIZ -Used by Division's dVS/dVISE
VRML, VRML97 -Virtual Reality Modeling Language (RIP)
X3D -tentato successore di VRML
PLY -introdotto by Cyberware – tipic. dati range scan
DICOM -Dalla casa omonima – tipic. dati CAT scan
Renderman -per l'omonimo visualizzatore
RWX -RenderWare Object
Z3D -ZModeler File format
etc, etc, etc...
Formati file per mesh più usati nei games
.OBJ(wavefront)
☺max diffusione
☺indexed, normali , uv-mapping no colori (solo indice materiale x faccia) no skinning o ani
.SMD ( )
☺animazioni scheletali + skinning
☺normali , uv-mapping no indexed!
no colori .MD3 (Quake, IDsoft)
☺vertex animations, normali no colori
.PLY (cyberware)
☺customizzabile
“accademico”
.3DS ( )
☺si: colori, uv-mapping, indexed, materiali, tessiture…
no: normali
limite al numero di vert (64K) .COLLADA( )
☺completissimo
☺nato apposta per essere interscambio
☺open standard
quasi impossibile da parsare completamente .FBX ( )
☺completo, comprese animations complesso, difficile da parsare .MA /.MB ( )
☺completo, comprese animations complesso, difficile da parsare
più diffusimeno diffusi
Modelli 3D:
come ottenerli
Modellazione digitale manuale
Lavoro dei modellatori digitali
2D concepts / Sketches 2D concept
artist
3D modeller (modellatore
digitale 3D) 3D low poly mesh
Tecniche di modellazione digitale di modelli 3D
Tecniche:
Low poly diretta e.g. wings3D
Subdivision surfaces e.g. con blender Digital sculpting
e.g. con Z-brush
Mesh editing:
applicativi generici
3D Studio Max (autodesk) , Maya(autodesk) , Cinema4D (maxon) Lightweight 3D (NewTek), Modo(The Foundry) , …
generici, potenti, completi
Blender
idem, ma open-source e freeware (simile a: Gimp VS. Adobe Photoshop per 2D images)
MeshLab
open-source, grande collezione algoritmi di geometry processing …
AutoCAD (autodesk), SolidWorks(SolidThinking)
per CAD
ZBrush(pixologic), + Sculptris, Mudbox(autodesk)
metafora scultura virtuale, specializzato in ritocco manuale dettagli hi-freq, bumpmapping, normalmaps…
Wings3D
open-source, piccolo, specializzato in low-poly editing, subdivision surfaces
[Rhinoceros]
parametric surfaces (NURBS)
FragMotion
specializzato per mesh animate
…
+ moltissimi strumenti per contesti specifici
(editing di umani, di interni architetturali, di paesaggi, o editor specifici per game-engines, etc...)
Low poly diretta
(demo)
Low poly diretta (demo)
1 2 3 4 5 6 7 8
9 10 11 12 13 14 17 18
19 20
21 22
23 24
25 26 27 28 29 30 31
…
Tecniche di modellazione digitale di modelli 3D
Subdivision surfaces
Raffinamento progressivo della mesh da lowest res hi res
Ottimo per oggetti dall’aspetto smooth, organico e “pulito”
Superfici di suddivisione
Modo molto diffuso per costruire mesh
1: fare mesh di controllo a bassa risoluzione
"a mano"
2: raffinarla automaticamente iterativamente
(ad ogni interazione si aggiungono facce e vertici)
molti schemi matematici differenti
con diverse peoprietà
Superfici di suddivisione
Esempio: schema butterfly
(per mesh triangolari)e' uno degli schemi 1=>4
(in un passo di suddivisione, da ogni triangolo se ne ottengono 4) (aggiunta di un vertice per ogni edge)
MA... quali coordinate assegnare al nuovo vertice?
Ogni schema di suddivisone ha la sua formula. Ad esempio...
Passo suddivisonedi
POS( ) = (POS( ) + POS( ))
+ (POS( ) + POS( ))
+ (POS( ) + POS( ) + POS( ) + POS( ))
Superfici di suddivisione
Esempio: schema butterfly
168 8
16 162
162
16-1
16-1 16-1
16-1
168 162 16-1
Superfici di suddivisione
Ad ogni passo di suddivisione
(x,y,z) dei nuovi vertici inseriti
formula (estrapolazione dei vicini)
(x,y,z) dei vecchi vertici
si tiene la vecchia pos (schemi“interpolativi”) oppure
formula (estrapolazione) (schemi“approssimativi”)
Esempio: con schema Catmull-Clark
level 0
(“control mesh”) level 1
level 2 level 3
lvl
∞
(“limit surface”)
Superfici di suddivisione
mesh di controllo
mesh
Superfici di suddivisione
Anche iterativamente:
1- Modellare “control mesh”
(editing manuale)
2- Suddivisione
(un passo)
3- Ritocco!
(editing manuale)
4- Goto 2
(fino a
raggiungimento risultato voluto
alla risuolzione voluta)
DEMO!
Molti schemi…
Catmull-Clark Doo-Sabin Loop
sqrt(3) Butterfly Mid-edge
….
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
recente aumento di popolarità (GPU friendliness)
Differenze fra gli schemi di suddivisione
interpolativi VS approssimativi
solo triangoli, solo quads, qualunque cosa incremento complessità
(per ogni passo di suddivisione)
proprietà della limit surface
(esistenza, smoothness)
esistenza forma chiusa per la limit surface
(esatta o approssimata)
…
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tecniche di modellazione digitale di modelli 3D
Tecniche:
Low poly diretta e.g. wings3D
Subdivision surfaces e.g. con blender Digital sculpting
e.g. con Z-brush
DEMO
Digital Sculpting
cisel (scalpello)
Modelli 3D:
come ottenerli
Modellazione digitale manuale
Lavoro dei modellatori digitali
2D concepts / Sketches 2D concept
artist
3D modeller (modellatore
digitale 3D) 3D low poly mesh
Modelli 3D:
come ottenerli
Attraverso 3D scanning
Tecnologie per ottenere:
modelli digitali 3D a partire da:
oggetti reali
3D scanning
Modelli 3D:
come ottenerli
3D scanning
A.k.a. automatic 3D model acquisition Molte tecnologie diverse
Laser scanners Time of flight
Structured light (kinect)
…
Caratteristiche diverse Qualità risultati
Rumore / risoluzione Automatismo Invasività
Markers? Powder?
Real time? (kinect) Costo
Dimensione massima oggetti (full body scanner?)
Modelli 3D:
come ottenerli
Attraverso 3D scanning
Modello reale Scultore
(fisico)
Hi res model 3D scanning
Modelli 3D:
come ottenerli
(scanned) hi res model 30000 tri (artistic)
manually edited 3D low poly mesh PERFECT for games!
(much easier to: animate, re-edit, uvmap, …)
VS
Dino, scanned by artec3d
Modelli 3D:
come ottenerli
Modellazione procedurale
Programma che genera la mesh
parametri
Procedural generation:
ottimo per games
Concetto: invece di avere un asset,
avere un programma che lo crea dinamicamente
Modellazione procedurale
AI procedurali, boss procedurali…
Livelli procedurali Terreni procedurali Musica procedurale Scene procedurali
Elite, Acornsoft, 1984
Parentesi:
Left 4 dead, Valve, 2008
Rescue the beagles 16x16, 2008 Minecraft,
Mojang, 2009
Procedural generation:
ottimo per games
Concetto: invece di avere un asset,
avere un programma che lo crea dinamicamente
Modellazione procedurale
AI procedurali, boss procedurali…
Livelli procedurali Terreni procedurali Musica procedurale Scene procedurali
Vantaggi: varietà, no RAM, … Elite, 1984
Parentesi:
Semplificazione automatica di modelli 3D
automaticamente
mesh semplificata 2K triangles mesh originale
500K triangoli
parametri:
un errore massimo
o un numero di facceobiettivo
Semplificazione automatica di modelli 3D
p e r f o r m a n c e
q u a l i t y
Semplificazione automatica
LOD 1 LOD 2 LOD 3 LOD 4
Una piramide di Livelli di Dettaglio
usare quando visto da vicino
usare quando visto da lontano
LoD pyramid
Demo
Semplificazione automatica
Molte tecniche diverse
Adattive oppure no
usare piu' triangoli dove c'e' bisogno (es non nelle zone cmq piatte)
oppure no
Errore massimo introdotto:
misurato e/o limitato oppure no
Topologia:
mantenuta oppure no Streaming
Possibile Oppure no ...
Texture mapping
geometria 3D
(insieme di quadrilateri)
+
RGB texture 2D (color-map)
=
Altro esempio di color-map
+ =
Altri esempi di color-map
Notazione
Texture 2D
s t
texel
Texture Space
(o "spazio parametrico" o "spazio s-t" o "spazio u-v")
Una Texutre e' definita nella regione [0,1] x [0,1]
dello "spazio parametrico"
es: 512 texels
es: 1024 texels
1.0 1.0
Due notazioni
Texture Space in OpenGL (s,t)
s t
1.0
1.0 u
v
1.0
1.0
Texture Space in DirectX (u,v) (0,0)
(0,0)
Task: “u-v mapping” di una mesh
(“u-v” == “s-t”)Assegnare una coppia di coordinate texutres ad ogni vertice della mesh
In preprocessing
s t
s t
Problema difficile: “u-v mapping”
(“u-v” == “s-t”)fatto a mano,
oppure automatizzato
Texture mapping
Ogni texel è…
Un colore RGB (color map, RGB map,diffuse map) Una normale (bump map, o normal map)
Il coefficiente speculare (specular map) Un fattore di trasparenza (alpha map, o
cutout texture) Una scavo dalla superfice
(displacemnt map, oheight texture) Un lighiting precalcolato (light map ,
baked light texture)
Texture maps come assets
Vari texture «sheets»
associati ad una mesh 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, …)
Texture maps come assets
Caratteristiche:
Size:
risoluzione
canali (es: alpha?) MIP-maps precalcolati?
Tileable?
A A
B
B
Vincoli ricorrenti:
res come potenze di 2
(richiesto da sempre meno engines) sia in U che in V
(es: 256x256 o 1024x512)
res per lato < max
(es: max = 4096 o 2048)
Tileable textures
Tileable textures
Tipico utilizzo:
Molto efficiente in spazio!
Texture maps come assets:
formati files
x immagini generiche
(decomprimere tutta immagine prima di accedere ai pixel)
☺compressione: ottima loading: pesante:
decomprimere da RAM, (forse) ricomprimere in GPU-RAM
MIP-map lvls etc:
controllato dall’engine
x textures
(random accessibility ai texels senza decomprimere)
compressione: cattiva
☺loading: leggero
direct copy Disco => RAM =>
GPU RAM
☺MIP-map lvls etc:
controllato dall’artista
Texture maps come assets:
formati files
x immagini generiche:
.JPG /.JPEG lossy,
☺> compresisone,
☺immagini “fotografiche”: best solo 3 canali (no choice) 8 bit x canale (no choice) .PNG
☺lossless
< compressione
☺disegni: best
☺anche canale alpha possibile
☺anche 16 bits possibile .TIFF e.RAW (rari)
☺lossless
compressione: vabbe’
☺max flessibilità canali etc .PNM (davvero raro)
compressione: ahah
x textures:
.DDS
(direct draw surface) lossy
compresisone: poco (a rate fisso)
☺GPU ready
☺inlcude MIPmap levels (volendo)
con compressione a scelta (S3TC):
DXT1 DXT2 DXT3 DXT4 DXT5
(diversi compromessi fra qualità, costo, canali…)
“no / 1-bit alpha”
“rough alpha”
“smooth alpha ”
RGB maps:
come si ottengono
Image first, then UV-mapping
e.g. immagine da fotografie e.g. tileable images
UV-mapping
first, thenpaint 2D
paint with 2D app(e.g. photoshop)
UV-mapping
first, thenpaint 3D
paint within 3D modelling software, Or: export 3D images,
use e.g. photoshop, reimport images
UV-mapper
UV-mapper 2D painter
UV-mapper 3D painter
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
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2
Alpha mapping
(texels = lvl trasparenza)
es: drappi, barba...
by Micheal Filipowski
tessitura
Texture mapping e Alpha Test
es: alberi, foliage
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Texture mapping e Alpha Test
Es: pelo, pellicce
tessitura (ripetuta)
Bump-Mapping (see demo)
stessa geometria (una sfera) bumpmaps diverse
Normal maps
Memorizzati come immagini
RGB => XYZ
(come?) caratteristico colore RGB
(0.5,0.5,1) - (128,128,255)
Normal maps
Espressi in spazio tangente
Memorizzare direzioni tangenti Tangente e Bi-tangente
Attributi x vertice!
Computati automaticamente a partire da UV mapping (come?)
Normal maps
Come si ottengono (1/3):
Displacement map come grayscale
Filtro (e.g.
photoshop) 2D texture
painter
Normal map
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
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
Semplificazione automatica
Strategie completamente diverse
Approcci iterativi repeat
compi l'azione di semplificazione atomica meno costosa
(in termini di errore aggiunto) aggiorna costi
until (obiettivo raggiunto)
es: numero faccie, errore
remove vertex
remove face
edge collapse
Detail preservation
(o "texture for geometry")
Idea:
semplificare una mesh sintetizzare una tessitura
per ripristinare il dettaglio perso durante la semplificazione
M a r c o T a r i n i ‧ [ G A M E - D E V ] ‧ V e r o n a ‧
500mila triangoli
2mila triangoli
semplificazione automatica
sempre duemila triangoli, ma con texture mapping
rendering
TESSITURA fatta apposta (es. BumpMap
normali o RGB map x colori) detail
recover
M a r c o T a r i n i ‧ [ G A M E - D E V ] ‧ V e r o n a ‧ 2 0 1 3
simplificato
2K triangles
originale
500K triangles
semplificato ma con tessitura
2K triangles
Esempio
Esempio
Mesh: task tipici nella game industry
Semplificazione automatica
LOD construction
Light baking
Precomputazione Luce
Tipico esempio: Ambient Occlusion
U-V mapping
parametrizzazione
Texturing
creazione tessiture di vario tipo
Rigging / Animation
linear blend skinning
Una classe di tool utili:
attribute transfer
Attribute transfer
Da mesh A a mesh B Retargeting di:
Animazioni, UV-mapping, tessiture, …
3D assets and memory
Gli asset Mesh + Tessiture sono tenuti in memoria VIDEO
Conseguenze per
Memorizzazione, Gestione