UNE MÉTHODE COMPORTEMENTALE DE MODÉLISATION ET D´ANIMATION DU CORPS HUMAIN

Michel BRET
Professeur en A.T.I., Université PARIS8 1998
Article refusé par IMAGINA en 1998


1 Résumé

2 Introduction

3 Travaux antérieurs

4 Le langage

5 Le squelette

6 Les muscles

7 Les organes et les tissus graisseux

8 La peau

9 Éléments secondaires

10 L´animation

11 Génération de comportements par des réseaux neuronaux

12 Génération de réseaux neuronaux par des algorithmes génétiques

13 Conclusion

1 Résumé

         Cet article présente une méthode de génération et d´animation de corps vivants basée sur des modèles dynamiques, comportementaux, connexionnistes et évolutionnistes.
         La construction d´un corps repose sur une structure en couches (os, muscles, organes, graisses et peau) tenant compte de données anatomiques.
         Les mouvements sont gérés par un modèle dynamique intégrant des notions de biomécanique.
         L´animation utilise des "acteurs" munis de comportements et simulés par des machines à états.
         Une animation "secondaire" de cheveux et de vêtements accompagne les mouvements du corps.
         La vie est simulée par des réseaux neuronaux donnant à ces acteurs la faculté d´apprendre et de s´adapter.
         Enfin les algorithmes génétiques permettent de faire évoluer des populations de tels réseaux.

Mots clés

Acteur, Algorithmes génétiques, Animation comportementale, Cheveux, Connexionnisme, Corps humain, Dynamique, Modèles de muscles, Réseaux neuronaux, Vêtements.

2 Introduction

2-1 De l´apparence

         Les artistes (sculpteurs ou peintres) qui produisent l´image d´un corps ne peuvent faire l´économie d´une certaine connaissance de l´anatomie: Le rendu final de la peau (seule surface visible) dépend des dispositions relatives des os, muscles, graisses et autres organes. De plus, une bouche ouverte, par exemple, laisse voir une partie de l´intérieur.
         Mais un corps vivant ne peut se concevoir sans le mouvement ni sans une volonté le produisant: La synthèse du corps est donc inséparable de son animation et d´une simulation de la pensée.

2-2 Les niveaux

         Un rendu fonctionnel de l´apparence conduit à définir des structures profondes: Le squelette, les muscles, les organes, les tissus graisseux et une peau enveloppant ces différents éléments.
         Plutôt que de construire des bases de données, nécessairement lourdes et figées, il est préférable de définir des "acteurs" possédant des méthodes d´auto génération et d´adaptation.

2-3 Les mouvements

         Les mouvements sont générés par un ensemble d´impulsions communiquées aux muscle. Ceux-ci, en se déformant, entrainent les os, les organes et les tissus graisseux. La peau se tend alors automatiquement sur ces éléments.
         Nous avons choisi de simuler ce fonctionnement au moyen d´une machine à états dans laquelle le basculement automatique d´un état dans un autre dépend de schémas prédéfinis et des valeurs délivrées par des capteurs analysant l´environnement et le corps lui-même. Cette machine commande des "programmes moteurs" agissant sur les articulations.

2-4 Animations "secondaires"

         Les cheveux et les vêtements sont considérés comme tributaires du corps et sont entrainés dynamiquement par les mouvements de celui-ci. Des détections de collisions et des réactions aux chocs ont permis de gérer automatiquement leur animation.

2-5 Les comportements

         L´interaction entre un être vivant et son environnement (perception et action) est gérée par le système nerveux qui "lit" le monde extérieur gràce à des capteurs (organes des sens), qui le modélise de façon abstraite sous forme de signaux circulant dans des réseaux. Puis il effectue des simulations lui permettant de former un projet qu´il exécute ensuite en envoyant des ordres à ses muscles moteurs. Une boucle de rétroaction lui permet de vérifier constamment l´adéquation de l´action et du projet.
         Une machine à états modélise très imparfaitement un être vivant dans la mesure où elle est incapable de s´adapter à un environnement variable. Nous avons utilisé les réseaux neuronaux pour construire, par apprentissage, des comportements répondant à des situations données et en respectant un ensemble de contraintes.

2-6 Évolution

         Le problème de la construction des réseaux neuronaux (dont on sait que l´architecture dépend du problème traité) a été résolu par des algorithmes génétiques: Une population de réseaux arbitraires évolue par sélection, croisements et mutations en privilégiant ceux qui optimisent une certaine fonction d´évaluation.

3 Travaux antérieurs

3-1 De l´animation en général

         La simulation des méthodes de l´animation traditionnelle a été, et reste encore, prépondérante, surtout dans le monde de la production: Probablement pour des raisons de rentabilité immédiate, il est en effet plus facile de faire comme avant plutôt que d´innover...
         Mais, depuis les années 80, la recherche s´oriente vers l´utilisation de modèles dynamiques, et, depuis les années 90, de modèles connexionnistes.
         Renouvelant l´ancienne conception de la représentation comme "mimésis", ces nouvelles approches visent à simuler le fonctionnement plutôt qu´à vouloir rendre l´apparence: La dynamique simule le monde des choses et le connexionisme simule celui des êtres.
         Dans les prochaines années, les techniques d´animation vont intégrer les nouvelles connaissances issues de la "Vie Artificielle" [RAY 1994] [SIMS 1994], [HEUDIN 1994].

3-2 Modélisation dynamique du corps

         David ZELTZER [ZELTZER 1982] utilise, dès 1982, la notion de "moteur de contrôle" pour gérer l´animation de structures articulées, à laquelle il adjoint celle de processeur de mouvement préfiguration de ce que seront les comportements.
         Les travaux de Demetri TERZOPOULOS, bien que ne traitant pas spécifiquement des corps vivants, sont à la base de l´animation dynamiques de surfaces souples [TERZOPOULOS 1987], utilisée pour modéliser les muscles et la peau.
         Gavin MILLER [MILLER 1988] a introduit l´usage des ressorts dans la simulation de muscles moteurs pour animer des serpents et des vers.
         Armin BRUDERLIN [BRUDERLIN 1989] décrit la locomotion humaine par un modèle dynamique du mouvement des jambes qu´il associe avec une direction "à but", anticipant par là les travaux sur l´intentionnalité.
         Michael McKENNA [McKENNA 1990] anime des figures articulées en appliquant la mécanique Newtonienne, il introduit également les notions de "contrôleur de marche" et de "programme moteur".
         Marc RAIBERT [RAIBERT 1991] applique la robotique au contrôle dynamique de la locomotion d´êtres artificiels bipèdes.
         Jessica HODGINS [HODGINS 1995] simule des comportements athlétiques (courir, faire du vélo, sauter, ...) par des modèles dynamiques compatibles avec des données biomécaniques. Elle adapte aussi ces comportements à des acteurs quelconques [HODGINS 1997].

