Modellazione fisica per ambienti...

Post on 28-Sep-2020

0 views 0 download

transcript

1

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Modellazione fisicaModellazione fisica

per ambienti virtualiper ambienti virtuali

Ing. Davide VercelliIng. Davide Vercelli

davide.vercelli@sssup.it davide.vercelli@sssup.it

Emanuele Emanuele RuffaldiRuffaldi

emanuele.ruffaldi@sssup.itemanuele.ruffaldi@sssup.it

2

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Argomenti di oggiArgomenti di oggi

CosCos’è’è la simulazione la simulazione dimamicadimamica??

Richiami di dinamicaRichiami di dinamica

Soluzioni numericheSoluzioni numericheper le equazioni differenzialiper le equazioni differenziali

Struttura di un motore fisicoStruttura di un motore fisico

Utilizzo di un motore fisicoUtilizzo di un motore fisico

3

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Introduzione:

Cos’è la simulazione dinamica?

4

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Simulazione dinamica in breveSimulazione dinamica in breve

Dinamica:Dinamica:applicazione delle leggi di Newtonapplicazione delle leggi di Newtonsul moto dei corpisul moto dei corpi

Simulazione dinamica:Simulazione dinamica:ottenere lottenere l’’evoluzione del sistemaevoluzione del sistemaa partire dalla descrizione dia partire dalla descrizione di–– OggettiOggetti

–– Interazioni fra oggettiInterazioni fra oggetti

–– Forze che agiscono sugli oggettiForze che agiscono sugli oggetti

5

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Tipologie di simulazioneTipologie di simulazione

Offline:Offline:velocitvelocitàà scorrelatascorrelatada quella dei processi simulatida quella dei processi simulati

Online:Online:stessa velocitstessa velocitàà dei processi simulatidei processi simulati–– RealtimeRealtime

–– Interattiva: Interattiva: èè possibile modificarepossibile modificarelo stato della simulazionelo stato della simulazionementre mentre èè in corsoin corso

6

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Applicazioni industrialiApplicazioni industriali

PrototipizzazionePrototipizzazione, studi ingegneristici, studi ingegneristici

Formazione del personaleFormazione del personale

7

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Applicazioni: animazione 3DApplicazioni: animazione 3D

TessutiTessuti VentoVento Moto inerzialeMoto inerziale ecc. ecc. ecc.ecc.

8

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Applicazioni: giochi e VRApplicazioni: giochi e VR

Incrementare la credibilitIncrementare la credibilitàà–– veicoli, sport, balistica, veicoli, sport, balistica, ““ragrag--dolldoll””, ecc., ecc.

Compromesso accuratezza/prestazioniCompromesso accuratezza/prestazioni

... e divertimento!... e divertimento!

9

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

ProblemiProblemi

AccuratezzaAccuratezza

PrestazioniPrestazioni

StabilitStabilitàà

ParameterParameter tuningtuning

10

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Cinematica e dinamica

11

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

CinematicaCinematica

DescriviamoDescriviamoil movimentoil movimentodi un corpodi un corpoignorandone le causeignorandone le cause

ControlliamoControlliamodirettamentedirettamentela variabile la variabile posizioneposizione

P(t) = P(t) = mvmv

a(t) = a(t) = dvdv//dtdt

v(t) = v(t) = dxdx//dtdt

x(t)x(t)

12

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

DinamicaDinamica

F(t)F(t)

a(t) = F/ma(t) = F/m

v(t) = v(t) = ∫∫aa

x(t) = x(t) = ∫∫vv

dPdP(t)/(t)/dtdt = F= F

DescriviamoDescriviamole le causecause del moto, del moto, ovvero le forzeovvero le forze

ControlliamoControlliamodirettamentedirettamentele forze che agisconole forze che agisconosui corpi stessisui corpi stessi

13

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Cinematica vs. DinamicaCinematica vs. Dinamica

CinematicaCinematica

Dinamica!Dinamica!

14

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Richiami di dinamicaRichiami di dinamica

15

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Dinamica delle particelleDinamica delle particelle

