Real Time Physics - percro.sssup.itpercro.sssup.it/marcello/didattica/19_PBM.pdf · Ogni rotazione...
Transcript of Real Time Physics - percro.sssup.itpercro.sssup.it/marcello/didattica/19_PBM.pdf · Ogni rotazione...
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
RealReal TimeTime PhysicsPhysics
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
PerchéPerché sisi usanousano le le simulazionisimulazioni fisichefisiche
• Si permette all'utente di interagire con l'ambiente virtuale e
muovere gli oggetti in maniera coerente
• Si aumenta il realismo della scena, gli oggetti non si
intepenetrano, non stanno sospesi in aria
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
La La fisicafisica è è complessacomplessa
• Perfino una collisione anelastica può diventare un
problema complesso
• La maggior parte dei problemi sono complicati da
risolvere in real-time
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
La La fisicafisica è è complessacomplessa (ii)(ii)
••AbbiamoAbbiamo bisognobisogno didi semplificaresemplificare
Solo Solo corpicorpi rigidirigidi, , gligli oggettioggetti deformabilideformabili sonosono trattatitrattati come come casocaso
specialespeciale
Solo Solo formeforme convesseconvesse omogeneeomogenee e e indistruttibiliindistruttibili
CollisioniCollisioni elasticheelastiche tratra gligli oggettioggetti
NienteNiente forzeforze magnetichemagnetiche, , elettricheelettriche o o reazionireazioni chimichechimiche
NienteNiente attritoattrito con con l'arial'aria (o (o modellimodelli di di attritoattrito molto molto semplicisemplici))
MoltiMolti casicasi specialispeciali ((fluidifluidi, , tessutitessuti e e corpicorpi deformabilideformabili))
••Non Non possiamopossiamo semplificaresemplificare troppotroppo
L'utenteL'utente devedeve crederecredere cheche la la fisicafisica siasia realereale
La La simulazionesimulazione devedeve essereessere stabilestabile……
……e e veloceveloce..
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Simulazione dinamica in breveSimulazione dinamica in breve
Dinamica:Dinamica:
applicazione delle leggi di Newtonapplicazione delle leggi di Newton
sul moto dei corpisul moto dei corpi
Simulazione Simulazione dinamicadinamica
ottenere l’evoluzione del ottenere l’evoluzione del sistema a sistema a partire partire
dalla descrizione dalla descrizione di:di:
OggettiOggetti
Interazioni fra oggettiInterazioni fra oggetti
Forze che agiscono sugli oggettiForze che agiscono sugli oggetti
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Tipologie di simulazioneTipologie di simulazione
OfflineOffline::
velocità velocità scorrelatascorrelata da da quella dei quella dei
processi simulatiprocessi simulati
OnlineOnline::
stessa velocità dei processi simulatistessa velocità dei processi simulati
RealtimeRealtime
InterattivaInterattiva: è possibile : è possibile modificare lo modificare lo
stato della stato della simulazione mentre simulazione mentre è in corsoè in corso
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CinematicaCinematica
DescriviamoDescriviamo
il movimentoil movimento
di un corpodi un corpo
ignorandone le causeignorandone le cause
ControlliamoControlliamo
direttamentedirettamente
la 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)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
DinamicaDinamica
dPdP(t)/(t)/dtdt = F(t)= F(t)
a(t) = F(t)/ma(t) = F(t)/m
v(t) = v(t) = a(t)a(t)dtdt
x(t) = x(t) = v(t)v(t)dtdt
DescriviamoDescriviamo
le le causecause del moto, del moto,
ovvero le forzeovvero le forze
ControlliamoControlliamo
direttamentedirettamente
le forze che agisconole forze che agiscono
sui corpi stessisui corpi stessi
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Dinamica delle particelleDinamica delle particelle
Particella (o punto)Particella (o punto)
Non Non ha estensioneha estensione
La La sua posizione nello spazio è sua posizione nello spazio è descritta solo dalla sua traslazione descritta solo dalla sua traslazione rispetto all’origine: (x, y, zrispetto all’origine: (x, y, z))
La particella NON può ruotare!La particella NON può ruotare!
Stato di una particellaStato di una particella
PosizionePosizione
VelocitàVelocità
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Sistema di Sistema di particelleparticelle
In assenza di forze esterneIn assenza di forze esterne::
la quantità di moto (o la quantità di moto (o momento linearemomento lineare) del sistema ) del sistema
si conservasi conserva
il il centro di massa resta in quietecentro di massa resta in quiete
In presenza di forze esterne:In presenza di forze esterne:
il moto del centro di massa è equivalente a quello di il moto del centro di massa è equivalente a quello di
un’unica un’unica particella con particella con massa massa M=M=ΣΣmmii
Quantità Quantità di moto di moto totaletotale
P P = = iippii = = iimmiivvii
Centro di massaCentro di massa
xxcmcm = (= (iimmiixxii)/M)/M
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
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!
11
XVR
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Dinamica del corpo rigidoDinamica del corpo rigido
Il corpo rigidoIl corpo rigido
Ha un’estensione spazialeHa un’estensione spaziale
È È quindi soggetto anche al moto rotatorioquindi soggetto anche al moto rotatorio
È indeformabileÈ indeformabile
Stato di un corpo rigidoStato di un corpo rigido
Posizione e velocità (del baricentro)Posizione e velocità (del baricentro)
Rotazione e velocità angolareRotazione e velocità angolare
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Moto rotatorioMoto rotatorio
Rotazione attorno ad un asse fissoRotazione attorno ad un asse fisso
L’angolo L’angolo θθ varia nel tempovaria nel tempo
Tracciando un’analogiaTracciando un’analogia
fra angolo fra angolo θθ(t) e posizione x(t)(t) e posizione x(t)
possiamo definire:possiamo definire:
Velocità angolareVelocità angolare
Accelerazione angolareAccelerazione angolare
Momento angolareMomento angolare
Momento di una forzaMomento di una forza
Momento d’inerziaMomento d’inerzia
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Parallelismo fra moto lineare e angolareParallelismo fra moto lineare e angolare
LineareLineare AngolareAngolare
posizioneposizione xx ΘΘ (angolo)(angolo)
velocitàvelocità v = dx/dtv = dx/dt ΩΩ = d= dΘΘ/dt/dt
accelerazioneaccelerazione a = vx/dta = vx/dt
= d= d22x/dtx/dt22
αα = d= dΩΩ/dt/dt
= d= d22ΘΘ/dt/dt22
resistenza al motoresistenza al moto mm ((massa inerzialemassa inerziale))
II ((momento d’inerzia)momento d’inerzia)
momentomomento P = mvP = mv L = IL = IΩΩ
forzaforza F = ma = dP/dtF = ma = dP/dt ττ = I= Iαα = = dLdL//dtdt
= F x r= F x r
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Moto del corpo rigidoMoto del corpo rigido
Moto di un singolo corpo rigidoMoto di un singolo corpo rigido
Tutte le forze Tutte le forze influenzano il influenzano il moto del moto del
baricentrobaricentro
Alcune forze Alcune forze influenzano anche influenzano anche il moto il moto
rotatoriorotatorio
Forze Forze che non agiscono uniformemente su che non agiscono uniformemente su
tutto tutto il corpoil corpo
Forze Forze non in linea col baricentronon in linea col baricentro
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Momento (o tensore) d’inerziaMomento (o tensore) d’inerzia
È una matrice 3x3 che rappresentaÈ una matrice 3x3 che rappresenta la resistenza di un corpo alla rotazionela resistenza di un corpo alla rotazione rispetto ai vari assirispetto ai vari assi
NotaNota: è diverso per ogni orientazione: è diverso per ogni orientazione di un corpo, ma è possibile esprimerlodi un corpo, ma è possibile esprimerlo comecome
I(t) = I(t) = R(t) I R(t)R(t) I R(t)TT
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Constrained dynamicsConstrained dynamics
Le cose si complicano quando più Le cose si complicano quando più
corpi rigidi interagiscono:corpi rigidi interagiscono:
CollisioniCollisioni
VincoliVincoli
(sottrazione di gradi di libertà)(sottrazione di gradi di libertà)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CollisionCollision DetectionDetection
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CollisioniCollisioni
Argomento molto vastoArgomento molto vasto
In breve:In breve:
Collision detectionCollision detection
Banale particelle/pianoBanale particelle/piano
Poco banale fra superfici qualsiasi!Poco banale fra superfici qualsiasi!
Collision responseCollision response
Cruciale Cruciale dovedove applichiamo la rispostaapplichiamo la risposta
in un corpo rigidoin un corpo rigido
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
RayRay--Mesh collisionMesh collision
EsistonoEsistono semplicisemplici test di test di intersezioneintersezione raggioraggio--geometriageometria ((eses. in XVR . in XVR
isCollidingisColliding))
Utile per ray Utile per ray ––casting selection, terrain following, collision detection casting selection, terrain following, collision detection
((oggettooggetto--oggettooggetto, camera , camera ––oggettooggetto etc.)etc.)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
•• TunnelingTunneling
OggettiOggetti velociveloci (o (o piccolipiccoli) in ) in
movimentomovimento possoposso mancaremancare
alcunealcune collisionicollisioni
5/28/2009 21
CollisioniCollisioni
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
••Per Per risolvererisolvere ilil
problemaproblema del del tunnellingtunnelling
dobbiamodobbiamo considerareconsiderare
l'interol'intero movimentomovimento
••UnaUna ““sweep shapesweep shape” è ” è
unauna forma forma cheche
racchiuderacchiude ilil movimentomovimento
dell'interodell'intero passopasso
CollisioniCollisioni
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Osservazione:
• Incrementando la
dimensione di un oggetto e
riducendo la dimensione
dell'altro la distanza non
cambia
Un oggetto può essere
ridotto a una
singolarità (punto)
5/28/2009 23
CollisioniCollisioni
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Somma di Somma di MinkowskiMinkowski
Test Square & Circle Collision Square + Circle Minkowski Sum
Test
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
PossibilitàPossibilità: : effettuareeffettuare la la collisionecollisione triangolotriangolo--triangolotriangolo tratra tuttitutti i i triangolitriangoli di di entrambeentrambe le mesh le mesh --> > computazionalmentecomputazionalmente MOLTO MOLTO onerosooneroso
PossibilitàPossibilità piùpiù realisticarealistica: : utilizzareutilizzare bounding volumes e, bounding volumes e, preferibilmentepreferibilmente, , gerarchiegerarchie di di bounding volumesbounding volumes
CollisioniCollisioni
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Bounding Volume HierarchiesBounding Volume Hierarchies
l = 0 l = 1 l = 2 l = 3
l = 4 l = 5 l = 6 l = 7
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CollisioniCollisioni frafra BVHBVH
CollisioniCollisioni gerarchichegerarchiche frafra BVHBVH
BVH oggetto 1
A
B C
A
B C
BVH oggetto 2
B C
B C A
A
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Collisioni: Collisioni: BoundingBounding VolumesVolumes
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Collisioni: Modello a fasiCollisioni: Modello a fasi
DETECTION: BROAD PHASE DETECTION: BROAD PHASE
collision detection “rozza” per determinare coppie di collision detection “rozza” per determinare coppie di
oggetti potenzialmente collidenti (uso di BVH)oggetti potenzialmente collidenti (uso di BVH)
DETECTION: NARROW PHASE DETECTION: NARROW PHASE
collision detection più precisa tra le coppie individuate collision detection più precisa tra le coppie individuate
nella fase precedente (difficilmente comunque si arriva nella fase precedente (difficilmente comunque si arriva
alla precisione triangoloalla precisione triangolo--triangolo)triangolo)
RESPONSE: RESOLUTION PHASE RESPONSE: RESOLUTION PHASE
Si aggiorna lo stato degli oggetti sulla base delle Si aggiorna lo stato degli oggetti sulla base delle
informazioni risultanti dal contattoinformazioni risultanti dal contatto
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Affiancare alla rappresentazioneAffiancare alla rappresentazione
poligonale una rappresentazionepoligonale una rappresentazione
VoxelVoxel e una rappresentazionee una rappresentazione
PointPoint--shellshell, , e testare le collisionie testare le collisioni
usando queste rappresentazioni usando queste rappresentazioni
alternativealternative
CollisionCollision detection: altre possibilitàdetection: altre possibilità
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
VincoliVincoli
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
•• GliGli oggettioggetti possonopossono essereessere linkatilinkati assiemeassieme dada vincolivincoli
per per crearecreare oggettioggetti complessicomplessi::
RagdollRagdoll
CordeCorde / / PontiPonti
BracciBracci roboticirobotici
GruGru
AncheAnche i i puntipunti didi contattocontatto sonosono vistivisti come come vincolivincoli
Risoluzione dei vincoliRisoluzione dei vincoli
XVR
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
•• RisolvereRisolvere i i vincolivincoli vuolvuol dire dire risolvererisolvere un un sistemasistema didi n n
equazioniequazioni
N è N è ilil numeronumero deidei vincolivincoli
•• All'aumentareAll'aumentare del del numeronumero didi vincolivincoli aumentaaumenta la la
complessitàcomplessità del del problemaproblema in in manieramaniera quadraticaquadratica
•• Il Il numeronumero didi vincolivincoli puòpuò crescerecrescere molto molto rapidamenterapidamente
(in (in unauna scenascena normalenormale sisi puòpuò tranquillamentetranquillamente
raggiungereraggiungere 30 ~ 40)30 ~ 40)
RisolvereRisolvere un un equazioneequazione con 30 con 30 variabilivariabili puòpuò essereessere
lento.lento.
Risoluzione dei vincoliRisoluzione dei vincoli
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
RisoluzioneRisoluzione deidei vincolivincoli
•Una possibile soluzione è risolvere un
vincolo alla volta
Risolvere un vincolo può rendere
invalidi gli altri
•Si può risolvere il problema
iterativamente finché la soluzione non
converge
Poche iterazioni = soluzione instabile
Molte iterazioni = si sforano i tempi
1m
2m
3m
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Simulazione fisicaSimulazione fisica
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Equazioni differenziali ordinarieEquazioni differenziali ordinarie
Una ODE (Ordinary Differential Equation)Una ODE (Ordinary Differential Equation)
di ordine “n” èdi ordine “n” è
“un’equazione in cui l’incognita“un’equazione in cui l’incognita
è una funzione in una variabile indipendente,è una funzione in una variabile indipendente,
e che contiene derivate dell’incognitae che contiene derivate dell’incognita
in quella variabile fino all’ordine n”in quella variabile fino all’ordine n”
Esempio:Esempio:
F = ma F = ma ovveroovvero dd22x/dtx/dt22=F/m=F/m
(ODE di ordine 2)(ODE di ordine 2)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Il Il problemaproblema del tempo del tempo discretodiscreto
• Le simulazioni sono a tempo discreto: necessaria analisi
numerica
• I movimenti sono l'approssimazione del vero movimento
suddiviso in piccoli movimenti lineari
Un'integrazione sbagliata porta a guadagni o perdite di
energia
Gli errori si sommano nel tempo
La grandezza dell’intervallo (step) influisce sull’errore.
Alcuni metodi (primo ordine) prevedono una sola iterazione
ma necessitano di uno step piccolissimo, altri prevedono più
iterazioni ma consentono uno step più grande. Il costo
computazionale è proporzionale ad entrambi: costo α (step size, # iterations)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
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 Punto di mezzodi mezzo
RungeRunge KuttaKutta
eccecc..
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Metodo di EuleroMetodo di Eulero
dx/dt = f(t)dx/dt = f(t)
x(tx(t00 + h) = x+ h) = x00 + hf(t+ hf(t00))
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Problemi (1/2)Problemi (1/2)
AccuratezzaAccuratezza
La soluzione non è esatta, ma La soluzione non è esatta, ma quantoquanto
si discosta da un risultato corretto?si discosta da un risultato corretto?
Ordine dell’erroreOrdine dell’errore
Che prezzo siamo disposti a pagareChe prezzo siamo disposti a pagare
in 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’)
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Problemi (2/2)Problemi (2/2)
StabilitàStabilità
Alcuni Alcuni metodi rischiano di divergere metodi rischiano di divergere
completamentecompletamente
Equazioni Equazioni ““stiffstiff””
Per esse soluzioni instabili Per esse soluzioni instabili finchèfinchè il passo di il passo di
integrazione non è sufficientemente piccolointegrazione non è sufficientemente piccolo
Diminuire Diminuire il passo di integrazione può servire, il passo di integrazione può servire,
ma può costare molto e a ma può costare molto e a voltevolte
non risolve il problemanon risolve il problema
step size = 1
step size = 0.7
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Deriva numerica di R: problemaDeriva numerica di R: problema
R è la matrice 3x3 che esprimeR è la matrice 3x3 che esprime
la rotazione di un corpo nello spaziola rotazione di un corpo nello spazio
Dopo molte elaborazioni successiveDopo molte elaborazioni successive
si accumulano gli errori numericisi accumulano gli errori numerici
Tuttavia non tutte le matrici 3x3Tuttavia non tutte le matrici 3x3
sono matrici di rotazione!sono matrici di rotazione!
R tende ad allontanarsi dall’ortogonalitàR tende ad allontanarsi dall’ortogonalità
Effetto grafico e fisico non realisticoEffetto grafico e fisico non realistico
Difficile ripristinare RDifficile ripristinare R
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Deriva numerica di R: Deriva numerica di R: soluzione ?soluzione ?
Angoli di EuleroAngoli di Eulero
Rappresentano le rotazioni attorno agli assi principaliRappresentano le rotazioni attorno agli assi principali
Ma gli assi dopo ogni rotazione cambiano! Ma gli assi dopo ogni rotazione cambiano!
E’ importante l’ordine in cui si applicano le rotazioniE’ importante l’ordine in cui si applicano le rotazioni
Alternativa: angoli di Eulero “nautici”: assi sempre in Alternativa: angoli di Eulero “nautici”: assi sempre in
un sistema di riferimento globaleun sistema di riferimento globale
Sono interpolabili e consistono di 3 soli numeri Sono interpolabili e consistono di 3 soli numeri ma…ma…
problema del “problema del “gimbalgimbal locklock”: esistono singolarità in ”: esistono singolarità in
cui la stessa rotazione è esprimibile in diverse cui la stessa rotazione è esprimibile in diverse
manieremaniere
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Deriva numerica di R: Deriva numerica di R: soluzione ?soluzione ?
AngleAngle--AxisAxis
Ogni rotazione comunque complessa può essere Ogni rotazione comunque complessa può essere
sempre espressa come una rotazione di un certo sempre espressa come una rotazione di un certo
angolo attorno a un certo asseangolo attorno a un certo asse
Molto intuitive per rotazioni semplici, non per Molto intuitive per rotazioni semplici, non per
rotazioni complesserotazioni complesse
Utilizzabili come rappresentazione “di appoggio” Utilizzabili come rappresentazione “di appoggio”
(solo 4 numeri) ma l’interpolazione tra due (solo 4 numeri) ma l’interpolazione tra due angleangle--axisaxis
non è significativanon è significativa
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Deriva numerica di R: soluzione (1/2)Deriva numerica di R: soluzione (1/2)
I quaternioniI quaternioni
Estensione dei numeri Estensione dei numeri complessi: un complessi: un valore reale e valore reale e
tre immaginaritre immaginari
Q = Q = w w + + ixix + + jyjy +kz+kz concon ii22 = j= j22 = k= k22 = = ijkijk = = --11
Q relativo a una rotazione di Q relativo a una rotazione di θθ gradi attorno a un gradi attorno a un
asse [i,j,k] =asse [i,j,k] =
Un Un quaternione è unitario sequaternione è unitario se
xx22 + + yy22 + + zz22 + + ww22 = 1= 1
Ogni quaternione unitario Ogni quaternione unitario (w,x,y,z)(w,x,y,z)
è interpretabile come una rotazione in 3D e viceversaè interpretabile come una rotazione in 3D e viceversa
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Deriva numerica di R: soluzione (2/2)Deriva numerica di R: soluzione (2/2)
Risolvono il problema perché:Risolvono 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 Tutti i 4v con norma unitaria sono unitaria sono quaternioni!quaternioni!
Inoltre:Inoltre:
Meno memoriaMeno memoria
Facile interpolare Facile interpolare rotazioni rotazioni
Contro: rappresentazione “ostica” Contro: rappresentazione “ostica”
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
InstabilitàInstabilità numericanumerica
La La precisioneprecisione deidei float è float è finitafinita e e variavaria con la con la
grandezzagrandezza del del numeronumero
I I test di collision non test di collision non sonosono maimai precisiprecisi
SoluzioneSoluzione: : permetterepermettere unauna lievelieve interpenetrazioneinterpenetrazione
GliGli oggettioggetti possonopossono guadagnareguadagnare energiaenergia
La La simulazionesimulazione diventadiventa instabieinstabie
SoluzioneSoluzione: : aggiungereaggiungere dellodello smorzamentosmorzamento
TuttiTutti i test i test devonodevono considerareconsiderare gligli errorierrori didi precisioneprecisione
deidei numerinumeri floatfloat
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
Un Un mondomondo didi soluzionisoluzioni
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
physXVRphysXVR hello worldhello world
function initPhysics(){
phManager = CVmPhManager(false);
phManager.SetTiming(SUBPASSTIME,
PASSNUMBER, PHX_TIMEFIXED);
phManager.setParameters(PHY_ENABLE_H
ARDWARE, 1);
}
function run (){
time += phManager.simulate();
phManager.updateGraphics();
phManager.draw();
}
Crea il manager della fisicaCrea il manager della fisica
Imposta i parametri Imposta i parametri temporalitemporali
Imposta altri parametriImposta altri parametri
Inizia la simulazioneInizia la simulazione
Aggiornal la posizione degli Aggiornal la posizione degli oggettioggetti
Disegna gli oggetti con la Disegna gli oggetti con la posizione aggiornataposizione aggiornata
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CreareCreare deglidegli oggettioggetti
UnaUna box:box:
var box = phManager.AddPhObj(posA, orientationA,
PHX_DYNAMIC, PHX_BOX, 10, 1.0, 1.0, 1.0);
UnaUna sferasfera::
var sphere = phManager.AddPhObj(posB, posB,
PHX_DYNAMIC, PHX_SPHERE, 10, 12, 0.5);
Un Un piano:piano:
var plane = phManager.AddPhObj(0.0, [0.0, 1.0, 0.0],
PHX_FIXED, PHX_PLANE);
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
CreareCreare unauna mesh mesh dada un un oggettooggetto
var mesh = CVmNewMesh(“myMesh.aam”);var mesh = CVmNewMesh(“myMesh.aam”);
var cookedMeshConvex = phManager.cookConvexMesh(mesh);var cookedMeshConvex = phManager.cookConvexMesh(mesh);
var cookedMeshTri = phManager.cookMesh(mesh);var cookedMeshTri = phManager.cookMesh(mesh);
var o1 = phManager.AddPhObj(pos, rot, PHX_DYNAMIC);var o1 = phManager.AddPhObj(pos, rot, PHX_DYNAMIC);
o1.addConvexShape(cookedMeshConvex, o, r, 100, 0);o1.addConvexShape(cookedMeshConvex, o, r, 100, 0);
o1.linkToMesh(mesh);o1.linkToMesh(mesh);
oppureoppure
o1.addTriangleShape(cookedMeshTri, o, r, 100, 0);o1.addTriangleShape(cookedMeshTri, o, r, 100, 0);
Realtà Virtuale: il presente, il passato, il futuroRealtà Virtuale: il presente, il passato, il futuro RealReal--Time Time PhysicsPhysics
•Le collisioni tra oggetti
concavi non sono supportate
•Oggetti convessi possono
essere create tramite
diverse convex shape
OggettiOggetti convessiconvessi