3-3 Modélisation anatomique du corps

         Keith WARTERS [WATERS 1987] introduisait une méthode de paramétrisation d´un modèle facial simulant l´action superficielle des muscles du visage pour synthétiser des expressions. Yuencheng LEE [LEE 1995] reprend cette méthode en l´automatisant et en lui associant un modèle dynamique.
         ZAJAC [ZAJAC 1986] [ZAJAC 1989] a développé le 1er modèle de muscles appliqué à la synthèse du corps humain.
         John CHADWICK [CHADWICK 1989] a developpé un système d´aide à l´animation traditionnelle de personnages basé sur une structure en "couches" fournissant divers niveaux de contrôle.
         Les THALMANs [MAGNENAT-THALMANN 1991] decrivent des procédures attachées aux noeuds d´une structure articulée ("joint-local deformations") pour simuler des changements naturels de la forme des membres.
         David CHEN et ZELTZER [CHEN 1992] avaient proposés en 1992 de produire les déformations d´un corps mobile en simulant l´action des muscles et les forces qu´ils exercent sur le squelette. Pour cela ils avaient développé un modèle basé sur la biomécanique et la méthode des éléments finis destiné aux animateurs et aux specialistes de l´étude fonctionnelle des muscles.
         Victor Ng Thow HING [HING 1994] donne un modèle dynamique de tendons et de muscles pour contrôler les mouvements d´un corps articulé.
         Ferdi SCHEEPERS [SCHEEPERS 1997] et ses collaborateurs décrivent un système de modélisation du corps basé sur la déformation des muscles induite par les mouvements du squelette.
         Jane WILHELMS [WILHELMS 1997] modélise automatiquement la peau en voxélisant la masse du corps, dont est extraite une isosurface polygonale ancrée ensuite aux muscles par des ressorts.

3-4 Modélisation des cheveux et des vêtements

         Ken-ichi ANJYO [ANJYO 1992] présente une méthode simple pour traiter le comportement dynamique des cheveux.
         Michel CARIGNAN [CARIGNAN 1992] développe des algorithmes de modélisation et d´animation de vêtements ajustés à des acteurs de synthèse en mouvement: Definis comme des pièces planes cousues ensembles, les vêtements sont ensuite ajustés à un corps mobile au moyen de modèles physiques tenant compte de l´élasticité, de l´adhérence et des collisions.
         Jessica HODGINS [HODGINS 1997] définit les "mouvements secondaires" comme le comportement passif d´éléments dépendant des corps contrôlés: C´est le cas des cheveux et des vêtements.

3-5 Animation comportementale

         Craig REYNOLDS introduisit les notions d´"acteur" [REYNOLDS 1982] et de "comportement" [REYNOLDS 1987] qui furent reprises et ameliorées par de nombreux auteurs.
         Xiaoyuan TU [TU 1994] synthétise un monde marin virtuel basé sur des modèles physiques et habités par des poissons artificiels, définis comme des agents autonomes, dont les comportements répondent à des intentions en activant des moteurs de contrôle.
         De même Radek GRZESZCZUK [GRZESZCZUK1995] construit des animaux artificiels apprenant, par essais successifs, à se mouvoir dans un environnement virtuel.
         Bruce BLUMBERG [BLUMBERG 1995] synthétise des créatures virtuelles autonomes capables de se comporter dans un environnement donné, mais acceptant aussi un contrôle extérieur au niveau de l´intention, au niveau de l´exécution d´une tâche et au niveau moteur.

3-6 Application des modèles connexionnistes

         Michiel VAN DE PANNE et Eugène FIUME [VAN DE PANNE 1993] [VAN DE PANNE 1994] utilisent des réseaux neuronaux dont les entrées sont des valeurs de capteurs et dont les sorties actionnent des moteurs de mouvement pour construire des créatures decouvrant des stratégies de marche.
         Karl SIMS [SIMS 1991] utilise des techniques de sélection, de variation et de mutation sur des expressions LISP (inspirées de la programmation génétique) pour créer des structures complexes (plantes, textures, mouvements, ...).
         Karl SIMS [SIMS 1994] utilise des réseaux neuronaux (générés par des algorithmes génétiques) pour contrôler les muscles de créatures artificielles dont le comportement est dirigé vers un but (nager, marcher, sauter, ...).

4 Le langage

4-1 Développement d´outils

         Nous avons développé un interpréteur pseudo compilé dont la syntaxe, proche de celle du langage C, est tolérante et générale: Ainsi les types sont gérés dynamiquement (aucune déclaration n´est donc obligatoire), les opérateurs logique et arithmétiques sont étendus aux tableaux [BRET 1988].
         Ce langage est orienté objet et il est possible d´y définir des nouveaux types ainsi que des propriétés arbitraires.
         Un outil est généralement implémenté sous la forme d´une fonction stockée sur le disque, et qui peut être invoquée interactivement ou appelée d´une autre fonction (sans être nécessairement ni déclarée ni chargée).

4-2 Ouverture

         L´utilisateur accède au système à plusieurs niveaux:
         Au niveau le plus élémentaire il définit, dans le langage, les objets, les propriétés et les algorithmes de son choix, sans être contraint par une syntaxe trop rigoureuse.
         A un niveau plus élevé il dispose des mêmes facilités directement en langage C (plus difficile à mettre au point mais plus rapide à l´exécution).
         Enfin il peut linker une application quelconque avec l´interpréteur.
         Pratiquement on commence par mettre au point intéractivement un programme dans le langage puis, lorsque le résultat est satisfaisant, on le traduit en une fonction C qu´il suffit alors d´associer à une nouvelle commande du langage.

