• Aucun résultat trouvé

Deuxi` eme partie

7.1 Etat de l’art

a ce travail.

7.1 Etat de l’art

La d´etection de collision et le comportement `a adopter pour ´eviter ou r´eagir `a la collision sont des sujets qui sont abord´es dans diff´erents domaines. Que ce soit en robo-tique, en animation ou dans le cadre de l’interaction homme-machine, la d´etection de la collision permet de rendre une sc`ene, une interaction, une trajectoire plus r´ealiste ou alors moins on´ereuse (la collision en robotique est rarement appr´eci´ee !).

Dans le cadre du suivi de mouvement, la d´etection de collision permet d’´eviter des situations telles que celles d´ecrites dans l’introduction de ce chapitre.

La litt´erature sur les probl`emes de d´etection de collision, que ce soit en robotique ou en animation est tr`es dense. Beaucoup de travaux sont men´es sur l’efficacit´e et l’aspect temps r´eel de la d´etection de collision ([47]). Pour la plupart des applications, la d´etection ou la pr´evention de collision doit ˆetre rapide (temps r´eel en robotique par exemple) et efficace. Dans notre cadre, la d´etection de collision se fait sur une sc`ene

192 7.1 Etat de l’art

(a)

(b)

(c)

Fig. 7.1: Lorsque certains contours ne sont pas observables (a), l’absence de d´etection de collision peut amener `a une mauvaise convergence de l’algorithme (b) et (c). Dans cet exemple, certains contours des bras ne sont pas correctement d´etect´es et les contours du torse viennent se recaler sur de mauvais contours.

D´etection de collisions 193

simple avec peu de primitives g´eom´etriques. Nous aborderons donc dans cet ´etat de l’art les techniques les plus adapt´ees `a notre approche. Plus pr´ecis´ement, nous aborderons les travaux men´es en animation ou en rendu de sc`enes pour des objets simples. En robotique, le probl`eme de la d´etection de collision se ram`ene au probl`eme de planification de trajectoires sans collisions. Nous n’aborderons pas cet aspect l`a dans le cadre de cet expos´e. Le lecteur pourra se r´ef´erer `a [92] pour un aper¸cu sur les techniques de planification de mouvements sans collision.

Lorsque plusieurs objets bougent dans une sc`ene, il est fortement probable que ceux-ci s’interp´en`etrent `a un moment ou `a un autre au cours du temps. Ce n’est g´en´eralement pas une situation voulue, tout du moins pour la mod´elisation ou le rendu de sc`enes r´ealistes. Il y a deux probl`emes ici qui entrent en jeu : d´etecter la collision entre deux objets et d´eterminer la r´eponse `a cette collision. Beaucoup d’approches ont tent´e de r´esoudre les deux probl`emes. Le premier est purement d’ordre cin´ematique. Il prend en compte la position des objets dans la sc`ene et calcule une relation d’ordre entre ceux-ci. Si deux objets sont plus proches qu’un seuil donn´e alors ils sont en collision. Le deuxi`eme probl`eme est plus d’ordre de la dynamique. Lorsque deux objets sont en colli-sion, comment faut-il les faire r´eagir pour qu’ils s’´eloignent l’un de l’autre. Ce deuxi`eme probl`eme est r´egi par des lois physiques (choc ´elastique ou mou par exemple). Nous pr´esenterons dans une premi`ere partie les m´ethodes couramment utilis´ees en animation pour la d´etection de collision. Nous aborderons dans une deuxi`eme partie les r´eponses possibles `a la collision, adapt´ees `a notre approche.

7.1.1 La d´etection de collision

De mani`ere g´en´erale, la d´etection de collision dans une sc`ene graphique consiste `a d´eterminer s’il existe une intersection entre les primitives g´eom´etriques composant la sc`ene. Et g´en´eralement ces primitives sont des triangles.

