Post on 28-Sep-2020
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