4-3 Programmation avancée

4-3-1 Animation comportementale:

         Un "acteur" est un objet particulier encapsulant un programme (comprenant du code compilé, des piles, des mémoires et des entrées-sorties locales) permettant de simuler une programmation parallèle: Une des fonctions de ce programme, dite "générateur", construit les bases de données (topologie, propriétés dynamiques, etc...), une autre fonction, dite "adaptateur", ajuste l´objet (géométrie, dynamique, ...) pour satisfaire certaines contraintes. Le générateur est appelé une seule fois à la création de l´acteur, tandis que l´adaptateur est appelé à chaque image de l´animation.
         Un tel objet sera dit muni d´un "comportement" si son adaptateur est capable de le faire réagir convenablement à des situations imprévues.
         Une population d´acteurs, même s´ils sont munis de comportements identiques, interagissent de façons différentes entre eux, avec l´environnement et le superviseur selon les informations présentes sur leurs entrées.

4-3-2 Réseaux neuronaux:

         Des objets de type "réseau neuronal" peuvent être définis et construits par la donnée d´une première couche prenant les informations en entrée, une dernière couche délivrant les sorties et une ou plusieurs couches cachées complétant le système. Les poids des connexions, initialisés aléatoirement, sont raffinés par apprentissage sur un jeu de couples (entrée-sortie souhaitée) par la méthode de la rétropropagation de l´erreur [BHARATH 1994, page 37], [BOURRET 1991, page 205] et [ABDI 1994, page 133].
         Ces réseaux peuvent résoudre de nombreux problèmes dont on ne connait pas de solution algorithmique, et nous les avons appliqué à la définition des comportements (voir le paragraphe 10-2).

4-3-3 Algorithmes génétiques:

         Des populations d´objets peuvent être définies par la donnée d´un alphabet (par exemple {0,1}), d´individus construits aléatoirement comme mots de cet alphabet et d´une fonction d´évaluation.
         On commence par copier les individus en les selectionnant au hasard, avec un biais favorisant les mieux evalués.
         Puis on les apparie par des opérations de croisement.
         Des mutations aléatoires (avec une faible probalité) sont effectuées.
         Après un nombre plus ou moins grand de générations, la population évolue vers une meilleure adaptabilité.
         De principe très simple, ces algorithmes génétiques sont de plus remarquablement robustes. Cependant le problème du codage reste une difficulté: Les meilleurs résultats sont obtenus lorsque l´alphabet est minimum. GOLDBERG [GOLDBERG 1991] propose un codage "multiparamétré à borne fixe", consistant à projeter linéairement un mot binaire (lorsque l´alphabet est réduit à 2 éléments) sur l´intervalle [Umin,Umax] de variation du paramètre réel à coder; c´est cette méthode, efficace pour les algorithmes génétiques simples, que nous avons implémenté.

5 Le squelette

5-1 Structure articulée

         Le squelette est modélisé par une arborescence dont la racine est un os porteur. Les os sont attachés les uns aux autres et reçoivent des degrés de liberté: Rotations selon une rotule ou un axe et d´amplitudes limitées (soit par des bornes géométriques, soit par des forces de rappel, soit encore par des ressorts).
         Lorsque l´os porteur change (changement de pied dans la marche par exemple), la racine change et l´arbre est automatiquement réorganisé.

5-2 Constructions des os

         Un os est un acteur réduit à son "générateur" qui, lorsqu´il est appelé la première fois, génére une base de données comportant une surface polyédrique et certaines propriétés encapsulées dans l´os (comme les points d´ancrage des os les uns aux autres). En ajoutant un "adaptateur" il est possible de modifier le squelette au cours d´une animation (morphing d´un corps dans un autre par exemple).

6 Les muscles

6-1 Construction des muscles

         Les muscles sont des acteurs comportant une méthode de génération et une méthode d´adaptation.
         À la première invocation, la méthode de génération construit une base de données comportant une topologie (description procédurale des points de contrôle d´une surface paramétrique) et des propriétés encapsulées (noms d´os et points d´attache du muscle sur ces os, propriétés dynamiques, etc...).
         La géométrie est reconstruite à chaque image de l´animation par la méthode d´adaptation.
Par exemple:
         deltoide->generer() génére la topologie d´un deltoide et lui affecte des propriétés d´attache et de dynamique.
         deltoide->adapter() génére effectivement la géométrie de ce muscle en fonction de son environnement.
         Les changements de forme se font à volume constant: Défini comme une surface géodésique, un muscle a un volume approximé par la somme des produits des distances de deux sections consécutives par le carré de leur rayon. Une méthode dichotomique permet d´encadrer rapidement les rayons des sections lorsque le muscle se déforme.
         Certains muscles s´attachent à d´autres et les muscles ne doivent pas se pénétrer les uns les autres: L´ordre de leurs générations n´est donc pas indifferent.

6-3 Mouvement des muscles

         Une première méthode simple d´animation consiste à considérer l´ensemble des muscles comme statique et à ne faire dépendre leurs formes que de l´état du squelette comme dans [SCHEEPERS 1997] ou [WILHELMS 1997]. Ainsi il suffit de modifier celui-ci pour déformer les muscles automatiquement.
         Une autre méthode, plus réaliste, revient à définir les muscles comme un réseau de surfaces élastiques (modélisées par des ressorts) subissant des actions extérieures (poids des os d´attache et réaction de muscles concurrents) et intérieures (variation de la raideur par exemple) et dont l´état d´équilibre entraine une position du squelette.
         Un ensemble d´impulsions communiquées aux muscles définit un geste. Un mouvement est une suite de gestes dont l´enchaînement est contrôlé par un comportement.
         Des forces de contact empêchent les éléments du corps de s´interpénétrer.

7 Les organes et les tissus graisseux

7-1 Utilité de ces éléments

         Un volume important du corps est occupé par des organes: Estomac, poumons, etc... Ceux-ci sont tenus par les muscles et interviennent dans la forme générale du corps.
         Les tissus graisseux, généralement situés entre les muscles et la peau, adoucissent l´aspect extérieur du corps, qui, sans eux, ressemblerait à un écorché. Ils sont définis comme les muscles mais n´ont pas la possibilité de générer des forces internes.

