• Aucun résultat trouvé

Etat de l’art

1.5 Détection de collision

1.5.2 Volumes englobants

Pour accélérer la détection de collisions, il est possible d’englober les objets dans des volumes pour lesquels le test de détection de collisions est très rapide. Les volumes sont définis avant le début de la simulation. Lorsque les volumes englobants (VE) sont en col-lision, on ne peut pas conclure à la collision des objets, une recherche plus avancée est nécessaire. Pour être efficace, un VE doit permettre un test rapide de détection de colli-sion, de maximiser le rapport entre volume englobé et englobant, d’être défini rapidement à partir d’un ensemble de sommets, d’être mis à jour facilement en cas de rotation et/ou de translation et ne pas être trop gourmand en mémoire.

Plusieurs types de VE ont été proposés dans la littérature, la figure 1.20 présente les plus courants: les sphères, les boîtes isothétiques, les boîtes orientées par rapport à l’ob-jet, les k-DOPs et les enveloppes convexes. Pour plus de détails voir [Eri04]. Chacun de ces types respecte plus ou moins les propriétés citées plus haut. Par exemple, le test de

chevauchement entre deux sphères est extrêmement rapide (Dist(O1,O2)>(R1+R2)) et ne requière pas beaucoup de mémoire mais n’englobe pas de façon optimale les objets longs.

Fig. 1.20 – Différents types de volumes englobants d’après [Eri04].

Les Axes Aligned Bounding Boxes (AABB) qui sont des boîtes alignées sur les axes du repère global (isothétiques) sont très efficaces pour des objets déformables. Van den Bergen [vdB97] les utilise pour gérer la collision discrète entre tous types d’objets. Son code Solid est disponible en ligne6. L’avantage majeur des AABBs est la rapidité du test d’intersection, puisqu’il s’agit d’une comparaison entre les valeurs des intervalles sur les axes x,y etz. Pour construire une AABB dans le repère local de l’objet, il suffit de cher-cher les valeurs minimales et maximales des points de l’objet sur tous les axes. Cependant, une AABB doit rester alignée aux mêmes axes suite aux mouvements. Pour cela, elle doit être mise à jour suite aux rotations.

Il existe d’autres volumes englobants qui englobent de manière plus efficace la forme des objets, mais qui ont des tests d’intersection plus lents. Les Oriented Bounding Boxes (OBB) par exemples sont des boîtes orientées par rapport à l’objet. Elles représentent bien l’objet, mais requiert beaucoup de calcul et de mémoire. Comme une OBB est représentée par un centre, une matrice d’orientation et les extensions dans 3 directions suivant les axes, il faut 60 octets pour stocker une OBB en mémoire. Les enveloppes convexes OBBs, utilisées avec des objets rigides, semblent beaucoup moins performantes avec des objets déformables car leur mise à jour, suite aux déformations, est complexe.

Les k-Dop ou «Discrete oriented polytopes» [MKE03], [KHM+98], [Zac98] sont basés sur le même principe que les boîtes AABB (une boîte AABB est une 6-Dop) mais avec des géométries plus complètes. En effet ce sont des enveloppes convexes dont les faces sont déterminées par leurs normales fixées selon un ensemble de k orientations. Le calcul d’un

k-DOP est alors aussi similaire au calcul d’une AABB, puisque il s’agit de chercher les points les plus éloignés dans les directions prédéterminées selon le degré k. L’approxima-tion du volume est plus ou moins bonne et les temps de calcul sont plus ou moins rapides. D’après [Zac98], pour k allant de 6 à 14, il y a très peu de gain vis-à-vis des OBBs, il faudrait donc aller au delà, ce qui entraînerait beaucoup de calculs.

Il est possible d’utiliser la stratégie de VE à l’intérieur des objets d’une manière récur-sive en construisant des hiérarchies de volumes englobants (HVE). Il s’agit d’une détection approximative qui cherche à diminuer le coût de calculs en réalisant une série de test entre les VEs les plus grossiers vers les plus fin. Ainsi un test rapide de chevauchement élimine les objets qui ne s’interpénètrent pas et la détection d’intersection entre primitives ne se fera que sur un nombre réduit de paires de triangles. Une hiérarchie peut être construite de bas en haut ou de haut en bas. La deuxième façon est la plus rapide, mais produit des hiérarchies avec plus de volume libre [Lin04], (figure 1.21).

Pour construire un arbre hiérarchique de sphères englobantes, une approche du bas vers le haut (Bottom-up) est décrite dans [RKK97]. L’objet est recouvert de petites sphères, qui seront les feuilles de la future hiérarchie. Une fois les feuilles créées, une méthode de type diviser pour régner [Dum98] permet de créer les sphères plus grossières de la hiérarchie interne. Devine [Dev03] a proposé une approche par sphères englobantes pour accélérer le calcul d’intersection continu de Provot [Pro97]. Les sphères sont rapides à remettre à jour après déformation, si la topologie des objets reste inchangée. D’après l’article [JP04], la complexité est en O(P N) avec N le nombre de volumes englobants et P le nombre de triangles à l’intérieur du volume. Cependant, dans cet article, les auteurs proposent de changer uniquement la taille des volumes englobants en gardant intacte la hiérarchie initiale. Ceci n’est valable que pour des objets déformables en petits déplacements.

L’hypothèse cruciale qui est faite ici est basée sur le non-changement de topologie de l’objet durant la déformation. Si l’on ne change pas de topologie, on n’est pas obligé de reconstruire la structure complète de l’arbre à chaque instant. On peut alors optimiser une remise à jour de l’arbre. En bottom-up (du précis vers le grossier), on remet l’arbre à jour dans son ensemble. Cette démarche est plus performante lorsque beaucoup de noeuds sont testés pour la collision (multiples collisions ou surfaces de contact). En top-down (du grossier vers le précis), on remet à jour uniquement les branches nécessaires au fur et à mesure de la progression de la collision dans l’arbre. Cette méthode est plus performante dans le cas où il n’y a pas beaucoup de noeuds visités. Larson et Möller [LM01] proposent une méthode hybride de remise à jour : une partie de l’arbre est remise à jour à la manière bottom-up et l’autre partie est remise à jour à la manière top-down.

Fig. 1.21 – D’après [Lin04] : Hiérarchie des tests d’intersection entre les volumes englobants. A

gauche : Après un test positif sur les boîtes englobantes principales, on recommence un test en utilisant les boîtes du second niveau d’un des objets. A droite : la descente dans la hiérarchie permet de localiser précisément la collision par un nombre de tests réduit.