Présentation de ODE


Exemple d'application utilisant ODE.

Sommaire

[modifier] Présentation

L'objectif de l'article: se faire ses premières armes sur le moteur ODE.

Nous verrons tout au long de ce document, les différentes étapes nécessaires à l'utilisation de cette bibliothèque.


Sructure d' ODE Il s'agit d'une bibliothèque physique séparée en deux moteurs distincts:

  • Le moteur physique (qui gère la dynamique et pas les contacts)
  • Le moteur de gestion des collisions (qui gère les colisions et pas la dynamique)

Cette séparation peut être déroutante au début.

[modifier] Les concepts ODE

[modifier] Le moteur physique

Il s'agit d'un moteur de gestion de dynamique des objets : il calcule le déplacements des corps rigides en fonction des forces qui s'exercent sur eux.

En aucun cas, le moteur physique ne prend en compte les collisions entre les corps, en effet les corps n'ont pas de notion de géométrie.

ODE donne la possibilité de créer différents mondes dans lesquels on peut insérer des corps solides. Il est possible de relier certains corps entre eux : il s'agit de jointures.

Pour plus de détails, voici un descriptif des différents mots clés énoncés ci-dessus.


[modifier] Les Mondes

Un monde est un espace tridimensionnel pouvant acceuillir des corps physiques. Généralement, un seul monde suffit amplement à la plupart des simulations développées. Dans le cadre de notre exemple, on se contentera d'un monde unique. Un monde a les propriétés suivantes :

  • une gravité (pour info, la gravité terrestre est de -9,81 m/s²)


Le mot clé associé à un monde est : World


[modifier] Les corps solides

Il s'agit d'un objet solide qui est sujet aux lois de la physique : la gravité, les forces, etc. Chaque corps doit être positionné à l'intérieur d'un monde. De plus, un corps n'a pas de représentation géométrique au sein du moteur physique : pas de forme et pas de taille. Il faut imaginer un corps comme une chose difforme qui possède une position absolue dans le monde auquelle elle appartient.

Pour cela, un corps possède les propriétés suivantes :

  • un monde associé
  • une position
  • une masse
  • une rotation pour le positionner selon certains angles
  • une force exercée dessus
  • une vitesse linéaire
  • une vitesse angulaire
  • des jointures (pour être attaché à d'autres corps sous certaines contraintes)
  • sensibilité à la gravité du monde dans lequel il appartient
  • etc.


Le mot clé associé à un corps solide est : Rigid Body

[modifier] Les jointures

ODE offre la possibilité de relier les différents corps solides entre eux. Il est possible de réduire les possibilités de mouvements entre deux corps ou bien de les supprimer tous pour obtenir une soudure entre les deux corps.


Pour plus d'informations , veuillez consulter la documentation officielle de ODE (disponible sur le site officiel de ODE :[1]).


Le mot clé associé à une jointure est : Joint

[modifier] Le moteur de gestion des collisions

Il s'agit d'un second moteur intégré à ODE. Il permet de gérer les collisions entre des volumes/formes géométriques. En aucun cas, il ne gère de physique (gravité, forces, vitesses, etc.). L'utilisateur doit définir un espace dans lequel évoluent des volumes géométriques. Le moteur physique peut évidemment fonctionner seul et l'utilisateur peut se passer de ce moteur de gestion des collisions.


Pour plus de détails, voici un descriptif des différents mots clés énoncés ci-dessus.

[modifier] Les espaces

Un espace est une zone spaciale dans laquelle on insère des objets graphiques : il s'agit ni plus ni moins d'un simple conteneur (une boîte) dans lequel évoluent des volumes/formes géométriques. Il s'agit du même concept que les corps rigides dans un monde (World). Cet espace permet uniquement de calculer plus rapidement les collisions entres volumes.


Il existe trois types d'espaces :

  • le simple espace
  • l'espace multi-résolution
  • l'espace QuadTree


Suivant le nombre de volumes, il est conseillé d'utiliser le simple espace dans le cadre de quelques formes géométriques à simuler... ou bien l'espace quadtree pour beaucoups d'objets à tester. L'espace multi-résolution est un type intermédiaire et est le plus souvent recommandé. Pour plus d'informations sur les différents types énoncés, consultez la documentation officielle.


Le mot clé associé à un espace est : Space


[modifier] Les formes géométriques

Il s'agit des objets 3D à simuler. Une volume géométrique est par définion un ensemble de points de contact qui déterminent une forme. Par exemple, un cube est représenté de 4 ou 8 points de contact. Ces points de contact permettent au moteur de détecter s'il existe collision ou non entre deux volumes/formes.

Les formes géométriques disponibles pour ODE :

  • Les sphères
  • Les boîtes
  • Les plans
  • Les cylindres
  • Les lancés de rayon
  • Les meshes à base de triangles


ODE offre la possibilité à l'utilisateur de définir ses propres formes géométriques, ses points de contact, etc. De plus, ODE permet de redéfinir entièrement le système de collision.

[modifier] Conclusion

Voici une brève présentation des concepts utilisés par ODE. Pour plus de détails, reportez-vous aux exemples et notamment à Exemple ODE : Le lâché de balle pour aborder les fonctionnalités de base de ODE.