7-2 Implémentation

         Ils sont attachés élastiquement par des ressorts au squelette et aux muscles, ils se mettent en place automatiquement, par une méthode de relaxation, sous l´action de la pesanteur, de la résistance des ressorts d´attache et en évitant les collisions avec les éléments voisins.

8 La peau

8-1 Génération

         L´idéal eut été de définir la peau comme une surface fermée et continue enveloppant les éléments décrits ci-dessus. Pour des raisons pratiques il a été plus facile de la décomposer en éléments distincts s´adaptant localement à une partie du corps (par exemple un bras).
         Sur une partie du corps constituée d´un ensemble d´os, de muscles, d´organes et de tissus graisseux une peau est générée selon l´algorithme suivant (voir figure):
         1) Déterminer une courbe 3D (C), la plus intérieure possible à ces éléments, et en constituant un "axe".
         2) Déplacer un point (M) le long de cette courbe selon un certain pas dC et, pour chaque position de M déterminer le plan (P) perpendiculaire en M a (C).
         3) Dans le plan (P) déterminer un cercle de centre M et de rayon suffisamment grand pour qu´il soit extérieur aux éléments. Sur ce cercle faire tourner un "oeil" O selon un pas angulaire dA. Déterminer l´intersection I de OM avec les éléments la plus proche de O, au moyen d´un "lancer de rayon".
         4) L´ensemble des intersections I constitue une section (S) des éléments par le plan (P). L´ensemble des sections (S) sont les génératrices d´une surface géodésique enveloppant les éléments.
         Cette technique simule un laser virtuel ayant sur ses équivalents réels (comme le Cyber Ware) l'avantage de la souplesse: Ainsi peut-il être programmé de façon à pouvoir visiter des concavités, il suffit pour cela de faire progresser le point M et le plan (P) à des vitesses différentes (le point M s´atardant dans les régions "creuses" à visiter).
         À cause de la définition nécessairement limitée des éléments sousjacents à la peau, l´algorithme précédent de génération fait apparaître des irrégularités. Différentes méthodes de lissage ont été implémentées pour corriger ces inperfections:
         Lissages métriques consistant à remplacer un ensemble de sommets voisins par leur barycentre.
         Lissage angulaire par atténuation des changements de concavité.


Muscles          Laser virtuel          Peau
         Algorithme de génération de la peau: Exemple d´une cuisse.


8-2 Jonction des peaux partielles

         Les morceaux consécutifs de peaux sont générés de façon à se chevaucher sur au moins 3 sections, lesquelles sont amenées à coincider. Puis une extension courbe passant par les points de contrôle est générée en utilisant des surfaces paramétriques du troisième degré. La continuité des tangentes est assurée par la présence de 3 couples de points de contrôle confondus (voir figure).


Muscles                   Peaux                   Peau continue
         Jonction de morceaux de peau: Exemple du bras et de l´avant-bras.


8-3 Élasticité

         Wilhelms et Van Gelder [WILHELMS 1997] décrivent une méthode de simulation d´une peau élastique basée sur la relaxation d´un réseau de ressorts préalablement ancrés sur un corps en position neutre. Lors d´un mouvement du corps, la peau atteint une position d´équilibre compatible avec la nouvelle forme et avec sa position originale.
         S´inspirant de ces idées nous avons implémenté l´algorithme suivant:
         1) Générer la peau (au moyen de l´algorithme 8-1) sur le corps dans sa position neutre.
         2) Déterminer un ensemble de points (M) attachés procéduralement aux muscles (c´est à dire dont la position est repérée par un système de coordonnées barycentriques par rapport à des points de ces muscles variables dans le temps). Pratiquement nous avons procédé par échantillonnage.
         3) Pour chacun de ces points (M) déterminer le point (P) de la peau le plus proche et lui attacher un ressort M -> P.
         4) Pour une autre position du corps laisser la peau atteindre une position d´équilibre par une méthode de relaxation en empêchant la peau de traverser les autres éléments du corps par une détection de collisions.
         5) L´algorithme est appliqué itérativement, chaque position à un instant étant déterminée par rapport à sa position précédente.

9 Éléments secondaires

9-1 Les cheveux

         Ils ont été simplements modélisés par des chaînes de petits éléments connectés les uns aux autres par des ressorts angulaires. Munis d´une masse, ils tombent naturellement dans un champ de pesanteur. Des détections de collisions et des réponses aux chocs élastiques avec frottement simulent leur interaction avec les obstacles (le corps, les vêtements et tous les objets y compris les autres cheveux).
         Ils sont implantés aléatoirement sur le crâne.

9-2 Les vêtements

         Nous inspirant des travaux de TERZOPOULOS [TERZOPOULOS 1987] et de CARIGNAN [CARIGNAN 1992], nous avons modélisé des voiles par un maillage de ressorts. Comme pour les cheveux, détections de collisions et réponses aux chocs permettent de gérer automatiquement leur comportement dynamique.
         Pratiquement, une méthode de relaxation fait tomber les voiles sur le corps depuis une position largement extérieure, puis des attaches sont définies au moyen de ressorts entre les voiles et certains points du corps, chaque image de l´animation se deduisant itérativement de la précédente à partir de cette première position d´équilibre.

10 L´animation

10-1 Animation dynamique

         Les méthodes cinématiques d´animation, si elles permettent un contrôle géométrique complet, échouent à simuler les mouvements réels. De plus elles ne savent pas gérer la complexite. Le "key-framing", encore utilisé de nos jours, n´est qu´un "truc" commode sans grand intérêt.
         Les modèles dynamiques, largement développés (voir le paragraphe 3-2), font partie de tous les logiciels d´animation qui se respectent.
         Nous avons implémenté une méthode linéaire d´approximation qui remplace une dérivée par un taux d´accroissement. L´erreur commise est d´autant plus faible que le "delta_t" est plus petit. Pratiquement, entre deux images I(t) et I(t+1), on calcule itérativement I(t+k), k variant dans [0,1] avec un petit pas (par exemple delta_t = 0.1), ne tenant compte que de la dernière pour l´affichage (les images intermédiaires peuvent être utilisées pour un "motion blur").
         Par rapport aux méthodes analytiques qui résolvent un système d´équations différenrielles, cette méthode permet de résoudre potentiellement n´importe quel problème de dynamique, au détriment de l´exactitude cependant.
         Nous ne faisons aucune hypothèse restrictive sur les champs de forces (qui sont des objets comme les autres) ni sur les propriétés des surfaces animées (qui reçoivent des coefficients qualifiant l´élasticité des chocs et la friction au glissement) ni sur la nature des liaisons des objets (libres ou contraints comme dans les structures articulées par exemple).
         Les systèmes de particules apparaissent comme un cas particulier, dans la mesure ou une population de particules est un objet possédant des propriétés spécifiques (comme les masses, les vitesses ou les durées de vie de chaque individu)