Quelque soit la m´ethode de d´etection mise en place, la complexit´e de la d´etection est quadratique (que ce soit par rapport au nombre de triangles par objet ou au nombre d’objets dans la sc`ene). D’autre part, la d´etection de collision entre tous les triangles de la sc`ene est une m´ethode brute de force et inefficace pour du calcul rapide ou temps r´eel de collision. Deux simplifications sont donc utilis´ees pour acc´el´erer les calculs : la division de la sc`ene en sous-espaces pour n’effectuer les calculs que sur des ´el´ements proches les uns des autres et l’utilisation de primitives simples englobantes pour calcu-ler simplement les intersections. Ces boˆıtes englobantes peuvent ˆetre de type sph´erique ou parall´el´epip`edique. La sc`ene est alors d´ecompos´ee en un ensemble de boˆıtes organis´e et hi´erarchis´e. Beaucoup de travaux ont ´et´e men´es pour rendre efficace ce partition-nement de la sc`ene. Ces travaux portent surtout sur les structures utilis´ees pour la hi´erarchisation des boˆıtes. Ces structures peuvent ˆetre de type cone trees, k-d trees,

octrees, etc. D’autres m´ethodes comme celles de type bsp (binary space partitionning

[112]) existent. Nous n’entrerons pas dans les d´etails de cette organisation car nous n’en n’utiliserons pas (notre sc`ene est trop peu complexe). Pr´ecisons juste que ces m´ethodes hi´erarchiques sont tr`es efficaces pour des tests de r´ejection, c’est-`a-dire pour d´etecter

194 7.1 Etat de l’art

l’absence de collision entre deux objets donn´es. Cependant lorsque deux objets sont en contact, et pour d´eterminer l’ensemble des points de contact, ces m´ethodes n´ecessitent d’affiner la hi´erarchie des boˆıtes englobantes et donc d’augmenter de mani`ere significa-tive les temps de calcul ([66]).

Dans le paragraphe pr´ec´edent, nous avons abord´e le probl`eme de l’organisation de la sc`ene pour effectuer le calcul de collision. La d´etection de collision en elle-mˆeme peut se faire de mani`ere statique ou dynamique. Dans le premier cas, il s’agit d’effectuer une d´etection de la collision effective entre deux objets. Cette d´etection statique est la plus simple `a mettre en place. Il s’agit de calculer les intersections entre tous les triangles d´ecrivant la sc`ene ([106], [64]). Dans le second cas, il s’agit d’effectuer une d´etection a priori de la collision. Il s’agit alors de pr´edire la collision ou non entre deux objets `a tr`es court terme. Cette seconde classe de m´ethodes est beaucoup plus efficace mais plus complexe `a mettre en place. En effet, nous devons connaˆıtre `a tout instant un mod`ele de d´eplacement de nos objets dans la sc`ene. [122] propose une m´ethode permettant de d´etecter de mani`ere efficace et continue la collision entre plusieurs objets sans connaˆıtre le mod`ele de mouvement pr´ecis de l’objet mais en interpolant celui-ci entre deux instants donn´es (avec un mouvement de type vissage entre deux positions connues).

Nous pouvons noter que d’autres techniques de type champ de distance ([51]), sto-chastiques ([65]) ou encore des m´ethodes exploitant les GPUs (Graphical Processing Units) des cartes graphiques ([47]) existent et sont en pleine expansion.

Enfin, pour une vue d’ensemble des m´ethodes utilis´ees les plus couramment, le lec-teur pourra se r´ef´erer `a [78] ou encore [93].

Pour des raisons de simplicit´e et de rapidit´e, nous nous sommes limit´es `a l’utilisation d’une m´ethode de d´etection de collision statique. Afin de rendre les calculs de collision efficaces, nous utiliserons des boˆıtes englobantes orient´ees (d´enot´ees dans la suite de l’expos´e par obb pour «oriented bounding box» [59]). Il s’agit de boˆıtes englobantes, de forme parall´el´epip`edique, munies d’un rep`ere dont l’origine est situ´ee au centre de la boˆıte. Celles-ci sont intensivement utilis´ees en rendu de sc`ene ([8]). Le fait d’orienter les boˆıtes englobantes permet d’effectuer de mani`ere efficace le calcul de collision comme nous allons le voir dans la suite de ce chapitre.

7.1.2 La r´eponse `a la collision

Une fois la collision d´etect´ee, il faut calculer la r´eaction des objets. Ceux-ci peuvent continuer de s’interp´en´etrer, rebondir l’un contre l’autre, adh´erer l’un `a l’autre. Nous allons ici aborder les types de r´eponses utilis´es en rendu haptique pour l’interaction homme-environnement virtuel. En effet, l’aspect retour de force des syst`emes hap-tiques se rapproche beaucoup du cadre dans lequel nous effectuons la d´etection de collision. Dans les deux cas, nous voulons faire interagir deux objets en admettant une interp´en´etration plus ou moins grande et un retour de force plus ou moins intense. Cependant, contrairement `a l’interaction haptique, nous ne consid´erons pas de lois de frottement entre les objets, ni de mod´elisation pr´ecise de l’interaction entre les objets.

D´etection de collisions 195

Nous pouvons voir deux points de vue pour la r´eponse `a la d´etection de collision : – La collision a lieu et le syst`eme r´eagit en cons´equence. Il s’agit alors d’imposer

une contrainte de d´eplacement aux objets pour qu’ils ne soient plus en collision. – La collision est empˆech´ee a priori en contraignant le d´eplacement des objets dans

la sc`ene.

Le premier point de vue est celui qui est utilis´e en rendu haptique, o`u le syst`eme doit rendre compte `a l’utilisateur d’une interaction et non empˆecher ce dernier d’effectuer cette interaction.

C’est le deuxi`eme point de vue qui est le plus largement usit´e pour le suivi de mou-vement. En effet, la plupart des approches int´egrant des contraintes sur le d´eplacement utilisent un apprentissage sur les contraintes articulaires ou utilisent des contraintes articulaires m´ecaniques pour forcer le mouvement `a rester dans des limites bio-m´ecaniques acceptables ([70]). Cependant ces approches ne suffisent pas pour ´eviter les interp´en´etrations d’objets et donc des ´echecs probables du suivi de mouvement. En effet, les contraintes bio-m´ecaniques sont g´en´eralement des valeurs moyennes pour les limites articulaires. Elles ne prennent pas en compte les diff´erences de morphologie humaine. L’apprentissage des contraintes doit donc ˆetre personnalis´e.

D’autre part, beaucoup de travaux ´evitent ce probl`eme en effectuant un appren-tissage des poses possibles et donc v´erifient si la pose estim´ee co¨ıncide avec une pose apprise ([2]). Ces derni`eres m´ethodes limitent cependant le nombre de mouvements qu’il est possible de suivre, puisque la base d’apprentissage doit correspondre au mouvement suivi.

Pour ´eviter les phases d’apprentissage (que ce soit des limites articulaires ou des poses possibles) ou la limitation des mouvements, nous avons donc d´ecid´e de mettre en place une m´ethode de r´eaction `a la collision et non de pr´evention de celle-ci.

7.2 M´ethode

Comme nous avons pu le voir (chapitre 5), le suivi du mouvement s’effectue en optimisant les param`etres de pose d’un mod`ele 3D. Cette optimisation s’effectue par minimisation it´erative de l’erreur entre les contours images et les contours projet´es du mod`ele3D. La prise en compte correcte des contraintes de non collision oblige `a ´evaluer les collisions sur l’ensemble des parties du corps et `a chaque it´eration. Or effectuer le calcul de la distance entre chaque partie du corps `a tout instant peu s’av´erer coˆuteux. Afin de rendre les calculs plus rapides, la r´esolution des contraintes de non p´en´etration s’effectue en deux ´etapes :

La d´etection de collision est effectu´ee `a chaque it´eration sur l’ensemble des cˆones. Afin de d´eterminer la collision ou non entre deux objets, nous avons d´ecid´e d’adap-ter et d’utiliser les obbs. La simplicit´e de notre sc`ene ainsi que des primitives g´eom´etriques de notre mod`ele nous permet d’´eviter l’utilisation d’une structure or-ganis´ee de boˆıtes. Chaque cˆone du mod`ele3D est englob´e dans un parall´el´epip`ede orient´e, dont les dimensions sont donn´ees par celles du cˆone (c.f. figure 7.2). La

196 7.3 La d´etection de collision

Fig.7.2: Chacune des parties du mod`ele est munie d’une boˆıte englobante orient´ee. Les dimensions de celle-ci sont donn´ees par la base du cˆone elliptique et sa demi-hauteur.

collision est alors calcul´ee sur ces obbs. Comme nous le verrons dans le para-graphe 7.3, il s’agit d’une op´eration peu coˆuteuse et qui peut donc ˆetre effectu´ee aussi souvent que n´ecessaire.

Le calcul de la distance d’interp´enetration n’est effectu´e que si le test de collision est positif. Il s’agit de calculer une distance caract´erisant le volume intersectant de deux cˆones. La distance ainsi calcul´ee est utilis´ee dans la fonction de coˆut du suivi de mouvement comme une p´enalit´e sur l’estimation de la position des cˆones concern´es. Cette p´enalit´e (d´ecrite plus bas) diminue lorsque les cˆones s’´eloignent les uns des autres et est nulle lorsqu’il n’y a plus de contact entre eux. Nous verrons que cette op´eration est coˆuteuse. Il est donc n´ecessaire de r´eduire le nombre de fois o`u le calcul est effectu´e.

Dans la suite de ce chapitre, nous allons expliciter la m´ethode mise en place pour d´etecter les collisions. Puis nous d´efinirons et ´etablirons la distance d’interp´en´etration entre deux cˆones. Nous d´ecrirons la fonction de p´enalit´e utilis´ee pour prendre en compte la contrainte de non p´en´etration des diff´erentes parties du corps. Dans une troisi`eme partie, nous ´etablirons la Jacobienne de la fonction de p´enalit´e. Enfin, nous pr´esenterons quelques r´esultats et discuterons des extensions possibles de la m´ethode.