Particella (o punto)Particella (o punto) Non ha estensioneNon ha estensione La sua posizione nello spazio La sua posizione nello spazio èèdescritta solo dalla sua traslazione descritta solo dalla sua traslazione rispetto allrispetto all’’origine: (x, y, z)origine: (x, y, z)

Stato di una particellaStato di una particella PosizionePosizione VelocitVelocitàà

16

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Sistema di particelle (1/2)Sistema di particelle (1/2)

QuantitQuantitàà di moto totaledi moto totale

P = P = ΣΣiippii = = ΣΣiimmiivvii

Centro di massaCentro di massa

xxcmcm = (= (ΣΣiimmiixxii)/M)/M

17

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Sistema di particelle (2/2)Sistema di particelle (2/2)

In assenza di forze esterne:In assenza di forze esterne:

la quantitla quantitàà di moto (o di moto (o momento linearemomento lineare) ) del sistema si conservadel sistema si conserva

il centro di massa resta in quieteil centro di massa resta in quiete

In presenza di forze esterne:In presenza di forze esterne:

il moto del centro di massa il moto del centro di massa èè equivalente equivalente a quello di una quello di un’’unica particellaunica particellacon massa con massa M=M=ΣΣmmii

18

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Applicazioni dei sistemi particellari in CGApplicazioni dei sistemi particellari in CG

Molto usati!Molto usati!

Effetti (fuoco, nebbia, nuvole...)Effetti (fuoco, nebbia, nuvole...)

Anche capelli!Anche capelli!

19

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Dinamica del corpo rigidoDinamica del corpo rigido

Il corpo rigidoIl corpo rigido

Ha unHa un’’estensione spazialeestensione spaziale–– ÈÈ quindi soggetto anche al moto rotatorioquindi soggetto anche al moto rotatorio

ÈÈ indeformabileindeformabile

Stato di un corpo rigidoStato di un corpo rigido

Posizione e velocitPosizione e velocitàà (del baricentro)(del baricentro)

Rotazione e velocitRotazione e velocitàà angolareangolare

20

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Moto rotatorioMoto rotatorio

Rotazione attorno ad un asse fissoRotazione attorno ad un asse fisso

LL’’angolo angolo θθ varia nel tempovaria nel tempo

Tracciando unTracciando un’’analogiaanalogiafra angolo fra angolo θθ(t) e posizione x(t)(t) e posizione x(t)possiamo definire:possiamo definire:–– VelocitVelocitàà angolareangolare

–– Accelerazione angolareAccelerazione angolare

–– Momento angolareMomento angolare

–– Momento di una forzaMomento di una forza

–– Momento dMomento d’’inerziainerzia

21

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Parallelismo fra moto lineare e angolareParallelismo fra moto lineare e angolare

ττ = = IIαα = = dLdL//dtdt

= F x r= F x rF = ma = F = ma = dPdP//dtdtforzaforza

L = IL = IΩΩP = P = mvmvmomento (si conserva)momento (si conserva)

II((momento dmomento d’’inerzia)inerzia)

mm((massa inerzialemassa inerziale))

resistenza al motoresistenza al moto

αα = = ddΩΩ//dtdt= d= d22ΘΘ/dt/dt22

a = a = vxvx//dtdt= d= d22x/dtx/dt22

accelerazioneaccelerazione

ΩΩ = = ddΘΘ//dtdtv = v = dxdx//dtdtvelocitvelocitàà

ΘΘ (angolo)(angolo)xxposizioneposizione

AngolareAngolareLineareLineare

22

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Moto del corpo rigidoMoto del corpo rigido

Moto di un singolo corpo rigidoMoto di un singolo corpo rigido

Tutte le forze influenzanoTutte le forze influenzanoil moto del baricentroil moto del baricentro

Alcune forze influenzanoAlcune forze influenzanoanche il moto rotatorioanche il moto rotatorio–– Forze che non agiscono uniformemente su Forze che non agiscono uniformemente su tutto il corpotutto il corpo

–– Forze non in linea col baricentroForze non in linea col baricentro

23

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Momento (o tensore) dMomento (o tensore) d’’inerziainerzia