10-2 Animation comportementale

         En animation traditionnelle il est nécéssaire de définir toutes les positions: L´animateur est un marionnettiste construisant, image par image, le mouvement qu´il veut produire.
         L´ordinateur apporte une aide précieuse en automatisant le processus:
             Soit en définissant des trajectoires et des lois de mouvements sur chaque élément à animer.
             Soit en générant les mouvements procéduralement.
         Soit en utilisant des modèles physiques (comme l´animation dynamique).
             Soit en numérisant des mouvements réels (le "motion capture").
         Mais ces techniques ne permettent d´animer que des objets déterministes et en aucun cas des êtres vivants dont les mouvements dépendent non seulement de facteurs physiques mais encore de comportements.
         Les facteurs physiques sont representés par des données en mémoire et des fonctions extérieures aux objets (lois de la dynamique par exemple).
         REYNOLDS avait introduit les notions d´"acteur" [REYNOLDS 1982] et de "comportement" [REYNOLDS 1987] reprises par BLUMBERG [BLUMBERG 1995]. Depuis, avec les langages orientés objet, il est devenu possible d´encapsuler un comportement dans une entité. Pour cela nous associons un programme à un objet, lequel devient ainsi "exécutable".
         Plusieurs acteurs ayant le même comportement peuvent se comporter différemment puisque leurs codes, bien qu´identiques, se déroulent de façons différentes en fonction des informations qu´ils reçoivent de l´environnement.

10-3 Implémentation

         À chaque objet peut être associé un programme complet comprenant un code compilé (un main() et des fonctions appelées), des mémoires statiques, des entrées/sorties, autant d´éléments définis localement.
         Le main() d´un acteur ainsi que toutes ses fonctions peuvent être executés par n´importe quel acteur ainsi que par le superviseur.
         Tous les acteur partagent les mémoires externes.
         Les acteurs échangent des messages entre eux et avec leur environnement au moyen de "boites à lettres".

11 Génération de comportements par des réseaux neuronaux

11-1 Réseaux de neurones

         Les difficultés considérables rencontrées dans la modélisation et l´animation du corps humain par les méthodes traditionnelles nous ont conduit a adopter une stratégie radicalement différente: Abandonnant une démarche purement algorithme nous avons confié la résolution de ces problèmes à des réseaux capables de s´auto-organiser et faisant preuve d´une conduite "intelligente" émergeant de leurs nombreuses connexions. Au lieu de chercher une solution algorithmique à un problème, on construit un réseau neuronal que l´on met en présence de ce problème sur le mode "question-reponse" ou encore "essai-erreur" en le faisant s´autoconfigurer de façon à répondre de mieux en mieux à des exemples (apprentissage supervisé). La propriété dite de "généralisation" d´un réseau neuronal garantit que celui-ci peut réagir convenablement à des exemples non appris.

11-2 Implémentation

         Des réseaux multicouche à rétro-propagation de l´erreur [ABDI 1994, page 140] [BOURRET 1991, page 189] ont été utilisés conjointement aux idées developpées par VAN DE PANNE et FIUME [VAN DE PANNE 1993] [VAN DE PANNE 1994] ainsi que par SIMS [SIMS 1994] concernant les réseaux de capteurs-actuateurs:
         La couche d´entrée est connectée à des capteurs:
                  Capteurs analysant l´environnement (par exemple contact d´un pied avec le sol)
                  Capteurs analysant la position du corps lui-même (angles des membres entre eux et avec un référentiel lié au monde)
         La couche de sortie est connectée à des "moteurs" (couples exercés sur les articulations).
         Une ou plusieurs couches cachées permettent de complexifier le réseau.
         Les poids des connexions des neurones d´une couche vers ceux de la couche suivante sont initialisés aléatoirement.
         Un apprentissage est réalisé en présentant au système des couples (entrée-sortie souhaitée), l´erreur (différence entre la sortie souhaitée et la sortie calculée) est utilisée pour corriger les poids par la méthode de la rétro-propagation. Cet apprentissage revient à construire une "base de connaissance" associant une stratégie précalculée à une situation donnée [RIJPKEMA 1991]. Mais ici cette base de connaissance est étendue (propriété de généralisation propre aux réseaux neuronaux) à des situations non apprises.
         Une première difficulté consiste à trouver une architecture de réseau (combien de couches, combien de neurones sur une couche), elle a été résolue, en s´inspirant des travaux de Karl SIMS [SIMS 1994], par des algorithmes génétiques.
         Une deuxième difficulté consiste à trouver des couples (entrée-sortie) pertinents, elle est liée au problème et a été abordée cas par cas (pour la marche par exemple, des gestes rétablissant l´équilibre ont été donnés comme sortie correspondant à des positions de déséquilibre présentées en entrée).

12 Génération de réseaux neuronaux par des algorithmes génétiques

12-1 Algorithmes génétiques

         Les algorithmes génétiques, initialement developpés par John HOLLAND [HOLLAND 1975], sont des algorithmes d´exploration basés sur la sélection naturelle et la génétique, et utilisant des processus pseudo-aléatoires.
         Outre leur simplicité, ils se caracterisent par une remarquable robustesse et montrent des comportements adaptatifs proches de ceux des êtres humains.
         Comme les réseaux neuronaux ils résolvent des problèmes dont on ne connait pas de solution algorithmique, mais, alors que ces dernier sont essentiellement connexionnistes, ils utilisent des méthodes évolutionnistes.

