• Aucun résultat trouvé

3.5 Exemples de contraintes

3.5.2 Contact

Les contraintes de contact sont certainement les plus fr´equentes dans la majorit´e des simulateurs physiques mais ´egalement parmis les plus d´elicates `a traiter. Le cas particulier de la r´esolution de contact a fait l’objet de nombreuses publications et est toujours un domaine de recherche tr`es actif. Ces contraintes sont cr´e´ees d`es lors qu’une collision entre deux objets est d´etect´ee, afin d’empˆecher leur interp´en´etration. Elles se d´emarquent des autres types de contraintes par le fait qu’elles sont g´en´er´ees dynamiquement par un algorithme durant la simulation, plutˆot que d’ˆetre d´efinies statiquement lors de l’´ecriture de la sc`ene `a simuler. Nous cr´eons donc une contrainte de contact pour chaque point que nous donne l’algorithme de d´etection de collision, et les supprimons `a la fin du pas de temps.

Ce sont des contraintes unilat´erales, puisqu’elles se limitent `a repousser les deux objets jusqu’au point o`u ils ne sont plus en interp´en´etration, et ne cherchent pas `a les r´eunir ensemble lorsqu’ils se s´eparent (contrairement aux contraintes bilat´erales, qui elles fonctionnent dans les deux sens). Elles agissent le plus souvent dans la direction du contact : ainsi si une particule entre en collision avec un triangle, on choisira comme direction de la contrainte la normale de ce triangle.

Le mˆeme type de contrainte permet de simuler le contact entre des mod`eles h´et´erog`enes. Nous simulons `a la figure 3.18 le comportement d’une chaˆıne dont les maillons utilisent des formalismes diff´erents pour leur simulation.

Figure 3.18 – Simulation d’une chaˆıne articul´ee. Le premier maillon est fixe et non d´ efor-mable. Les autres maillons sont simul´es respectivement par la m´ethode des ´el´ements finis, des masses-ressorts, et un simulateur d’objets rigides.

Figure 3.19 – Empilement d’objets rigides dont la collision est r´esolue `a l’aide de contraintes de contacts.

Notre m´ethode de r´esolution de contraintes permet de g´erer des cas de collision complexes, tels qu’un empilement d’objets rigides (voir figure 3.19). Ce cas montre une grande interd´ e-pendance entre les collisions, dans le sens o`u la r´esolution du contact au niveau du sol a une influence sur le contact au dessus du cube, et ainsi de suite. L’algorithme du Gauss-Seidel n´ecessitera un plus grand nombre d’it´erations, au fur et `a mesure que l’on ajoutera des ob-jets au dessus de la pile. Cependant l’empilement est stable, et on peut utiliser la coh´erence temporelle pour acc´elerer grandement la convergence de la r´esolution.

D´etection de collision par distance

Faisons une petite parenth`ese dans la pr´esentation des contraintes pour parler rapidement de la d´etection de collision que nous utilisons. Via le framework SOFA, nous employons la d´etection de collision par proximit´e, qui consiste `a r´epondre `a la collision avant mˆeme que les objets entrent en contact. Le principe est de cr´eer une contrainte de contact lorsque la distance entre les deux primitives de collision est inf´erieure `a une certaine distance d’alarme.

Figure 3.20 – Une sph`ere rigide tombant dans un ’V’ form´e par deux plans, cas bien g´er´e par la d´etection de collision par distance qui cr´ee des contraintes avant que le contact soit effectif. Les contraintes sont repr´esent´ees par des traits rouge, celles n’´etant pas actives apr`es r´esolution sont en pointill´es.

Cependant, cette contrainte ne sera active, c’est `a dire qu’elle cherchera `a s´eparer les objets, uniquement si la distance devient inf´erieure `a la distance de contact d´efinie pour la sc`ene. Cette m´ethode pr´esente pour nous certains avantages sur les d´etections continues ou dis-cr`etes apr`es contact. Tout d’abord, elle est simple et rapide, convenant bien aux simulations temps r´eel. Mais surtout, elle r´eagit bien aux cas o`u de nouvelles collisions apparaissent du-rant la r´esolution des contraintes, ce qui est fr´equent pour les objets d´eformables ou lorsque plusieurs objets sont empil´es.

Prenons l’exemple d’une sph`ere tombant dans un ’V’ form´e par deux plans (voir figure

3.20). La sph`ere entre tout d’abord en contact avec le plan de droite, mais la r´esolution de la collision a tendance `a la pousser `a travers le plan de gauche. Avec une d´etection de collision apr`es contact, il faudrait une seconde r´eponse `a la collision pour prendre en compte ce second plan. Il faudrait ainsi plusieurs it´erations de l’ensemble d´etection et r´eponse `a la collision pour g´erer compl`etement ce cas.

Une d´etection de collision par distance va cr´eer tout de suite 2 contraintes de contact, une de chaque cˆot´e. Celle sur le plan de droite sera active d`es le d´ebut de la r´esolution, alors que celle de gauche, dont la violation est comprise entre la distance d’alarme et celle de contact, peut ˆetre activ´ee durant la r´esolution si l’objet se d´eplace vers la gauche sous l’effet des contraintes. La m´ethode par proximit´e (ou distance) est donc bien adapt´ee `a la r´esolution de type “time-stepping” que nous utilisons, o`u toutes les contraintes sont r´esolues en mˆeme temps, quelque soit leur ordre d’arriv´ee dans le pas de temps. Une r´esolution de type “event-driven” qui utilise l’information de l’instant de collision utilisera de pr´ef´erence une m´ethode de collision continue.

Cependant, la d´etection de collision par distance pr´esente le mˆeme d´esavantage que les autres m´ethodes discr`etes, dans le sens o`u une collision peut ´echapper `a l’algorithme, ici lorsque les objets en mouvement se d´eplacent plus rapidement durant un pas de temps que la distance d’alarme. L’autre inconv´enient est la cons´equence directe du concept de distance de contact, puisque les objets ne seront pas r´eellement en contact l’un avec l’autre : ils l´evitent l´eg´erement au dessus du sol et sont toujours s´epar´es par cette distance de contact. Avec le m´ecanisme de multi-repr´esentation des objets, on peut facilement contourner ce probl`eme, en

Figure 3.21 – Cas simple du frottement : un objet glissant le long d’une ligne, dont le mouvement est frein´e par le frottement proportionnellement `a la force qui est appliqu´ee dans le sens normal `a la ligne.

cr´eeant un mod`ele de collision qui soit l´eg`erement plus contract´e que le mod`ele visuel (d’une distance ´equivalente `a la moiti´e de celle de contact).