video game dev 2015/2016 univ. insubira game...

16
Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini 1 Video Game Dev 2015/2016 Univ. 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 Procedural Non procedural

Upload: hoangtu

Post on 03-Aug-2019

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 2: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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)

Page 3: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 4: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 5: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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!)

Page 6: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 7: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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”)

Page 8: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

/

,...)(

Page 9: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 10: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 11: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

Page 12: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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)

Page 13: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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

/

,...)(

Page 14: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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,

Page 15: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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 =

Page 16: Video Game Dev 2015/2016 Univ. Insubira Game Physicsvcg.isti.cnr.it/~tarini/teaching/gamedev2015/14.physics.pdf · Video Game Dev - Univ Insubria 2015/2016 11/11/2015 Marco Tarini

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 )