12-2 Implémentation

         Une population de réseaux neuronaux construits aléatoirement évolue par reproduction, croisements et mutations en optimisant une certaine fonction d´évaluation. Cette fonction est en fait la note obtenue par un processus consistant, dans un premier temps à calculer la matrice des poids d´un réseau par apprentissage et, dans un deuxième temps, à utiliser ce réseau pour faire se comporter un acteur, et c´est la performance de ce comportement qui est notée (pour la marche par exemple ce peut être la distance parcourue pénalisée par l´énergie depensée).
         Une autre méthode de sélection, proposée par Karl SIMS [SIMS 1991], utilise un jugement de valeur (par exemple esthétique) porté par le superviseur.
         Ces deux méthodes peuvent d´ailleurs très bien cohexister.

13 Résultats

         Le choix d´un langage plutôt que d´un programme dédié a rendu possible toutes sortes d´expériences. Voici par exemple l´une d´entre elles qui a servi à générer la séquence des voiles dans le film "DÉFILÉ DE MODE":

13-1 Le corps

         Nous nous sommes inspiré, pour la modélisation du corps, de données anatomiques [MOREAUX 1959], [RICHER 1996] et [SZUNYOGHY 1996], et, pour la modélisation des muscles, de données biomécaniques [GOUBEL 1998].
         Le squelette se compose de 214 os ancrés selon une hiérarchie dynamique dont la racine est le premier os trouvé en contact avec le sol.
         Nous avons modélisé 143 muscles attachés au squelette et aux organes.
         Enfin la peau vient se plaquer sur l´ensemble selon l´algorithme 8-1.
         La figure suivante decrit ces 3 etapes.


Squelette, muscles et peau.


13-2 Modèle comportemental

         Comme ZELTZER [ZELTZER 1982],qui utilise des machines à états finis pour simuler la marche humaine sur un terrain quelconque, nous definirons un comportement par une machine à états créant et enchainant des mouvements. Ainsi la marche peut être simulée par un ensemble de gestes du genre: tendre, plier, balancer, ... L´enchaînement d´un geste à un autre est declenché par un événement extérieur (par exemple poser un pied sur le sol va provoquer une extension de la jambe porteuse et un balancement de l´autre jambe, une perte d´équilibre va provoquer des gestes compensatoires, etc ...).
         Un corps est défini comme un acteur muni d´un comportement et d´un système d´analyse du monde (capteurs de contact, capteurs angulaires). Les sorties de ces capteurs sont interprétés comme entrées de la machine à états qui décide quel mouvement déclencher et avec quels paramètres.
         Par exemple si le pied gauche est en contact avec le sol, si la cuisse droite est levée et si le centre de gravité du corps se projette en avant du pied gauche, le geste ´projeter_en_avant´ est declenché sur la jambe droite.
         Le rôle d´un geste est de commander un "programme moteur" [McKENNA 1990] générant des couples exercés sur les articulations.
         Parallèlement à ces gestes moteurs, des gestes de compensation sont automatiquement declenchés. Par exemple lorsque la jambe droite est projetée en avant, un couple s´exerce sur l´épaule gauche pour imprimer un balancement arrière au bras gauche. Plusieurs gestes peuvent s´appliquer à un même élément, celui-ci réagit alors selon la somme des influences.
         D´autre part tous les acteurs sont contraints par des méthodes leur imposant des positions relatives (ancrages) et des déviations angulaires limitées (angle du bras et de l´avant bras par exemple).

12-3 Réseau neuronal

         Pour donner vie a ce robot entièrement automatique, les entrées d´un réseau de neurones sont connectées aux capteurs, et ses sorties sont connectées à la machine à états. Un apprentissage supervisé lui apprend des exemples de comportement par la donnée de couples (valeurs des capteurs- comportement déclenchés). Lorsque le réseau est stabilisé il est alors capable de répondre correctement à des entrées nouvelles (propriété de généralisation des réseaux neuronaux). Par exemple si le corps a appris à rétablir son équilibre lorsqu´il est penché en avant et lorsqu´il est penché en arrière, il saura rétablir son équilibre lorsqu´il est penché sur le coté.
         Pratiquement 18 couples d´apprentissage ont suffi à rendre le corps capable de rétablir son équilibre dans n´importe quelle configuration de départ. Le tableau suivant donne les sorties souhaitees (S0) et les sorties calculees (SC) apres 5000 passes. En fait une commande regroupe 2 sorties S1 et S2, et le couple C(t) est calculé comme une courbe de Hermite passant par {C(0),S1,S2} où C(0) est la valeur du couple à l´instant de l´impulsion. Cette courbe représente une "intention" (projet d´un mouvement) qui peut être interrompue a tout moment par un événement extérieur. Mais, comme l´explique Alain BERTHOZ [BERTHOZ 1997], la coordination de mouvement ne saurait se réduire à une succession linéaire de phases mais implique un contrôle à plusieurs niveaux:
         1) Une correction est apportée en permanence par des "comparateurs" qui mesurent le mouvement réalisé et le comparent au mouvement prévu.
         2) Une action extérieure peut interrompre un mouvement (par exemple la pose d´un pied au sol termine le mouvement en cours et en enclenche un autre).
         3) Enfin le mouvement prévu peut ne plus être adapté à l´environnement, des corrections et même des changements de stratégies sont alors nécessaires (par exemple dans la marche sur un terrain mouvant, un pas prévu peut s´avérer trop court et nécessiter son alongement).

S0 = sortie souhaitée
SC = sortie calculée

S0 = 0.687500 0.562500 0.687500 0.687500 0.687500 0.687500 0.750000 0.500000
SC = 0.624720 0.567813 0.789856 0.673585 0.759580 0.781653 0.824856 0.510717

S0 = 0.750000 0.750000 1.000000 0.000000 0.750000 0.250000 0.750000 0.750000
SC = 0.747018 0.744049 0.993511 0.054847 0.717353 0.255245 0.667496 0.739045

S0 = 0.750000 0.250000 0.750000 0.750000 0.750000 0.750000 0.750000 0.000000
SC = 0.723682 0.187543 0.748450 0.765033 0.685704 0.707895 0.664760 0.001424

S0 = 0.750000 0.750000 1.000000 0.000000 0.750000 0.250000 0.250000 0.750000
SC = 0.663025 0.746494 0.983379 0.008898 0.806061 0.237232 0.343296 0.776323