ÈÈ una matrice 3x3 che rappresentauna matrice 3x3 che rappresentala resistenza di un corpo alla rotazionela resistenza di un corpo alla rotazionerispetto ai vari assirispetto ai vari assi

I = mrI = mr22(per un punto, rispetto ad un asse noto)(per un punto, rispetto ad un asse noto)

Nota: Nota: èè diverso per ogni orientazionediverso per ogni orientazionedi un corpo, ma di un corpo, ma èè possibile esprimerlopossibile esprimerlocomecome

I(t) = R(t)I(t) = R(t)IIbodybodyRR(t)(t)TT

24

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

ConstrainedConstrained dynamicsdynamics

Le cose si complicano quando piLe cose si complicano quando piùùcorpi rigidi interagiscono:corpi rigidi interagiscono:

CollisioniCollisioni

VincoliVincoli(sottrazione di gradi di libert(sottrazione di gradi di libertàà))

25

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

CollisioniCollisioni

Argomento molto vastoArgomento molto vasto

In breve:In breve:

CollisionCollision detectiondetection–– Banale particelle/pianoBanale particelle/piano

–– Poco banale fra superfici qualsiasi!Poco banale fra superfici qualsiasi!

CollisionCollision responseresponse–– Cruciale Cruciale dovedove applichiamo la rispostaapplichiamo la rispostain un corpo rigidoin un corpo rigido

26

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Soluzioni numericheSoluzioni numericheper le equazioni differenzialiper le equazioni differenziali

27

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Equazioni differenziali ordinarieEquazioni differenziali ordinarie

Una ODE (Una ODE (OrdinaryOrdinary DifferentialDifferential EquationEquation))di ordine di ordine ““nn”” èè

““unun’’equazione in cui lequazione in cui l’’incognitaincognita

èè una funzione in una variabile indipendente,una funzione in una variabile indipendente,

e che contiene derivate delle che contiene derivate dell’’incognitaincognita

in quella variabile fino allin quella variabile fino all’’ordine nordine n””

Esempio:Esempio:

F = ma F = ma ovveroovvero dd22x/dtx/dt22=F/m=F/m(ODE di ordine 2)(ODE di ordine 2)

28

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Soluzioni numericheSoluzioni numeriche

Calcoliamo la variazione di x(t)Calcoliamo la variazione di x(t)in un intervallo temporale in un intervallo temporale ∆∆TT

Metodi famosiMetodi famosi–– EuleroEulero

–– Punto di mezzoPunto di mezzo

–– RungeRunge KuttaKutta

–– ecc.ecc.

29

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Metodo di EuleroMetodo di Eulero

dxdx//dtdt = f(t)= f(t)

x(tx(t00 + h) = x+ h) = x00 + + hfhf(t(t00))

30

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Problemi (1/2)Problemi (1/2)

AccuratezzaAccuratezza–– La soluzione non La soluzione non èè esatta, ma esatta, ma quantoquanto

si discosta da un risultato corretto?si discosta da un risultato corretto? Ordine dellOrdine dell’’erroreerrore

–– Che prezzo siamo disposti a pagareChe prezzo siamo disposti a pagarein cambio di una maggiore accuratezza?in cambio di una maggiore accuratezza? Funzioni di costoFunzioni di costo(numero di valutazioni di F e F(numero di valutazioni di F e F’’))

31

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Problemi (2/2)Problemi (2/2)

StabilitStabilitàà–– Alcuni metodi rischiano di divergere Alcuni metodi rischiano di divergere completamentecompletamente

–– Equazioni Equazioni ““stiffstiff”” Metodi implicitiMetodi impliciti

–– Diminuire il passo di integrazione può Diminuire il passo di integrazione può servire, ma può costare molto e a volte servire, ma può costare molto e a volte può essere addirittura controproducente!può essere addirittura controproducente!

32

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Deriva numerica di R: problemaDeriva numerica di R: problema

R R èè la matrice 3x3 che esprimela matrice 3x3 che esprimela rotazione di un corpo nello spaziola rotazione di un corpo nello spazio

