video game dev 2015/2016 univ. insubira game...
TRANSCRIPT
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 1
Video Game Dev 2015/2016Univ. Insubira
Game Physics
Marco Tarini
Animazioni nei games
� 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
ProceduralNon procedural
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 2
(recall?)
Game Engine
� Parte del game che si occupa di alcuni dei task “comuni”� Scena / livello
� Renderer� Real time transofrm + lighting� Models, materials …
� Physics engine� (soft real-time) newtonian physical simulations� Collision detection + response
� Networking � (LAN – es tramite UTP)
� Sound mixer e “sound-renderer”
� Gestore unificato HCI devices
� Main event loop, timers, windows manager…
� Memory management
� Artificial intelligence module� Soluz dei sotto task comuni AI
� Supporto alla localizzazione
� Scripting
� GUI (HUD)
Animationsscripted or computed
Simulazione fisicanei video games
� 3D, oppure 2D
� “soft” real-time
� efficienza� 1 frame = 33 msec (a 30 FPS)
� fisica = 5% - 30% max del tempo di computaz
� plausibililità� (ma non necessariamente “realismo”)
� robustezza� (non deve “scoppiare”… quasi mai)
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 3
Physics engine:intro
� Modulo del game engine
� � esegue a tempo di esecuz del game
� Computazione high-demanding
� (su low-time budgets!)
� Ma, altamente parallelizzabile
� “embarassignly parallel” ;)
� � hardware support
(come il Rendering Engine,
del resto)
Tasks del game engine:(simulare l’evoluz fisica del sistema!)
� Dynamics (Newtonian)per classi di oggetti come:� Corpi rigidi (rigid bodies)
� Corpi deformabili articolati (soft bodies)� “ragdolling”
� Corpi deformabili free form: soluz specifiche per� Corde � Tessuti� Capelli…
� Fluidi
� Air (wind) etc
� Collision handling� Collision detection
� Collision response
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 4
HardWare per Physics engine
� Recentemente: PPU
� “Physical Processing Unit”
� unità HW specializzata per motore fisico
� Più recentemente: GP-GPU
� “General Purpose Graphics Processing Unit”
� riuso della scheda video per task generici
(non di computer graphics 3D)
� e.g. Cuda (nVidia)
per sfuttare un forte parallelsmo,
ci vuole un HardWare fortemente para llelo
Software: libraries / SDK
open source, free,
HW accelerated
2D! open source, free
open source, free
HW accelerated
(OpenCL)
HW accelerated
(CUDA)
by
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 5
PhysX
…
Fisica nei games: cosmesi o gameplay?
� Solo un accessiorio grafico?
(x realismo!)
� es:
� particle effects (senza feedback)
� “secondary” animations e.g.
� ragdolling
� o parte del gameplay?
� e.g. phyisic based puzzles
� in 2D, approccio popolare
(da sempre!)
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 6
Fisica nei games: cosmesi o gameplay?
� Solo un accessiorio grafico?
(x realismo!)
� es:
� particle effects (senza feedback)
� “secondary” animations e.g.
� ragdolling
� o parte del gameplay?
� e.g. phyisic based puzzles
� in 3D : tendenza in aumento
Motore fisico:
Dynamics
� Simualz fisica (newtoniana)� Ripasso:
� oggetti = massa
� stato di un oggetto:� posizione e derivata: velocità
� (e momento)
� orientamento e velocità angolare
� (e momento angolare)
� mutamento dello stato:� forze => accelerazione,
torque
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 7
Reminder:Posizione di un oggetto
Fisica 2D
� Posizione:
(x,y)
� Orientamento:
(α) – angolo (scalare)
Fisica 3D
� Posizione:
(x,y,z)
� Orientamento:
quaternione oppure
asse,angolo oppure
asse*angolo oppure
matrice 3x3 oppure
angoli Eulero oppure …
non molto adatti
Dinamica newtoniana: bignamino
Locazioneattualeoggetto
Rate of changedi
(d / dt )
“con massa”
(momentum)
Ciò che cambia ilrate of change
(d2 / dt2)
“con massa”
Posizione �
� = (x,y,z)
Velocity ��
�� � ��
( |��| = “speed” )
Quantità di moto
�� ∙
Accelerazione
� � ��� = ��
Forza ��
�� � � ∙
Orientamento
(e.g.
quaternione)
Angular velocity Momento angolare
∙ �
� = momento
d’inerzia (x asse)
(“inerzia rotazionale”)
Acc. angolare α Torque τ
τ � � ∙ �
(“momentomeccanico”)
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 8
Dinamica newtoniana: bignamino
Locazioneattualeoggetto
Rate of changedi
(d / dt )
“con massa”
(momentum)
Ciò che cambia ilrate of change
(d2 / dt2)
“con massa”
Posizione �
� = (x,y,z)
Velocity ��
�� � ��
( |��| = “speed” )
Quantità di moto
�� ∙
Accelerazione
� � ��� = ��
Forza ��
�� � � ∙
Orientamento
(e.g.
quaternione)
Angular velocity Momento angolare
∙ �
� = momento
d’inerzia (x asse)
(“inerzia rotazionale”)
Acc. angolare α Torque τ
τ � � ∙ �
(“momentomeccanico”)
cambiano lo stato(no memoria)
stato (si mentiene! inerzia!)(cambia, ma solo con contin)
Dinamica (Newtoniana)
∫
∫⋅+=
⋅+=
=
=
dtvpp
dtavv
mfa
pfunzf
r
rrr
rr
r
0
0
/
,...)(
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 9
Dinamica (Newtoniana)
∫
∫⋅+=
⋅+=
=
=
dtvpp
dtavv
mfa
pfunzf
r
rrr
rr
r
0
0
/
,...)(forze
acceleraz
velocità
posizioni
Dinamica (Newtoniana)
∫
∫
⋅+=
⋅+=
=
=
C
C
t
C
t
C
CC
CC
dttvptp
dttavtv
mtfta
tpfunztf
0
0
0
0
)()(
)()(
/)()(
),...)(()(
r
rrr
rr
r
pos, acc, vel, forze:
funz
del tempo
corrente Ct
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 10
Un (ovvio) inciso
� = tempo virtuale != tempo reale
� es:
� gioco in pausa � t costante.
� Fast forward, replay,
rallenty, time all’indietro � cambia ritmo/verso di scorrimento di t
occasionalmente,
il gameplay sfrutta su questa differenza in modo spettacolare!
PoP – the sands of times serie (Ubisoft, 2003-…) Braid (Jonathan Blow, 2008)
Ct
Computare l’evoluzione fisica
� Soluzione analitica:
stato = funz( t )
date le funz di forza (e acc)
trovavare le funzioni (pos, vel…)
che siano nelle relazioni
specificate:
� Soluzione numerica
1. stato( t = 0) init2. stato( t + 1)
evolve( statot )3. goto 2
∫
∫
⋅+=
⋅+=
=
=
C
C
t
C
t
C
CC
CC
dttvptp
dttavtv
mtfta
tpfunztf
0
0
0
0
)()(
)()(
/)()(
),...)(()(
r
rrr
rr
r
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 11
Semplice esempio: soluzione analitica
=
y
x
v
vv
0
r
=
0
00
p
−
⋅=
8.9
0mf
r
x
ycostante
(in questo specifico caso,
non dipende da pos)
«tiro balistico»
di un massa,
in 2D, ignorando
gli attriti….
Semplice esempio: soluzione analitica
Calcolando…
⋅−⋅
⋅
=⋅
⋅−
+
=⋅+=
⋅−
=⋅
−
+
=
−
==
−
⋅=
∫∫
∫
2
00
0
0
2/8.98.90
0)()(
8.98.9
0)(
8.9
0/)()(
8.9
0)(
CCy
Cx
t
y
x
t
C
Cy
x
t
y
x
C
CC
C
ttv
tvdt
tv
vdttvptp
tv
vdt
v
vtv
mtfta
mtf
CC
C
r
r
rr
r
∫
∫
⋅+=
⋅+=
=
=
C
C
t
C
t
C
CC
CC
dttvptp
dttavtv
mtfta
tpfunztf
0
0
0
0
)()(
)()(
/)()(
),...)(()(
r
rrr
rr
r
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 12
Semplice esempio: soluzione analitica
Calcolando…
⋅−⋅
⋅
=
⋅−
=
−
=
−
⋅=
22/8.9
)(
8.9)(
8.9
0)(
8.9
0)(
CCy
Cx
C
Cy
x
C
C
C
ttv
tvtp
tv
vtv
ta
mtf
r
r
r
x
y
)( Ctp
Alcuni modelli numerici
� Metodi forward Eulero (in avanti)
� (semplici e diretto)
� Metodi “leapfrog”
� (it: a “cavallina”)
� Metodi di Verlet
� (position based dynamics)
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 13
Caratteristiche di un metodo numerico
� Quanto è efficiente / oneroso� serve che sia almeno soft real-time
� (se ogni tanto computaz rimadata al prox frame, ok)
� Quanto è accurato� serve che sia almeno plausibile
� (se rimane plausibile, discrepanze dalla realtà, ok)
� Quanto è robusto� serve che risultati del tutto sballati siano molto rari
� (e, mai crash)
� Quanto è generico� quali fenomeni / vincoli / tipo di oggetti è in gradi di
riprodurre?
� necessità dipendenti dal contesto (es, gameplay)
L’evoluzione fisica del sistemametodi di Eulero
(1) computare la forza(su ciascuna particella)come una qualche funzione delle posizioni(anche di altre particelle)
(2) accelerazionedi ogni particella data da:forze su di essa, e sua massa
(3) aggiornare la velocità con l’ acceleraz.
(4) aggiornare la pos con la velocità
(stato) , (var temporanea)
Per ogni step:
∫
∫⋅+=
⋅+=
=
=
dtvpp
dtavv
mfa
pfunzf
r
rrr
rr
r
0
0
/
,...)(
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 14
Metodi di Eulero
dtvpp
dtavv
mfa
pfunzf
v
p
⋅+=
⋅+=
=
=
=
=
r
rrr
rr
r
r
/
...),(
...
...init
state
one
stepdttt +=
Semplice esempio: soluzione numerica
=
=
4
20
y
x
v
vvr
=
0
00
p
−
⋅=
1
0mf
r
x
ycostante
(in questo specifico caso,
non dipende da pos)
per lo stesso
fenomeno
dell’esempio
precendete
1=dtqui scegliamo, per es,
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 15
Semplice esempio: soluzione numerica
dtvpp
dtavv
mfa
mf
⋅+=
⋅+=
=
−
⋅=
r
rrr
rr
r
/
8.9
0
init
step: 0 1 2 3 4 5 6 7 …
pos: (0,0) (2,3) (4,5) (6,6) (8,6) (10,5) (12,3) (14,0) …
vel: (2,4) (2,3) (2,2) (2,1) (2,0) (2,-1) (2,-2) (2,-3) …
x
y
0
1
23 4
5
6
7
step step step step step step step step
Computare l’evoluzione fisica
� Soluzioni analitiche: � Soluzioni numeriche:
x
y
0
1
23 4
5
6
7
x
y
)( Ctfunctionpos =
Video Game Dev - Univ Insubria
2015/2016
11/11/2015
Marco Tarini 16
Computare l’evoluzione fisica
� Soluzioni analitiche:
� efficientissime!
� soluz forma chiusa
� accurati
� solo sistemi semplici
� formule trovate
caso per caso(spesso neanche esistono!)
� NO(ma, per es, utili per
consentire all’’AI
di fare predizioni)
� Soluzioni numeriche:
� dispendiosi (iterativi)
� ma, interattivi
� errori di integrazione
� flessibili
� generici
� SI
Errori (di integrazione)
� Dipendono da dt� dt piccolo = più step (a parità di tempo virtuale)
= più sforzo computazionalema meno errore, simulaz più accuratezza(ci discostiamo meno dalla soluz analitica, esatta)
� dt = 1.0 sec / FpS della simulaz fisica� (recall: non necessariametne lo stesso FpS del rendering)
� quanto cresce l’errore al variare di dt ?� «Ordine» della simulazione
� Eulero è del 1mo ordine: l’errore è un O( dt^1 )(ma di solito molto meno)
� Si accumulano col tempo� (dipendono anche da t_tot )