S0 = 0.750000 0.250000 0.750000 0.750000 0.000000 0.750000 0.750000 0.000000
SC = 0.796294 0.261352 0.741390 0.736826 0.065853 0.740536 0.860361 0.002545

S0 = 0.250000 1.000000 1.000000 0.000000 0.250000 0.250000 0.750000 0.750000
SC = 0.271646 0.901820 0.943672 0.013268 0.311289 0.257667 0.691537 0.718702

S0 = 0.750000 0.250000 0.250000 0.750000 0.250000 1.000000 1.000000 0.250000
SC = 0.719811 0.235099 0.258149 0.760314 0.233857 0.966136 0.895650 0.255302

S0 = 0.750000 0.750000 1.000000 0.000000 0.750000 0.250000 0.750000 0.750000
SC = 0.652172 0.820802 0.988373 0.081365 0.665482 0.292405 0.736287 0.787096

S0 = 0.750000 0.250000 0.250000 0.750000 0.250000 0.750000 0.750000 0.000000
SC = 0.689887 0.262874 0.349685 0.744647 0.229253 0.831036 0.720326 0.001201

S0 = 0.250000 0.750000 0.750000 0.000000 0.750000 0.250000 0.250000 0.750000
SC = 0.336754 0.819497 0.819290 0.002943 0.816457 0.345281 0.178607 0.703503

S0 = 0.750000 0.750000 0.250000 0.750000 0.000000 0.750000 1.000000 0.000000
SC = 0.683034 0.664234 0.289419 0.730131 0.004250 0.778697 0.906859 0.003976

S0 = 0.250000 0.750000 0.750000 0.000000 0.375000 0.375000 0.500000 0.500000
SC = 0.210769 0.842981 0.761530 0.007284 0.312833 0.402757 0.509698 0.495382

S0 = 0.375000 0.375000 0.625000 0.625000 0.750000 0.750000 0.750000 0.750000
SC = 0.465135 0.403385 0.567204 0.619487 0.710380 0.704939 0.780725 0.735205

S0 = 0.250000 0.250000 0.250000 0.250000 0.375000 0.375000 0.625000 0.625000
SC = 0.153227 0.223189 0.293630 0.234658 0.406911 0.373390 0.694519 0.631380

S0 = 0.750000 0.250000 0.750000 0.750000 0.750000 0.750000 0.750000 0.000000
SC = 0.657710 0.281050 0.698316 0.743533 0.733331 0.757199 0.729230 0.026868

S0 = 0.000000 1.000000 0.750000 0.000000 0.750000 0.250000 0.250000 0.750000
SC = 0.097813 0.946774 0.701969 0.006784 0.807009 0.188847 0.314545 0.766287

S0 = 0.250000 0.250000 0.250000 0.750000 0.000000 0.000000 0.750000 0.000000
SC = 0.199531 0.268380 0.267261 0.769457 0.058958 0.098808 0.693478 0.002902

S0 = 0.000000 1.000000 0.750000 0.000000 0.250000 0.250000 0.250000 0.750000
SC = 0.011215 0.976365 0.756324 0.003270 0.240037 0.002122 0.246872 0.750335

4 erreurs, erreur maximun = 0.247878, erreur tolerée = 0.1

         Adaptation du réseau en 5000 passes à partir de 18 exemples.

         Le réseau est constitué (voir figure):
         D´une couche d´entrée de 6 neurones connectés à des capteurs angulaires mesurant les angles des fémurs et des tibias avec la verticale et à deux capteurs de contact situés sous les pieds.
         D´une couche cachée de 6 neuronnes.
         D´une couche de sortie de 8 neuronnes envoyant des couples moteurs aux genoux et aux hanches pour faire tourner les tibias et les fémurs.
         En fait une commande regroupe 2 sorties S1 et S2, et le couple C(t) est calculé comme le point P(t) d´une courbe de Hermite passant par {C(0),S1,S2} où C(0) est la valeur du couple à l´instant de l´impulsion. Cette courbe représente une "intention" (projet d´un mouvement) qui peut être interrompue a tout moment par un événement extérieur.
         Dans un modèle plus evolué les sorties declenchent des comportements agissant sur les muscles des jambes pour produire les mêmes résultats (voir paragraphe 6-3).


Capteurs = Contacts,Angles           Reseaux           Moteurs=Couples
Réseau neuronal contrôlant les jambes.


13 Conclusion

         Le système présenté dans cet article a permi de produire plusieurs films de synthèse ("CAHINCAHA" en 1996, "MYSTÈRE ET BOULE DE GOMME" en 1997 et "DÉFILÉ DE MODE" en 1998) qui en retracent le développement: Des premiers essais seulement comportementaux aux essais plus récents utilisant des systèmes connexionnistes.
         Lorsque les problèmes d´implémentation ont été résolus, on dispose d´un modèle très souple dont le contrôle global est aisé. Il peut être utilisé pour générer des personnages de dessins animés, des marionnettes virtuelles ou autres bêtes fantastiques.
         De nombreuses améliorations restent bien entendu a faire, parmi lesquelles:
         1) Perfectionner le modèle de peau (par exemple en integrant les plis et les rides).
         2) Synthétiser des "expressions" faciales.
         3) Traiter le problème de la danse.
         4) Implémenter des méthodes de coévolution mettant en concurrence plusieurs populations s´évaluant mutuellement, ceci afin d´éviter à l´algorithme génétique de se cantoner dans un minumum local [KOZA 1991].

Bibliographie

Hervé ABDI
Les réseaux de neurones
Presses Universitaires de Grenoble 1994

Ken-ichi ANJYO, Yoshiaki USAMI, Tsuneya KURIHARA
A Simple Method for Extracting the Natural Beauty of Hair
in COMPUTER GRAPHICS 26(2), 111-120, 1992

Alain BERTHOZ
Le sens du mouvement
Éditions Odile Jacob Sciences,1997

Ramachandran BHARATH, James DROSEN
Neural Network Computing
Windcrest/McGraw-Hill 1994

Bruce M. BLUMBERG, Tinsley A. GALYEAN
Multi-Level Direction of Autonomous Creatures for Real-Time Virtual Environments
in COMPUTER GRAPHICS, 47-54, 1995

