Animations Tipi di animazione nei games

Transcript

Animations Tipi di animazione nei games
Video Games Dev - 2015/2016
28/11/2015
Video Game Dev 2015/2016
Università dell’Insubria
Animations
Marco Tarini
Tipi di animazione nei games
1. Di oggetti rigidi
animazione di trasformaz di modellazione
(6 DoF per oggetto)
Marco Tarini - Univ. Insubria
1
Video Games Dev - 2015/2016
28/11/2015
Tipi di animazione nei games
1. Di oggetti rigidi
animazione di trasformaz di modellazione
o composti di parti rigide
Tipi di animazione nei games
2. Free-Form deformations / animations
di oggetti deformabili generici
Marco Tarini - Univ. Insubria
2
Video Games Dev - 2015/2016
28/11/2015
Tipi di animazione nei games
3. of articulated models
internal skeleton
la maggior parte dei virtual characters!
“skinning” , oggetti “rigged”
Tipi di animazine
e DoF (x keyframe)
Rigid
DoF =
Degrees of Freedom
Gradi di Libertà
6 DoF per oggetto
(o, es, 9, con rescaling anisotr.)
Articulated
~50-100 DoF per oggetto
(es 3 DoF per giunto x 22 giunti)
Free form
300-10.000 DoF per oggetto
(es 3 per vertice)
Marco Tarini - Univ. Insubria
3
Video Games Dev - 2015/2016
28/11/2015
Animazioni nei games
Procedural
Non procedural
Assets!
Controllo da parte
degli artisti / creatori
(dramatic effects!)
Non interattiva
Realismo…
dipende
dall’artista
Poca customizzabilità
Physic engine
Poco controllo
Interattiva
Realismo come prodotto
collaterale del rispetto
leggi fisiche
Si autoadatta
Animazioni nei games
O… miste
primary animations: scripted
secondary animations: computed
alive characters: scripted
dead characters: computed (ragdolls)
…
Marco Tarini - Univ. Insubria
4
Video Games Dev - 2015/2016
28/11/2015
Parentesi terminologia
Alcuni contrari di “procedurale”,
a seconda del contesto
baked : (“precotto”) ‘congelato’ in un asset,
(anche se era stato prodotto proceduralmente)
asset : stored in un asset, quale che sia l’origine,
cioè letto dal disco (o streamed da web, etc)
scripted : memorizzato in uno script
(ma anche una procedura di creazione può essere in uno script!
e.g. uno script per la creazione procedurale di un livello)
(manually) designed / edited : prodotto da un artista
(e non da un programma)
(fully) simulated : prodotto da simulazione fisica
(e non da un programma semplice)
Animations in games
(of 3D Solid Objects)
Non Procedural
(ASSETS)
Procedural
(PHYSIC ENGINE)
Rigid
Pre-made
transforms
Rigid body
dynamics
Articulated
Skeletal
Animations
Free form
Blend-Shapes
Ragdolling
(generic)
deformable object
simulation
usually
too expensive
Marco Tarini - Univ. Insubria
Inverse
kinematics
Cloth/
garments
Ropes
5
Video Games Dev - 2015/2016
28/11/2015
Animations in games
(of 3D Solid Objects)
Non Procedural
Procedural
(PHYSIC ENGINE)
(ASSETS)
Rigid
Rigid body
dynamics
Pre-made
transforms
Articulated
Skeletal
Animations
Ragdolling
Free form
(generic)
deformable object
simulation
Blend-Shapes
usually
too expensive
Inverse
kinematics
Cloth/
garments
Ropes
Scene graph
posizonamento
della automobile
(rispetto
al mondo)
posiz. della
ruota
(rispetto
all’
automobile)
TR3
Marco Tarini - Univ. Insubria
TR0
TR4
TR1
TR2
TR5 TR6
6
Video Games Dev - 2015/2016
28/11/2015
Scene graph… animato
(animazioni “cinematiche”)
posizonamento
della automobile
(rispetto
al mondo)
posiz. della
ruota
(rispetto
all’
automobile)
TR0
TR3
TR4
Tempo:
t0
t1
t2
t3
t4
Trasformaz:
TR0
TR1
TR2
TR3
TR4
TR1
TR5 TR6
Animazioni cinematiche:
come
modo 1:
asset:
lo script
scripting
DEMO!
modo 2:
editing is software di animaz.
cinema 4D, blender, 3D max, …
(possono usare I.K.)
esportare animaz
come sequenza di keyframes
Files: collada, fbx, …
Tempo:
t0
t1
t2
t3
t4
Arco A:
TR0
TR1
TR2
TR3
TR4
Arco B:
TR0
TR1
TR2
TR3
TR4
Marco Tarini - Univ. Insubria
asset:
l’animaz
7
Video Games Dev - 2015/2016
28/11/2015
Interpolazione di keyframes
(concetto generico)
Keyframes
+
inerpolazione
keyframe A
0.5 ∙ keyframe A
+
0.5 ∙ keyframe B
keyframe B
Interpolazione di keyframes
(concetto generico)
Modellatore / animatore decide:
set di keyframes
con tempi associati
“timeline”
key-frames
La maggior parte frames effettivi:
interpolazioni fra keyframes
risparmio di workload dell’artista
risparmio di storage
nota: distribuzione keyframes adattiva
più keyframes dove necessario
Marco Tarini - Univ. Insubria
8
Video Games Dev - 2015/2016
28/11/2015
Interpolazione di keyframes
(caso animazioni cimematiche)
T1
tempo 100
keyframe A
Ti = ?*
?
tempo 150
frame interpolato
T2
tempo 200
* necessita (buona)
keyframe B
interpolazione
fra trasformazioni…
Animations in games
(of 3D Solid Objects)
Non-Procedural
(ASSETS)
Procedural
(PHYSIC ENGINE)
Rigid
Pre-made
transforms
Rigid body
dynamics
Articulated
Skeletal
Animations
Free form
Blend-Shapes
Ragdolling
(generic)
deformable object
simulation
usually
too expensive
Marco Tarini - Univ. Insubria
Inverse
kinematics
Cloth/
garments
Ropes
9
Video Games Dev - 2015/2016
28/11/2015
Animaz. oggetti deformabili:
Blend shapes
A.K.A:
Blend shapes
Per-vertex animations
Vertex animations
Face morphs
Shape keys
Morph targets
…
BARRY BLITT (THE NEW YORKER)
Blend shapes: concept
Walk cycle
(Monkey Island
LucasArt 1991)
Amimaz 2D (vecchia scuola):
sequenza di sprites
Animaz 3D:
sequenza di mesh?
Marco Tarini - Univ. Insubria
10
Video Games Dev - 2015/2016
28/11/2015
Reminder:
rappresentaz di una mesh
Modo indexed:
Geometria: array di vertici
in ogni vertice, posizione e attributi
Attributi:
nei vertici
(e.g. campi della classe “vertice”)
Connettività:
Array di triangoli
Per ogni triangolo:
tripletta di indici a vertice
Blend shapes
(struttura dati)
V1
V2
T1
T3
V3
T2
V4
geometria:
V5
connettività (es: indexed)
attributi:
UV
Col
(x,y,z)
(u,v)
(r,g,b)
Vert:
Pos
V1
Wedge
1:
Wedge
2:
Wedge
3:
V2
(x,y,z)
(u,v)
(r,g,b)
Tri:
T1
V4
V1
V2
V3
(x,y,z)
(u,v)
(r,g,b)
T2
V4
V2
V5
V4
(x,y,z)
(u,v)
(r,g,b)
T3
V5
V2
V3
V5
(x,y,z)
(u,v)
(r,g,b)
Marco Tarini - Univ. Insubria
11
Video Games Dev - 2015/2016
28/11/2015
Blend shapes
(struttura dati)
V2
V2
V1
V1
T1
V2
T1
T3
T2
V1
V3
V3
T3
T2
V4
T1
T3
V4
V5
V3
V5
T2
V4
attributi:
geometrie:
V5
connettività (es: indexed)
Vert:
Base
Shape
Shape
1
Shape
2
…
UV
Col
V1
(x,y,z)
(x,y,z)
(x,y,z)
…
(u,v)
(r,g,b)
Wedge
1:
Wedge
2:
Wedge
3:
V2
(x,y,z)
(x,y,z)
(x,y,z)
…
(u,v)
(r,g,b)
Tri:
T1
V4
V1
V2
V3
(x,y,z)
(x,y,z)
(x,y,z)
…
(u,v)
(r,g,b)
T2
V4
V2
V5
V4
(x,y,z)
(x,y,z)
(x,y,z)
…
(u,v)
(r,g,b)
T3
V5
V2
V3
V5
(x,y,z)
(x,y,z)
(x,y,z)
…
(u,v)
(r,g,b)
Blend shapes
Una mesh con geometria ripetuta varie volte
Cioé sequenza di mesh (‘shape’) con
connettività: condivisa
attributi: condivisi
(eccetto normali / direz tangenti)
geometria: ripetuta x ogni ‘shape’
(e tessiture: condivise)
Varianti (equivalenti):
o ‘morph’
o (key)-‘frame’
o ‘shape-key’
Modo relativo:
base shape: memorizzato esplicitamente
ogni altro shape: come differenza (x,y,z) con base shape
Modo assoluto:
ogni shape memorizzato indipendentemente
Marco Tarini - Univ. Insubria
12
Video Games Dev - 2015/2016
28/11/2015
Blend shapes
(struttura dati)
Mesh indexed:
class Vertex {
vec3 pos;
rgb color;
vec3 normal;
};
class Face{
int vertexIndex[3];
};
class Mesh{
vector<Vertex> vert; /* geom + attr */
vector<Face> tris;
/* connettivita’ */
};
Blend shapes
(struttura dati)
Mesh indexed:
class Vertex {
vec3 pos [ N_SHAPES ] ;
rgb color;
vec3 normal [ N_SHAPES ] ;
};
class Face{
int vertexIndex[3];
};
class Mesh{
vector<Vertex> vert; /* geom + attr */
vector<Face> tris;
/* connettivita’ */
};
Marco Tarini - Univ. Insubria
13
Video Games Dev - 2015/2016
28/11/2015
Blend-shapes:
file formats più diffusi
Semplici:
.MD5 (“quake”, valve)
o, sequenza di mesh separate (es .OBJ)
occhio! connettività coerente?
(vertex ordering, face ordering, wedge ordering)
Complessi:
.DAE (Collada)
.FBX (Autodesk)
Interpolazione fra 2 shapes
Geometria interpolata:
Assoluto:
shapeA ∙ wA + shapeB ∙ wB
Relativo:
shapebase + delta_shapeA ∙ wA + delta_shapeB ∙ wB
con: 0 ≤ wA ≤ 0
0 ≤ wB ≤ 1
wA + wB = 1
Marco Tarini - Univ. Insubria
14
Video Games Dev - 2015/2016
28/11/2015
Interpolazione fra shapes
shape A
shape B
(shapes = espressioni)
Usi delle Blend shapes
Sequenze temporali
shapes = keyframes
Marco Tarini - Univ. Insubria
15
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes
Sequenze temporali
shapes = keyframes
Usi delle Blend shapes:
sequenze temporali
Shapes == keyframes di una animaz
shapeA
shapeB
shapeC
shapeD
– tempo tA
– tempo tB
– tempo tC
– tempo tD
attimo attuale: t con tB < t < tC
inperpolare fra le shape: shape
… B e shapeC
con pesi : …
wB
wC
1 wB
Marco Tarini - Univ. Insubria
16
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes:
sequenze temporali
Shapes == keyframes di una animaz
shapeA
shapeB
shapeC
shapeD
– tempo tA
– tempo tB
– tempo tC
– tempo tD
attimo attuale: t con tB < t < tC
inperpolare fra le shape: shape
… B e shapeC
con pesi : …
wB
wC
transition function
(concetto generale nelle animaz
vale per tutti i tipi)
Transition functions
Non solo Linear
1
linear
Marco Tarini - Univ. Insubria
1
17
Video Games Dev - 2015/2016
28/11/2015
(concetto generale nelle animaz
vale per tutti i tipi)
Transition functions
Non solo Linear
1
linear
NB:
(
1
estrapolazione !
exaggeration )
Usi delle Blend shapes
Animazioni facciali
(forse l’uso più comune)
Spesso congiunta con animaz skeletali
(mandibola, collo, rotaz bulbi oculari)
Marco Tarini - Univ. Insubria
18
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes
Animazioni facciali
(forse l’uso più comune)
Spesso congiunta con animaz skeletali
(mandibola, collo, rotaz bulbi oculari)
Interpolazione fra più shapes
Blending di shapes:
Assoluto:
shapeA ∙ wA + shapeB ∙ wB+ shapeC ∙ wC + …
con:
0 ≤ wA,B,C, … ≤ 1
o anche no (estrapolazione).
Utile per…
wA + wB + wC + … = 1
Relativo:
shapebase + shapeA ∙ wA + shapeB ∙ wB + shapeC ∙ wC + …
Marco Tarini - Univ. Insubria
19
Video Games Dev - 2015/2016
Marco Tarini - Univ. Insubria
28/11/2015
20
Video Games Dev - 2015/2016
28/11/2015
Blend shapes per animazione
facciale: workflow
Modellatore 3D fa:
il set di blend-keys
Animatore (delle espressioni) decide:
i pesi
tipicamente: attraverso slider
aiutato / sostituito da software
lip sync
espressioni dinamiche e.g. in games
Blending dei keys: in tempo reale
[VIDEO]
Marco Tarini - Univ. Insubria
21
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes
Configurazioni di oggetti deformabili
Pose «precotte»
Usi delle Blend shapes
Varianti di uno stesso oggetto
(miscelabili!)
outfit maschile
Marco Tarini - Univ. Insubria
outfit femminile
22
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes
Varianti di uno stesso oggetto
(miscelabili!)
umano
orco
goblin
nano
Usi delle Blend shapes
Definire morfologia di una classe di oggetti
definire una forma = specificare i pesi
modellazione 3D “ad alto livello”
i pesi “spannano” uno spazio delle forme
una forma = un punto dello spazio
pesi = coordinate
uno spazio è tanto più utile quanto più :
tutte e sole le forme “ragionevoli”
sono punti dello spazio
Es: (ricorrente): morfologie facciali
“face-space”
nota: morfologia facciale ≠ espressione facciale
Marco Tarini - Univ. Insubria
23
Video Games Dev - 2015/2016
28/11/2015
Usi delle Blend shapes
Una blend shape per un face space (“face-morphs”)
[DEMO]
Cosa una blend shape
non fa
Cambi di connettività
es di risoluzione, remeshing
Cambi topologici
rottura, separazione, fusione di pezzi
Cambi di attributi
(es mutamenti di colore…)
Cambi di textures
usare invece una texture animation, maybe?
Marco Tarini - Univ. Insubria
24
Video Games Dev - 2015/2016
28/11/2015
Blend shapes:
come si ottengono
Manualmente:
1. Editare la base shape
compreso:
uv-mapping, texturing, etc.
2. Ri-editare la base shape
x ogni shape-key!
…ma preservando:
connettività,
textures, etc
low poly editing
subdivision surfaces
parametric surfaces…
scupting: difficilmente.
Authoring di blend-shapes
Manuale per
animazione blend-shape
di volti:
“Stop Staring”
(3d edition)
Jason Osipa
Stile,
espressione…
Non tecnico
(alto livello)
No strumenti specifici
e.g. Blender, Maya
Marco Tarini - Univ. Insubria
25
Video Games Dev - 2015/2016
28/11/2015
Blend shapes:
come si ottengono
Cattura:
aquisizione della base shape
(opz: semplificaz remeshing uv-mapping etc)
cattura dei frame successivi
e.g. kinect, o scansione di ogni frame
morphing dei frame successivi
“non rigid mesh alignment”
[VIDEO]
Blend shapes:
vantaggi e svantaggi
☺ Flessibili, espressive, molta libertà…
troppa?
(anche se non
Consumo memoria
Work intensive
da costruire
tanto quanto, e.g., sprites,
xchè frames riutilizzano:
connettività attributi tessiture…)
☺ Facili da usare una volta costruite
solo definiz pesi (e.g. sliders)
Marco Tarini - Univ. Insubria
26
Video Games Dev - 2015/2016
28/11/2015
Blend shapes:
challanges
Cattura da stream di meshes
Compression
eg: prediction + store corrections + Huffman
Streaming
LOD-ding
Marco Tarini - Univ. Insubria
27