Dopo molte elaborazioni successiveDopo molte elaborazioni successivesi accumulano gli errori numericisi accumulano gli errori numerici

Tuttavia non tutte le matrici 3x3Tuttavia non tutte le matrici 3x3sono matrici di rotazione!sono matrici di rotazione!–– R tende ad allontanarsi dallR tende ad allontanarsi dall’’ortogonalitortogonalitàà

Effetto grafico e fisico non realisticoEffetto grafico e fisico non realistico

–– Difficile ripristinare RDifficile ripristinare R

33

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Deriva numerica di R: soluzione (1/2)Deriva numerica di R: soluzione (1/2)

I quaternioniI quaternioni

Estensione dei numeri complessiEstensione dei numeri complessi

Un valore reale e tre immaginariUn valore reale e tre immaginari

Q = a + Q = a + ibib + + jcjc +kd+kd

concon ii22 = j= j22 = k= k22 = = ijkijk = = --11

Un quaternione Un quaternione èè unitario seunitario se

aa22 + b+ b22 + c+ c22 + d+ d22 = 1= 1

Ogni quaternione unitario Ogni quaternione unitario èè interpretabile come una rotazione interpretabile come una rotazione in 3D e viceversain 3D e viceversa

34

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Deriva numerica di R: soluzione (2/2)Deriva numerica di R: soluzione (2/2)

Risolvono il problema perchRisolvono il problema perchéé::

Hanno solo 4 elementiHanno solo 4 elementi–– Si accumula meno erroreSi accumula meno errore

Sono facili da correggereSono facili da correggere–– Hanno norma unitariaHanno norma unitaria

–– Tutti i 4v con norma unitariaTutti i 4v con norma unitariasono quaternioni!sono quaternioni!

Inoltre:Inoltre:–– Meno memoriaMeno memoria

–– Facile interpolare rotazioniFacile interpolare rotazioni

35

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Struttura di un motore fisico

36

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Strutture datiStrutture dati

structstruct ParticleParticle

floatfloat m;m; /* massa *//* massa */

floatfloat x[3];x[3]; /* posizione *//* posizione */

floatfloat v[3];v[3]; /* /* velocitavelocita’’ */*/

floatfloat f[3];f[3]; /* risultante *//* risultante */

;;

structstruct ParticleSystemParticleSystem

intint n;n; /* numero di particelle *//* numero di particelle */

ParticleParticle **p;**p;

floatfloat t;t; /* orologio di sistema *//* orologio di sistema */

;;

37

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Metodo Metodo GetDerivativeGetDerivative

voidvoid GetDerivativeGetDerivative((ParticleSystemParticleSystem *ps*ps, , floatfloat *dst*dst) )

forfor ((intint i = 0; i < i = 0; i < psps-->n; i++) >n; i++)

ParticleParticle *p*p = = psps-->p[i];>p[i];

*(dst++) = p*(dst++) = p-->v[0];>v[0]; /* /* xdotxdot = v */= v */

*(dst++) = p*(dst++) = p-->v[1];>v[1];

*(dst++) = p*(dst++) = p-->v[2];>v[2];

*(dst++) = p*(dst++) = p-->f[0] / p>f[0] / p-->m;>m; /* /* vdotvdot = f / m */= f / m */

*(dst++) = p*(dst++) = p-->f[1] / p>f[1] / p-->m;>m;

*(dst++) = p*(dst++) = p-->f[2] / p>f[2] / p-->m;>m;

38

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Metodo Metodo SetStateSetState

voidvoid SetStateSetState((ParticleSystemParticleSystem *ps*ps, , floatfloat *src*src) )

forfor ((intint i = 0; i < i = 0; i < psps-->n; i++) >n; i++)

ParticleParticle *p*p = = psps-->p[i];>p[i];

pp-->x[0] = *(src++);>x[0] = *(src++);

pp-->x[1] = *(src++);>x[1] = *(src++);

pp-->x[2] = *(src++);>x[2] = *(src++);

pp-->v[0] = *(src++);>v[0] = *(src++);

pp-->v[1] = *(src++);>v[1] = *(src++);

pp-->v[2] = *(src++);>v[2] = *(src++);

