Détection et traitement de collisions

Nous allons voir comment animer un cube tombant sur le sol.


Fichier scn de cette scène

Fichier de la scène

Il y a deux objets dans la scène : un cube (cubeFEM) et le sol (Floor).
Le cube est décomposé en deux noeuds dans le graphe : 
la partie rendu (Visu) et la partie animation (Surf).

Graphe de la scène

Voici le graphe de la scène à l'initialisation. Au cours de l'animation, ce graphe est modifié pour ajouter par exemple des points de contacts entre les objets de la scène. Le bouton “Export Graph” de l'application permet de générer le graphe à n'importe quel moment de l'animation.


Simulation du cube

Dans cette scène, le cube est décomposé en plusieurs parties :

  • MechanicalObject : permet de définir les degrés de liberté (DOF) du cube (i. e. coordonnées de positions, de vitesses, de forces et d'accélérations).
  • TetrahedronFEMForceField : permet de définir le champ de forces relié au cube (éléments finis basés sur des tétraédres).
  • Visu : permet de définir la partie rendu (visuelle) du cube.
  • Surf : permet de définir la partie géométrique du cube. Définition des deux modèles utilisés pour les collisions : triangle et ligne.

Il faut ensuite réaliser un mapping entre la partie visuelle du cube et son comportement mécanique. Les deux captures ci-dessous montrent ce qui arrive si on oublie de faire coincider le comportement visuel (Visu) avec le comportement mécanique du cube :

Le tableau ci-dessous présente les différents éléments de la scène qui peuvent être visualisés grâce à l'interface de l'application SOFA.

Captures d'écrans Explications
Partie visuelle de la scène (Floor, Visu)
MechanicalObject - DOF (particules)
TetrahedronFEMForceField - Champ de forces (éléments finis tétraédriques)
Boîtes englobantes
Modèle de collision (triangle, ligne)
Mapping mécanique (après collision)
Interactions (après collision) : éléments rouges en dessous du cube
Le tout en fil de fer

Code SOFA de la scène