Quand vous envoyez une balle contre un mur proche, vous aurez une chance sur deux pour qu'elle vous revienne en pleine tête.

Dans un monde simulé, lorsque vous envoyez une balle contre ce même mur .. il la traversera ... (et ne s'arrétera pas).

Pour cela, nous avons besoin (entre autres) d'un gestionnaire qui se chargera de ce genre de "petites" conditions: un moteur de collision (collision, friction, jointures, etc...).

Le projet "O.D.E." est fait pour cela.

O.D.E est l'acronyme de Open Dynamics Engine, une bibliothéque C/C++ gérant la simulation des dynamiques entre corps solides.
Cela se traduit par une gestion des jointures entres objets, une gestion des collisions en résultant et des frictions entre ces derniers.

O.D.E. se démarque par une utilisation relativement simple et indépendante des autres gestionnaires dont, notamment, le gestionnaire de l'environnement graphique (OpenGL/DirectX).

O.D.E. a une particularité que je crois ne pas avoir vu dans d'autres projets Open source dans cette catégorie: une utilisation sur des jeu-videos commerciaux.
A son palmarès, nous pouvons citer les bien connus S.T.A.L.K.E.R ainsi que Call Of Juarez et des éditeurs du monde 3D tel que SoftImage|XSI.

A ce sujet, Al's Programming nous offre quelques articles de mise-en-bouche du moteur physique ODE avec OpenGL:
Et afin de compléter notre formation, il existe le bien nommé OpenDE, site de la communauté O.D.E, où nous retrouverons quelques tutoriaux convivaux.

A noter qu'il existe - pour les plus fainéants ;) - des couches d'abstractions pour O.D.E :
  • Open Physics Abstraction Layer : OPAL
  • ODE Abstraction Layer : EZPhysics

Dans les solutions concurrentes, nous avons Newton Physics Engine qui n'est malheureusement pas libre; et son site communautaire
(je vous conseille les samples très sympathiques, notamment la gestion des collisions).

A vos collisions !


PS: Si quelqu'un retrouve le vrai site du projet "ODE Editor" (ODEEd), dont (l'ancien ?) site est malheureusement injoignable, je suis preneur. [Cache Google]