/* analogamente abbiamo /* analogamente abbiamo GetStateGetState */*/

39

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Esempio col metodo di Eulero (2/2)Esempio col metodo di Eulero (2/2)

ParticleSystemParticleSystem *ps*ps = = Init_SystemInit_System(NPARTICLES);(NPARTICLES);

floatfloat *aux*aux = = newnew floatfloat[[psps-->n * 6]; >n * 6];

floatfloat *aux2 = *aux2 = newnew floatfloat[[psps-->n * 6]; >n * 6];

forfor ((psps-->t = t_0; >t = t_0; psps-->t < >t < t_endt_end; ; psps-->t += >t += delta_tdelta_t) )

ClearForcesClearForces(ps);(ps); /* p[i]/* p[i]-->f = 0 */>f = 0 */

ComputeForcesComputeForces(ps);(ps); /* p[i]/* p[i]-->f = (...) */>f = (...) */

GetDerivativeGetDerivative(ps, (ps, auxaux);); /* F(t) *//* F(t) */

_vector_scale(_vector_scale(auxaux, , delta_tdelta_t);); /* /* hFhF(t) */(t) */

GetStateGetState(ps, aux2);(ps, aux2); /* x0 *//* x0 */

_vector_add(aux2, _vector_add(aux2, auxaux, aux2);, aux2); /* x0 + /* x0 + hFhF(t) */(t) */

SetStateSetState(ps, aux2);(ps, aux2);

40

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Struttura generaleStruttura generale

voidvoid ComputeForcesComputeForces((ParticleSystemParticleSystem *p*p, , floatfloat t);t);

Init_SystemInit_System();();

whilewhile (1) (1)

/* qui prendiamo il vecchio stato *//* qui prendiamo il vecchio stato */

ODE_SolverODE_Solver(t0, (t0, t0t0 + h, state, + h, state, ComputeForcesComputeForces););

/* qui settiamo il nuovo stato *//* qui settiamo il nuovo stato */

In generale In generale ODE_SolverODE_Solver può chiamare può chiamare ComputeForcesComputeForcespipiùù volte durante un singolo volte durante un singolo stepstep

41

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Caso del corpo rigidoCaso del corpo rigido

La struttura si arricchisceLa struttura si arricchisce–– Rotazione R (o q!)Rotazione R (o q!)

–– Tensore dTensore d’’inerzia inerzia IbodyIbody

–– VelocitVelocitàà angolare (o momento)angolare (o momento)

–– Momento della forza TMomento della forza T

Vanno calcolate forze e momentiVanno calcolate forze e momenti

42

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Utilizzo di un motore fisicoUtilizzo di un motore fisico

(esempio di ODE)(esempio di ODE)

43

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Il software ODEIl software ODE

Da non confondere:Da non confondere:–– ODE, la libreria di simulazione dinamicaODE, la libreria di simulazione dinamica

–– ODE, equazioni differenziali ordinarieODE, equazioni differenziali ordinarie

ODE sta per ODE sta per ““Open Dynamics Open Dynamics EngineEngine””

ÈÈ open sourceopen source–– LGPLLGPL

–– BSDBSD

C / C++C / C++ www.ode.orgwww.ode.org

44

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Inizializzazione di ODEInizializzazione di ODE

Per prima cosa si crea un mondoPer prima cosa si crea un mondo(contenitore di oggetti(contenitore di oggettiin grado di interagire fra loro)in grado di interagire fra loro)

dWorldIDdWorldID world = world = dWorldCreatedWorldCreate();();

Successivamente possiamoSuccessivamente possiamoaggiungere i corpi rigidiaggiungere i corpi rigididBodyIDdBodyID body = body = dBodyCreatedBodyCreate(world);(world);

45

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

I corpi rigidi (I corpi rigidi (dBodydBody))

Metodi per settare lo statoMetodi per settare lo statodBodySetPositiondBodySetPosition(body, x, y, z);(body, x, y, z);

dBodySetRotationdBodySetRotation(body, R);(body, R);

dBodySetQuaterniondBodySetQuaternion(body, q);(body, q);

