1. Veille technologique
Les moteurs physiques temps r´el
e
Steren Giannini
18 mars 2009
Table des mati`res
e
1 Introduction 2
1.1 Les particularit´s du calcul en temps r´el . . . . . . . . . . . .
e e 2
1.2 La composition d’un moteur physique . . . . . . . . . . . . . . 2
2 Les solides rigides 3
2.1 Les enveloppes . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 La gestion des collisions . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Les arbres de volumes englobants (BVH) . . . . . . . . 4
2.2.2 La d´tection d’intersection . . . . . . . . . . . .
e . . . . 5
2.2.3 La position de repos . . . . . . . . . . . . . . . . . . . 6
2.3 Les mod`les utilis´s : bas´s sur le calcul de contraintes
e e e . . . . 6
2.3.1 La friction . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 Les liaisons . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Les solides mous 7
4 Les fluides 8
4.1 La discr´tisation du probl`me . . . . . . . . . . . . . . . . . .
e e 9
4.2 Le mod`le utilis´ . . . . . . . . . . . . . . . . . . . . . . . . .
e e 9
5 Les biblioth`ques disponibles
e 10
5.1 Biblioth`ques libres . . . . . . . . . . . . . . . . . . . . . . . . 11
e
5.2 Biblioth`ques propri´taires . . . . . . . . . . . . . . . . . . . . 11
e e
5.3 Couche d’abstraction . . . . . . . . . . . . . . . . . . . . . . . 12
6 Conclusion 12
1
2. 1 Introduction
On appelle moteur physique la partie d’un simulateur responsable des
calculs des comportements physiques de la sc`ne.e
Les Moteurs physiques sont tr`s utilis´s dans les simulations en temps
e e
r´el telles que les jeux vid´os mais aussi dans les simulations scientifiques.
e e
On distingue deux types de moteurs physiques : les moteurs temps r´el et les
e
moteurs de haute pr´cision. Ces derniers sont destin´ a un calcul de pr´cision,
e e` e
ils refl`tent un maximum les comportement r´els, nous ne les ´tudieront pas
e e e
dans ce dossier.
Auparavant, il n’y avait pas de distinction entre le moteur du simulateur
et la gestion de la physique a proprement parler. Ceci s’explique par le fait
que les calculs physiques mis en jeu ´taient vraiment simplistes. Parce que
e
la puissance de calcul des machines sur lesquelles tournent ces simulations
a largement augment´ au cours du temps, les d´veloppeurs ont commenc´
e e e
a extraire le code relatif aux calculs physiques. C’est ainsi que depuis l’an
`
2000, des librairies de calcul physique en temps r´el sont pris en compte dans
e
la conception des jeux.
Mˆme si des moteurs physiques sont vendus extr`mement chers, il ex-
e e
iste de nombreuses librairies ouvertes et gratuites utilis´es tant bien par les
e
profesionnels que par les ´tudiants et autres amateurs.
e
1.1 Les particularit´s du calcul en temps r´el
e e
Dans la plupart des calculs en temps r´el, la vitesse de calcul est plus
e
importante que la pr´cision de la simulation. Ainsi, le r´sultat d’un calcul en
e e
temps r´el est souvent visuellement acceptable mais pas forc´ment physique-
e e
ment correct.
Dans le monde r´el, les ph´nom`nes de la m´canique sont actifs en perma-
e e e e
nence, cependant, dans une simulation en temps r´el, on peut les d´sactiver
e e
lorsqu’ils ne sont plus visibles dans un souci d’´conomie de performances.
e
Ainsi par exemple, lorsque pendant un calcul physique d’une sc`ne, la posi-
e
tion d’un objet ne varie plus beaucoup, on peut stopper le calcul et d´finir
e
l’objet comme fixe.
1.2 La composition d’un moteur physique
Un moteur physique en temps r´el est constitu´ de deux composants :
e e
un syst`me de d´tection de collisions et un syst`me de simulation physique
e e e
responsable du mouvement des objets en fonction des forces appliqu´es.
e
2
3. 2 Les solides rigides
Parce que les solides rigides peuvent mod´liser un grand nombre d’objets,
e
ils ont ´t´ les premiers pour lesquels des librairies physiques furent d´velop´es.
ee e e
Un solide pour lequel on d´sire effectuer des calculs physiques se car-
e
act´rise par les variables suivantes :
e
– position
– vitesse
– orientation
– vitesse angulaire
– masse
– matrice d’inertie
Fig. 1 – D´monstration d’une simulation physique temps r´el de solides
e e
rigides
2.1 Les enveloppes
Les calculs de collision sont tr`s couteux en performance lorsque les objets
e
consid´r´s sont complexes. Bien souvent dans les simulations en temps r´el,
ee e
un mod`le simplifi´ du mod`le 3D vu ` l’´cran est utilis´ pour les calculs
e e e a e e
physiques.
De plus, la plupart des moteurs physiques sont capables d’effectuer de
meilleurs calculs sur quelques primitives de base, telles que les boites, les
sph`res ou les cylindres par exemple. Ainsi, dans un calcul temps r´el un
e e
3
4. objet complexe est souvent remplac´ par un assemblage de primitives de
e
base pour lesquelles le moteur physique est tr`s performant. Les enveloppes
e
couramment utilis´es sont :
e
– la boite
– la sph`re
e
– le cylindre
– le cˆne
o
– la capsule
– l’enveloppe convexe : le plus petit voume convexe englobant le solide.
– le tri-mesh : un maillage quelconque compos´ de triangles. Ce dernier
e
est bien entendu le plus couteux en calculs.
Fig. 2 – Quelques enveloppes de collision possibles pour une g´om´trie
e e
donn´e
e
2.2 La gestion des collisions
2.2.1 Les arbres de volumes englobants (BVH)
Une sc`ne 3D est souvent stock´e sous forme de graphe. Il en est de mˆme
e e e
pour les volumes englobants : on utilise des arbres BVH (Bounding Volume
Hierarchies). Ces volumes sont la plupart du temps des sph`res ou des boites
e
englobantes align´es sur les axes.
e
Les feuilles de cet arbre sont les enveloppes des objets, voir des parties
des objet. Elles sont regroup´es dans des volumes plus gros, qui constituent
e
les nœuds de l’arbre.
Les arbres BVH sont tr`s efficaces pour d´terminer les collision entre
e e
objets : si le volume englobant d’un objet n’intersecte pas un volume plus
haut dans l’arbre, alors il ne touche pas les objets contenus dans ce volume.
L’int´rˆt d’utiliser un arbre BVH pour la d´tection de collision n’est jus-
ee e
tifi´ que si l’arbre est intelligemment cr´´. Il faut en effet que les objets
e ee
prochent se retrouvent sous le mˆme noeud.
e
4
5. (a) Sc`ne
e (b) Arbre BVH
Fig. 3 – Exemple d’organisation d’une sc`ne en volumes englobants
e
La figure 3 illustre un exemple de d´tection de collision : On veut savoir
e
avec qui est en contact le solide 1. La chose ` d´terminer est si 1 est en
a e
contact avec le volume 5-6. Ce n’est pas le cas donc on sait que 1 ne est ni
en contact avec 5, ni avec 6. On teste ensuite si 1 entre en contact avec le
volume 3-4. C’est le cas, il y a donc possibilit´ que 1 soit en collision avec 3
e
ou avec 4. On teste donc ces deux objets. Il s’av`re que 1 est en collision avec
e
3 et qu’il n’est pas en collision avec 4. Pour finir, il ne reste plus qu’` tester
a
si 1 est en collision avec 2 a l’int´rieur du volume 1-2, ce qui n’est pas le cas.
` e
2.2.2 La d´tection d’intersection
e
Un d´tecteur de collision peut fonctionner de deux mani`res diff´rentes :
e e e
la collision est d´tect´e a posteriori, c’est a dire apr`s que la collision ai
e e ` e
r´ellement eu lieu, ou a priori, c’est a dire avant que la collision ne se produise.
e `
A posteriori La simulation physique est avanc´e d’un pas dans le temps,
e
on d´tecte ensuite si des objets s’intersectent. La liste des objets qui s’inter-
e
sectent ainsi est alors transmise au moteur de calcul physique. cette m´thode,
e
bien que la plus utilis´e, pr´sente un probl`me de collisions loup´es : si la
e e e e
vitesse de l’objet et sup´rieure a son plus grand rayon, a l’it´ration suivante
e ` ` e
l’objet ne va pas ˆtre en intersection avec la surface de l’autre objet, il l’aura
e
travers´. Des astuces existent pour contourner ce probl`me.
e e
A priori La d´tection est pr´dite ` travers le temps a l’aide d’algorithme
e e a `
de pr´diction. Ces algorithmes prennent en entr´e la position et le mou-
e e
vement des solides de la sc`nes, ils sortent ensuite une liste de solide qui
e
5
6. s’intersecteront au prochain pas.
La d´tection d’intersection en elle mˆme d´pend du type de primitive,
e e e
pour les plus simples comme les sph`res il suffit de comparer la distance
e
entre les centres et la somme des rayons.
2.2.3 La position de repos
Bien souvent, les contacts statiques, appel´s (( positions de repos )), sont
e
trait´s de mani`re diff´rente. Ainsi si deux objets sont en contact mais que
e e e
leur vitesse relative est en dessous d’un faible seuil, on consid`re qu’ils sont
e
solidaires et on n’effectue plus de calcul de collision entre ces deux solides.
2.3 Les mod`les utilis´s : bas´s sur le calcul de con-
e e e
traintes
Les ´quations du mouvement utilis´es sont celles des solides rigides de
e e
la physique de Newton. La technique est m´thodique : l’ensemble des con-
e
traintes auxquelles sont soumis les objets sont recens´es, puis les d´placement
e e
sont calcul´s. Ces contraintes regroupent les contraintes de non-p´n´tration
e e e
(les contacts), les contraintes de liaisons et les forces ext´rieures.
e
L’´tape de r´solution de ces ´quations s’appelle l’int´gration. Elle est
e e e e
r´alis´e explicitement, c’est a dire que l’acc´l´ration ` l’it´ration n+1 est
e e ` ee a e
calcul´e en fonction des forces a l’it´ration n.
e ` e
On tombe ainsi sur la r´solution du probl`me appel´ LCP (Linear Com-
e e e
plementary Problem) [7]. R´soudre ce probl`me revient a minimiser une
e e `
fonction soumise a des contraintes donn´es. Pour y parvenir, on utilise la
` e
technique du Multiplicateur de Lagrange [8]. Le Multiplicateur de Lagrange
permet de trouver les extrema d’une fonction sous contraintes en ´tudiant les
e
points stationnaires d’une autre. Il suffit pour cela de r´soudre it´rativement
e e
l’´quation de Lagrange, c’est ` dire, une inversion de matrice.
e a
2.3.1 La friction
Le coefficient de Coulomb est utilis´ car il repr´sente un mod`le simple :
e e e
Ceci d´fini un cˆne de friction, qui pour des raison de simplicit´ des calcul
e o e
est approxim´ en pyramide de friction.
e
2.3.2 Les liaisons
Deux solides peuvent ˆtre reli´s par une liaison. Cette liaison va cr´er
e e e
une contrainte entre ces deux objets. Ainsi leurs positions et orientations
6
7. peuvent ˆtre relatives les unes par rapport aux autres. Ces liaisons vont cr´er
e e
des forces que l’int´grateur va consid´rer lors de chaque it´ration.
e e e
(a) Sph´rique
e (b) Pivot (c) Glissi`re
e
Fig. 4 – Diff´rentes liaisons entre deux solides
e
3 Les solides mous
Les principales applications sont entre autres les objets mous et ´lastiques,
e
les vˆtements, les cheveux ou les cordes. On peut mˆme r´aliser avec ces outils
e e e
une surface de liquide grossier.
Fig. 5 – D´monstration d’une simulation physique temps r´el de solides mous
e e
La technique est beaucoup plus simple car on consid`re maintenant un
e
ensemble de points reli´s par des liaisons ´lastiques. Il s’agit d’une surface
e e
r´gie par un syst`me masse-ressort : chaque point poss`de une position, une
e e e
vitesse et une masse. Ces points sont reli´s entre eux par des raideurs. Comme
e
on peut le voir sur la figure 6, il existe diff´rentes fa¸ons de consid´rer le
e c e
maillage : on peut consid´rer que chaque arrˆte de la surface est un ressort
e e
ou alors, parce que les mod`les 3D sont souvent constitu´s de faces a quatre
e e `
7
8. cot´s, on peut consid´rer de relier les points en carr´s. Ce chois a un effet sur
e e e
la dynamique de l’objet : dans le cas de faces triangulaires, les perturbations
transversales seront plus restitu´s que dans le cas de faces carr´es.
e e
(a) faces en triangles (b) faces en carr´
e
Fig. 6 – Les solides mous : syst`mes masse-ressort
e
Concernant la gestion de la collision, on ne parle plus de volume en-
globant. Chaque point du solide d´formable est consid´r´ comme solide et
e ee
est test´ pour d’´ventuelles collisions avec d’autres objets solides. On peut
e e
de plus consid´rer les collisions du maillage sur lui mˆme (dans le cas d’une
e e
simulation de tissu par exemple), on teste ainsi les collisions entre les points
de l’objet et les faces de ce mˆme objet.
e
4 Les fluides
La simulation en temps r´el des fluides vise a simuler des comportements
e `
liquides tels que les rivi`res ou les oc´ans mais aussi les comportements
e e
gazeux tels que les fum´es ou les nuages.
e
8
9. Fig. 7 – D´monstration d’une simulation physique en temps r´el d’un fluide
e e
en 2 dimensions [12]
La simulation en temps r´el des fluides est encore actuellement au stade
e
exp´rimental. Actuellement lorsqu’elle est pr´sente, chaque simulateur impl´mente
e e e
sa propre technique. Il n’existe quasiment aucune librairie propri´taire ou
e
libre de simulation en temps r´el de fluides. Nous allons donc ´tudier les
e e
concepts de base communs a ces diff´rentes exp´rimentations.
` e e
4.1 La discr´tisation du probl`me
e e
Il n’est plus possible de parler de g´om´trie ou de masse. L’espace dans
e e
lequel la simulation est effectu´e est discr´tis´ en une grille volumique avec
e e e
comme volumes ´l´mentaires des cubes. Chacun de ces cubes poss`de en son
ee e
centre les informations de densit´ et de vitesse. Ce sont ces informations
e
qui sont ensuite traduitent graphiquement par le processus d’affichage. Ce
processus d’afficage peut s’effectuer de diff´rente mani`res : par exemple par
e e
l’affichage de particules suivant le mouvement du fluide, par le calcul de la
surface du fluide (pour les liquides par exemple) ou par un rendu volumique
o` l’intensit´ de la couleur rendue est proportionnelle a la densit´ du fluide.
u e ` e
Nous ne d´taillerons pas plus l’affichage dans ce rapport.
e
4.2 Le mod`le utilis´
e e
Les ´quations qui r´gissent le comportement du fluide sont compl`tement
e e e
diff´rents de celles qui r´gissent les mouvements solides. En effet on se base
e e
simplement sur les ´quations de Navier-Stokes. Celles-ci permettent de d´crire
e e
le comportement de beaucoup de fluides r´els. Bien entendu, l’accent est mis
e
9
10. sur la stabilit´, la rapidit´ et le rendu visuel et moins sur la pr´cision et
e e e
le r´alisme de la simulation. On a donc deux ´quations : la premi`re sur la
e e e
vitesse u et la seconde sur la densit´ ρ
e
∂u 2
= −(u · )u + µ u+f (1)
∂t
∂ρ 2
= −(u · )ρ + κ ρ+S (2)
∂t
De plus, les interactions avec les solides sont traduites sous forme de
conditions aux limites.
La variation de densit´ ρ est r´gie par les trois termes de la partie droite
e e
de l’´quation (2). Le premier terme impose ` la densit´ de suivre la vitesse du
e a e
champ, le second est un terme de diffusion et le dernier et un terme li´ aux e
sources. Pour les impl´mentations informatiques, cette ´quation est lin´aris´e
e e e e
et discr´tis´e. Le calcul de l’´volution de la densit´ suit donc ces trois ´tapes
e e e e e
comme l’illustre la figure 8.
Fig. 8 – Les ´tapes du calcul de variation de densit´.
e e
D’une mani`re similaire, la variation de vitesse u de l’´quation (1) est
e e
r´gie par les trois termes de droite : Le premier est appel´ l’advection, le
e e
second la diffusion visqueuse et le dernier les forces ext´rieures. Le solveur et
e
les algorithmes utilis´s est similaire au pr´c´dent.
e e e
5 Les biblioth`ques disponibles
e
Sont list´es dans cette section les biblioth`ques de simulation physique en
e e
temps r´el disponibles actuellement sur le march´. On distingue deux types
e e
de diffusion possible : les librairies libres, dont le code source est partag´ et
e
les librairies propri´taires.
e
10
11. 5.1 Biblioth`ques libres
e
Il est important de noter que ces biblioth`ques peuvent pour la plupart
e
1
ˆtre utilis´es dans des produit commerciaux
e e
Bullet Physics Bullet Physics est une librairie physique tr`s aboutie, e
certainement la plus aboutie des librairies libres. C’est pourquoi elle est
´norm´ment utilis´e dans le domaine ´ducatif ou scientifique. Bullet Physics
e e e e
est ´galement la librairie physique utilis´e par les logiciels d’images de synth`se
e e e
professionnels Maya et Blender. C’est ´galement la biblioth`que support´e
e e e
par SONY dans sa console de jeu PlayStation 3.
Cette biblioth`que est ´galement une des rares ` proposer une gestion des
e e a
solides mous. (voir r´f. [1])
e
Open Dynamics Engine ODE est eu biblioth`que physique plus ancienne
e
qui propose la gestion des solides rigides. La librairie est assez vieille et n’est
pas orient´e objet, cependant elle a ´t´ utilis´ dans de nombreuses production
e ee e
professionnelles, elle peut donc ˆtre consid´r´e comme enti`rement fiable.
e ee e
(voir r´f. [2])
e
Tokamak Physics Tokamak Physics est une librairie physique reconnue
cependant peu visible sur internet. La documentation et les exemples d’util-
isation sont rares ou de qualit´ moyenne. (voir r´f. [3])
e e
5.2 Biblioth`ques propri´taires
e e
Il est n´cessaire d’acqu´rir une licence pour utiliser les biblioth`ques suiv-
e e e
antes. Le cout d’acquisition est consid´rable mais les outils de d´veloppement
e e
propos´s sont d’une qualit´ professionnelle : int´gration avec les moteurs de
e e e
jeux les plus connus, int´gration avec les outils de mod´lisation 3D, support
e e
technique ...
PhysX PhysX est un moteur physique fabriqu´ par le soci´t´ Ageia (ra-
e ee
chet´ par NVIDIA), et int´gr´ dans plusieurs moteurs de jeu comme l’Un-
e e e
realEngine 3. Les cartes graphiques NVIDIA sont maintenant ´quip´es d’un
e e
acc´l´ration mat´rielle pour les calculs physiques de PhysX. (voir r´f. [4])
ee e e
1
licence zlib ou BSD par exemple
11
12. Havok Havok est d´velopp´ par la soci´t´ du mˆme nom en Irlande. Depuis
e e ee e
le lancement de Havok en 2000, le syst`me a ´t´ utilis´ dans pr`s de 150
e ee e e
jeux diff´rents. Il est aussi possible de l’utiliser dans des logiciels d’image de
e
synth`se tels que 3DStudio Max ou Maya. La soci´t´ Havok propose depuis
e ee
2008 d’autre librairies capable de simuler les solides mous ou les environ-
nements destructibles. (voir r´f. [5])
e
5.3 Couche d’abstraction
Afin de ne pas lier un simulateur ` un moteur physique sp´cifique, une
a e
id´e est d’ajouter une couche d’abstraction permettant une ind´pendance du
e e
jeu par rapport au moteur physique choisi. Il est ainsi possible de changer
ais´ment la librairie physique du simulateur. Une librairie libre existe : Physics
e
Abstraction Layer[6], elle est compatible avec la plupart des librairies physiques
du march´.e
6 Conclusion
Les moteurs physiques en temps r´el sont n´s au moment o` les machines
e e u
sur lesquelles tournaient les simulations ´taient capables de g´rer des calculs
e e
physiques complexes. Parce que les calculs physiques sont identiques dans
toutes les simulations, des librairies commerciales ou libres ont ´t´ cr´´es et
e e ee
sont utilis´es dans la plupart des projets n´cessitant des calculs physiques.
e e
2
A l’instar des GPU , les cartes graphiques commencent a ˆtre dot´es
` e e
d’acc´l´rations mat´rielles d´di´es au calcul physique. Ces processeurs sont
ee e e e
appel´s PPU (Physics Processing Unit).
e
Plus la puissance de calcul sera ´lev´e, plus la complexit´ des simulations
e e e
physiques pourra ˆtre augment´e. Ainsi parmi les am´liorations futures et
e e e
´videntes figurent l’augmentation du nombre d’objets en interaction, l’aug-
e
mentation de la complexit´ de l’enveloppe des objets (avec des formes con-
e
caves par exemple) et la complexification des liaisons entre les objets.
Les solides mous font leur apparition depuis peu dans le monde des jeux
vid´os. L` aussi de nombreuses am´liorations pourront ˆtre r´alis´es avec
e a e e e e
l’augmentation des performances des machines.
Finalement, en terme de simulation physique, la grande nouveaut´ dans
e
les jeux vid´os sera l’arriv´e des fluides en temps r´el.
e e e
2
Graphics Processing Unit
12
13. R´f´rences
ee
[1] http ://www.bulletphysics.com librairie physique Bullet Physics,
guide d’utilisateur et Wiki
[2] http ://www.ode.org librairie physique Open Dynamics Engine, guide
d’utilisateur et diapositives techniques
[3] http ://www.tokamakphysics.com/ librairie physique Tokamak
Physics
[4] http ://developer.nvidia.com/object/physx.html librairie
physique PhysX
[5] http ://www.havok.com/ librairie physique Havok
[6] http ://www.adrianboeing.com/pal/ Physics Abstraction Layer
[7] http ://en.wikipedia.org/wiki/Linear complementarity problem
[8] http ://en.wikipedia.org/wiki/Lagrange multipliers
[9] http ://en.wikipedia.org/wiki/Collision detection
[10] http ://en.wikipedia.org/wiki/Bounding volume hierarchies
[11] Jos Stam Real-Time Fluid Dynamics for Games
[12] http ://srekel.net/pmwiki/pmwiki.php ?n=Projects.FluidSimulation
Anders Elfgren et Victor Blomqvist, impl´mentation de Real-Time
e
Fluid Dynamics for Games de Jos Stam
13