18/03/2013
1
[GameDev]
Tools Programming
Marco Tarini
This Course
this
course
18/03/2013
2
game
contents
Intro: Game Tools
game
game
engine
game
tools
digital artists
game
contents
Intro: game contents!
(aka game assets)
� 3D data
� models
� textures
� materials
� shaders
� animations
� collision objects
� etc
� audio
� music
� sound fxs
� ambient sounds
� voice overs
� etc
� video
� cut-scenes, intros
� etc
� 2D art
� screen splashes
� backgrounds
� GUI / HUD elements
(e.g. buttons, bars),
� [ sprites & tile-sets ? ]
� etc
� text
� dialogues trees
� messages
� translations
� etc
� etc:
� scripts
� stats
� levels
� etc
18/03/2013
3
game
contents
Intro: Game Tools
game
game
engine
game
tools
digital artists
game
contents
[MOD]
contents
digression:
game [MOD] development
game
game
engine
(public)
game
tools
game fans!
[MOD]
contents
18/03/2013
4
Intro: game contents!
(aka game assets)
� 3D content
� models
� textures
� materials
� shaders
� animations
� collision objects
� etc
� audio
� music
� sound fxs
� ambient sounds
� voice overs
� etc
� video
� cut-scenes, intros
� etc
� 2D art
� screen splashes
� backgrounds
� GUI / HUD elements (e.g. buttons, bars),
� [ sprites & tile-sets ? ]
� etc
� text
� dialogues trees
� messages
� translations
� etc
� etc:
� scripts,
� stats,
� levels'
� 3D Models i.e. tri-meshes with:
� per vertex attrib
� normals, color, AO,
� LODs
� “uv-mapping”
� keyframes
� cyclic animations
� face-morphs,
� “rigging”
� Materials� lighting model stats / flags
� textures
� RGB maps
� normal maps
� alpha maps
� shaders
� vertex, fragments,
Intro:
3D game contents
� Animations� vertex animations
� skeletal animations
� Skeletons
� Collision objects� hit-boxes
� bounding objects
� Particle systems
� Environments� skydomes
� env. maps
� scene props
18/03/2013
5
bounding volumes
� Tipi di bounding volumes:� Axis Aligned Bounding Box (A.A.B.B.)
� (generic) Bounding Box
� Discrete Oriented Polytope (D.O.P.)
� Bounding sphere
� Bounding ellipsoids (axis aligned or not)
� Bounding cylinders
� �
� Difetti e pregi� quanto sono onerosi da pre-computare?
� quanto sono aderenti ?
� sono robusti a rotazioni ?
� quanto sono onerose le query (es.: di intersezione)?
Rendering di scene composite
spazio
mondo
(globale)
spazio oggetto
ruota 1
spazio oggetto
automobile
18/03/2013
6
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scene graphV
M0
M1M2
M3M4 M5
M6
posizonamento
della automobile
(rispetto
al mondo)
posiz. della
ruota
(rispetto
all’
automobile)
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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scene graphV
M0
M1M2
M3M4 M5
M6
posizonamento
della automobile
(rispetto
al mondo)
posiz. della
ruota
(rispetto
all’
automobile)
18/03/2013
7
Un robot
animato…M
M0
M1
M2
M4 M6
Robot
(bacino)
spazio
mondo
busto1
gamba
Sx
gamba
Dx
spalla
Dx
spalla
Sx
polpaccio
Dx
busto2
M3
M7
piede
Dx
M8M5
collo
Algoritmo 1
mult_matrix( M );
draw( bacino );
push();
mult_matrix( M0 );
draw( busto1 );
mult_matrix( M1 );
draw( busto2 );
push( );
multMatrix( M3 );
draw( spallaDx );
… /* resto del braccio dx */
pop();
push( );
multMatrix( M3 );
draw( spallaSx );
… /* resto del braccio sx */
pop();
pop();
push();
mult_matrix( M2 );
draw( gambaDx );
…
pop();
18/03/2013
8
poses (for a skeleton)poses (for a skeleton)
skins (rigged meshes)skins (rigged meshes)skeletonsskeletons
(Linear blend) Skinning:
oggetti
Skel Human
rest pose(or: bind pose)
pose 0pose 0pose 0pose t20
Skin 1 Skin 2
pose 0pose 0pose t18
Skel Horse
animation 1 animation 2
“rigging”
poses (for a skeleton)poses (for a skeleton)
skins (rigged meshes)skins (rigged meshes)
(Linear blend) Skinning:
Skel
Human
pose 0pose 0pose t20
Skin 1 Skin 2
pose 0pose 0pose t18
animation 1 animation 2
Vincoli
�+
rag
dolling