dBodySetLinearVeldBodySetLinearVel(body, x, y, z);(body, x, y, z);

dBodySetAngularVeldBodySetAngularVel(body, x, y, z);(body, x, y, z);

... e relativi metodi di ... e relativi metodi di GetGet

Metodi per aggiungere forzeMetodi per aggiungere forzedBodyAddForcedBodyAddForce(body, x, y, z);(body, x, y, z);

dBodyAddTorquedBodyAddTorque(body, R);(body, R);

/* ... E molte altre varianti *//* ... E molte altre varianti */

/* vengono azzerate dopo ogni /* vengono azzerate dopo ogni timetime stepstep */*/

46

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

La massa (La massa (dMassdMass) (1/2)) (1/2)

Struttura che contieneStruttura che contiene–– MassaMassa

–– Posizione del centro di gravitPosizione del centro di gravitàà

–– Momento dMomento d’’inerziainerzia

ÈÈ possibile inizializzarlapossibile inizializzarlamediante composizione di massemediante composizione di massedi solidi elementaridi solidi elementari–– CosCosìì non cnon c’è’è bisogno di calcolare Ibisogno di calcolare I

47

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

La massa (La massa (dMassdMass) (2/2)) (2/2)

Esempio:Esempio:dMassdMass m1, m2;m1, m2;

dMassSetSpheredMassSetSphere((&m&m, density1, 5.0);, density1, 5.0);

dMassSetBoxdMassSetBox((&m&m, density2, 1.0, 2.0, 3.0);, density2, 1.0, 2.0, 3.0);

dMassAdddMassAdd(&m1, &m2);(&m1, &m2);

dBodySetMassdBodySetMass(body, &m1);(body, &m1);

Altre operazioni:Altre operazioni:–– TraslazioneTraslazione

–– RotazioneRotazione

–– AdjustAdjust (per settare la massa totale)(per settare la massa totale)

48

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

CollisionCollision detectiondetection

CollisionCollision detectiondetection–– EsternaEsterna

–– Integrata in ODEIntegrata in ODE

LL’’esito esito èè una serie di una serie di ““contactcontact pointspoints””

Per usare la Per usare la CDCD integrataintegrata–– Ogni corpo deve avereOgni corpo deve avereuna sua descrizione una sua descrizione ““spazialespaziale””

49

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

GeometryGeometry ObjectsObjects (1/2)(1/2)

Descrivono figure rigide fondamentaliDescrivono figure rigide fondamentali

Ogni body può averne piOgni body può averne piùù di unadi una

Vari tipi:Vari tipi:–– SferaSfera

–– BoxBox

–– ““CappedCapped CylinderCylinder””

–– PianoPiano

–– RaggioRaggio

–– MeshMesh

–– User User defineddefined......

50

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

GeometryGeometry objectsobjects (2/2)(2/2)

Esempio:Esempio:dGeomIDdGeomID box, box, spheresphere;;

box = box = dCreateBoxdCreateBox(0, (0, lxlx, , lyly, , lzlz););

spheresphere = = dCreateSpheredCreateSphere(0, (0, radrad););

dGeomSetPositiondGeomSetPosition((spheresphere, 0, 0, , 0, 0, lzlz););

dGeomSetBodydGeomSetBody(box, body);(box, body);

dGeomSetBodydGeomSetBody((spheresphere, body);, body);

Da non confondere:Da non confondere:–– Creazione massaCreazione massa

–– Creazione geometrieCreazione geometrie

51

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

I vincoli (I vincoli (dJointdJoint))

Limitano i movimenti possibili di un Limitano i movimenti possibili di un corpo rispetto ad un altrocorpo rispetto ad un altro

52

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Uso dei vincoli (Uso dei vincoli (dJointdJoint))

dJointIDdJointID joint = joint = dJointCreateBalldJointCreateBall(world, (world, jointGroupjointGroup););

/* o /* o HingeHinge, , SliderSlider, , ContactContact, Universal, , Universal, FixedFixed... */... */

dJointAttachdJointAttach(joint, body1, body2);(joint, body1, body2);