P. BOURRET, J. REGGIA, M. SAMUELIDES
Réseaux Neuronaux
TEKNEA 1991

Michel BRET
Anyflo: Logiciel d´Animation 3D
in Imaginaire Numerique HERMES, 47-55, 1988

Armin BRUDERLIN, Thomas W. CALVERT
Goal-Directed, Dynamic Animation of Human Walking
in COMPUTER GRAPHICS 23(3), 233-242, 1989

Michel CARIGNAN, Ying YANG, Nadia MAGNENAT THALMANN, Daniel THALMANN
Dressing Animated Synthetic Actors with Complex Deformable Clothes
in COMPUTER GRAPHICS 26(2), 99-104, 1992

John E. CHADWICK, David R. HAUMANN, Richard E. PARENT
Layered Construction for Deformable Animated Characters
in COMPUTER GRAPHICS 23(3), 243-252, 1989

David T. CHEN, David ZELTZER
Pump It Up: Computer Animation of Biomechanically Based Model of Muscle
in COMPUTER GRAPHICS 26(4), 89-98, 1992

Jean-Louis DESSALLES
L´ordinateur génétique
HERMES 1996

David E. GOLDBERG
Algorithmes Génétiques
Addison-Wesley 1991

Francis GOUBEL, Ghislaine LENSEL-CORBEIL
Biomécanique, éléments de mécanique musculaire
MASSON 1998

Radek GRZESZCZUK, Demetri TERZOPOULOS
Automated Learning of Muscle-Actuated Locomotion Through Control Abstraction
in COMPUTER GRAPHICS, 63-70, 1995

Jean-Claude HEUDIN
La Vie Artificielle
HERMES, 1994

Victor Ng Thow HING
A Biomechanical Musculotendon Model For Animating Articulated Objects
Thesis, Departement of Computer Science University of TORONTO, 1994

John HOLLAND
Adaptation in natural and artificial systems
Ann Arbor; The University of Michigan Press, 1975

Jessica K. HODGINS, Wayne L. WOOTEN, David C. BROGAN, James F. O´BRIEN
Animating Human Athletics
in COMPUTER GRAPHICS, 71-78, 1995

Jessica K. HODGINS, Nancy S. POLLARD
Adaptating Simulated Behaviors For New Characters
in COMPUTER GRAPHICS, 153-162, 1997

J.R. KOZA
Genetic evolution and co-evolution of computer programs
in C.G. LANGTON (Ed.), Artificial Life II, 603-629, Addison-Wesley, 1991

Yuencheng LEE, Demetri TERZOPOULOS, Keith WATERS
Realistic Modeling for Facial Animation
in COMPUTER GRAPHICS, 55-62, 1995

Michael McKENNA, David ZELTZER
Dynamic Simulation of Autonomous Legged Locomotion
in COMPUTER GRAPHICS 24(4), 29-38, 1990

Gavin S.P. MILLER
The Motion Dynamics of Snakes and Worms
in COMPUTER GRAPHICS 22(4), 168-178, 1988

Arnould MOERAUX
Anatomie Artistique de l´Homme
MALOINE, 1959

Marc H. RAIBERT, Jessica K. HODGINS
Animation of Dynamic Legged Locomotion
in COMPUTER GRAPHICS 25(4), 349-358, 1991

Thomas S. RAY
Evolution, complexity, entropy, and artificial reality.
in Physica, 239-263, 1994

Craig W. REYNOLDS
Computer Animation with Scripts and Actors
in COMPUTER GRAPHICS 16(3), 289-296, 1982

Craig W. REYNOLDS
Flocks, herds, and schools: A distributed behavioral model.
in COMPUTER GRAPHICS 21(4), 25-34, 1987

Paul RICHER
Taité d´Anatomie Artistique
Bibliothèque de l´Image, 1996

Ferdi SCHEEPERS, Richard E.PARENT, Wayne E.CARLSOM, Stephen F.MAY
Anatomy-Based Modeling of the Human Musculature
in COMPUTER GRAPHICS Graphics, 163-172, 1997

Karl SIMS
Artificial Evolution for Computer Graphics
in COMPUTER GRAPHICS 25(4), 319-328, 1991

Karl SIMS
Evolving Virtual Creatures
in COMPUTER GRAPHICS, 15-22, 1994

Karl SIMS
Evolving 3D Morphology and Behavior by Competition
in Artificial Life IV Proceedings, MIT Press, 28-39, 1994

András SZUNYOGHY, György FEHÉ
Grand Cours d´Anatomie Artistique
KONEMANN, 1996

Demetri TERZOPOULOS, John PLATT, Alan BARR, Kurt FLEISCHER
Elastically Deformable Models
COMPUTER GRAPHICS 21(4), 205-214, 1987

Xiaoyuan TU, Demetri TERZOPOULOS
Artificial Fishes: Physics, Locomotion, Perception, Behavior
in COMPUTER GRAPHICS, 43-50, 1994

Michiel VAN DE PANNE, Eugène FIUME
Sensor-Actuator Networks
in COMPUTER GRAPHICS , 335-342, 1993

Michiel VAN DE PANNE
Control Techniques for Physically-Based Animation
These, Universite de TORONTO, 1994

Keith WATERS
A Muscle Model for Animating Three-Dimensionam Facial Expression
COMPUTER GRAPHICS 21(4), 17-24, 1987

Jane WILHELMS, Allen VAN GELDER
Anatomically Based Modeling
in COMPUTER GRAPHICS, 181-188, 1997

Andrew WITKIN, Michael KASS
Spacetime Constraints
in COMPUTER GRAPHICS 22(4), 159-168, 1998

David ZELTZER
Motor Control Techniques for Figure Animation
in IEEE Computer Graphics and Applications 2,9, 53-59, 1982

F.E. ZAJAC, E. L. Topp, P. J. STEVENSON
A dimensionless musculotendon model
in Proceedings IEEE Engineering in Medecine and Biology, 1986

F.E. ZAJAC
Muscle and tendon: Properties, models, scaling, and application to biomechanics and motor control
in Critical Reviews in Biomedical Engineering, 17, 359-411, 1989