dJointSetBallAnchordJointSetBallAnchor(joint, x, y, z); /* occhio! */(joint, x, y, z); /* occhio! */

dJointSetHingeAxisdJointSetHingeAxis(j2, x, y, z);(j2, x, y, z);

/* ecc. *//* ecc. */

Limiti spaziali/angolari vanno settati a manoLimiti spaziali/angolari vanno settati a manodJointSetHingeParamdJointSetHingeParam(j2, (j2, dParamLoStopdParamLoStop, val);, val);

I joint possono anche avere una velocitI joint possono anche avere una velocitààdJointSetHingeParamdJointSetHingeParam(j2, (j2, dParamVeldParamVel, val2);, val2);

dJointSetHingeParamdJointSetHingeParam(j2, (j2, dParamBouncedParamBounce, 0.2);, 0.2);

53

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Disabilitare i corpiDisabilitare i corpi

Un corpo Un corpo ““lontanolontano”” può essere può essere temporaneamente escluso dalla temporaneamente escluso dalla simulazionesimulazione

In ODE cIn ODE c’è’è la possibilitla possibilitàà di farlo di farlo automaticamente sotto certe soglie di automaticamente sotto certe soglie di velocitvelocitàà

dBodyEnabledBodyEnable(body);(body);

dBodyDisabledBodyDisable(body);(body);

boolbool b = b = dBodyIsEnableddBodyIsEnabled(body);(body);

dBodySetAutoDisableFlagdBodySetAutoDisableFlag(body, 1);(body, 1);

Questo funziona per Questo funziona per ““isoleisole”” di corpi di corpi connessiconnessi

54

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Avanzamento di una simulazioneAvanzamento di una simulazione

dWorldStepdWorldStep(world, (world, stepsizestepsize))–– Può essere lentoPuò essere lento

–– Pesante in memoriaPesante in memoria

–– Relativamente accuratoRelativamente accurato

dWorldQuickStepdWorldQuickStep(world, (world, stepsizestepsize))–– Molto piMolto piùù veloceveloce

–– Molto piMolto piùù leggeroleggero

–– Meno accuratoMeno accurato

55

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

ParameterParameter tuningtuning

ERP (ERP (ErrorError ReductionReduction ParameterParameter))–– Ripristinare joint violatiRipristinare joint violati

–– ERP = 1.0 instabile...ERP = 1.0 instabile...

CFM (CFM (ConstraintConstraint ForceForce Mixing)Mixing)–– ““AmmorbidisceAmmorbidisce”” i vincolii vincoli

–– Stabilizza i conti...Stabilizza i conti...

Grandezze in gioco di ordine Grandezze in gioco di ordine paragonabileparagonabile

... E molto altro!... E molto altro!

56

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Per approfondire

57

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Motori fisiciMotori fisici

TokamakTokamak http://www.tokamakphysics.com/http://www.tokamakphysics.com/

–– Nativo in XVR (prossima lezione)Nativo in XVR (prossima lezione)–– Documentazione scarsaDocumentazione scarsa–– Gratis ma non open sourceGratis ma non open source–– Sviluppo fermo?Sviluppo fermo?

PhysXPhysX http://www.ageia.com/http://www.ageia.com/developersdevelopers//

–– Supporto hardware!Supporto hardware!–– CommercialeCommerciale–– Ottimi strumenti per gli sviluppatoriOttimi strumenti per gli sviluppatori

BulletBullet http://www.continuousphysics.com/http://www.continuousphysics.com/BulletBullet//

–– Open sourceOpen source–– Integrazione con Integrazione con BlenderBlender

58

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroModellazione basata sulla FisicaModellazione basata sulla Fisica

Letture consigliateLetture consigliate

Il famoso Il famoso ““paperpaper di di BaraffBaraff””–– http://www.cs.cmu.edu/http://www.cs.cmu.edu/~baraff~baraff//sigcoursesigcourse//

ODE User GuideODE User Guide–– http://www.ode.org/http://www.ode.org/odeode--latestlatest--userguide.htmluserguide.html

NovodexNovodex//PhysXPhysX–– Registrazione obbligatoria Registrazione obbligatoria