Thèse : Algorithmes  parallèles de simulation  physique pour la synthèse  d'images : application à  l'animation de textiles (2000-2003)

Lieu :   Laboratoire   Informatique   et Distribution (ID-IMAG), projet INRIA-APACHE, Grenoble.
Collaboration scientifique : Laboratoire GRAVIR-IMAG, équipe INRIA-iMAGIS, Grenoble.

Dirigée par :
  • Mme  Brigitte  Plateau (ID-IMAG, professeur de l'INPG),
  • M.  Jean-Marc  Vincent  (ID-IMAG,  maître de  conférences de  l'UJF),
  • M.  François  Faure (iMAGIS-GRAVIR-IMAG,  maître de  conférences de  l'UJF).

Jury  :

  • Mme  Marie-Paule Cani (présidente du jury / professeur de l'INPG / GRAVIR-EVASION / Grenoble),
  • M.  Serge  Miguet (rapporteur externe /  professeur de l'Université Lyon  2 / LIRIS / Lyon),
  • M.  Jean-Michel  Dischler   (rapporteur  externe / professeur  de l'ULP / LSIIT-IGG, Strasbourg),
  • Mme  Brigitte Plateau  (examinateur (directeur  de thèse)  / professeur de l'INPG / ID-IMAG / Grenoble),
  • M.  Jean-Marc Vincent (examinateur (co-encadrant) / maître de conférences de  l'UJF / ID-IMAG / Grenoble),
  • M.  François  Faure (examinateur (co-encadrant) /  maître de conférences de l'UJF / GRAVIR-EVASION / Grenoble).

Résumé de la thèse :

Le sujet  de ma  thèse dans le  domaine du parallélisme  portait sur l'élaboration de méthodes de calcul parallèle dans le cadre de l'animation  d'objets  3-D en  synthèse  d'image,  avec un  intérêt particulier envers le domaine de la simulation de textiles.


Problématique
En informatique graphique,  l'animation de textiles constitue un axe de recherche  particulièrement important de par ses nombreuses applications  dans le  monde industriel  auprès des  industries  de la confection et du  tissage et grâce à son  application directe dans les jeux  vidéos  ou encore  dans  les  films  d'animation, en  permettant notamment l'habillage de personnages virtuels.

Dans le  contexte industriel  pour le développement  d'activités liées aux textiles, la simulation  doit impérativement être réaliste.  C'est pourquoi  elle  est basée  sur  une  modélisation physique  de l'objet déformable afin de reproduire au mieux son comportement.  En effet, afin d'obtenir un  résultat réaliste, les lois fondamentales de la physique comme la vitesse, les forces (gravitation, vent, ...), les frottements,  doivent être  utilisées pour  modéliser le  mouvement de plusieurs objets  interagissants.  Les modèles  employés pouvant alors être  numériquement   très  complexes,   le  calcul  d'une   image  de personnages  varie de  la seconde  à plusieurs  minutes  suivant leurs complexités.

L'une  des  difficultés  principales  réside  donc  dans  l'obtention d'animations interactives en temps réel, c'est-à-dire dans la possibilité de  calculer 25  images de la  simulation de  textiles par seconde en autorisant des interactions de la part de l'utilisateur. De telles simulations  intéressent aussi  bien les industries  du textile que celles du loisir.  Au niveau industriel, cette simulation intégrée aux logiciels de Conception  Assistée par Ordinateur (CAO) permettrait de réduire  considérablement les  coûts de mise  au point en  ayant un aperçu direct de l'apparence d'un  vêtement sans avoir à le retoucher. A un niveau  plus ludique, il est facile  d'imaginer les répercussions que  cela aurait.   Imaginez-vous dans  un monde  virtuel et  voyez le réalisme que cela  apporterait de se voir avec  des vêtements ayant un comportement  semblable à la  réalité avec  l'intégration de  tous les mouvements des tissus en réponse à vos propres mouvements. Ainsi, les retombées  concernent à  la fois  l'industrie de  la confection  et du tissage,  mais également  les applications  de type  réalité virtuelle avec des défilés de mode virtuels.

Afin de  réaliser ces animations  interactives, tout en  conservant la même complexité de simulation pour des modèles de tailles importantes, nous   avons   choisi   de   diminuer   les   temps   de   calcul   en parallélisant  les algorithmes employés  et en  les exécutant ensuite sur une grappe de machines.

Pour  atteindre  l'objectif  de  ce travail  de  recherche,  plusieurs problèmes  majeurs  étaient  à  résoudre.  Tout  d'abord,  de  manière générale dans  le domaine  du parallélisme, ce  projet de  recherche a posé le problème des  contraintes de temps  réel et  de leur implication sur l'architecture des  systèmes.  En effet, dans le cadre d'une animation de textiles, les  temps d'exécution sont de l'ordre de la  minute, impliquant  des tâches  de  calcul de  petites tailles  et nécessitant par conséquent un parallélisme à grain très fin. Ensuite,  dans  le  cadre   plus  précis  de  la  simulation  d'objets déformables, un  point majeur  à résoudre résidait  dans l'élaboration des calculs dynamiques,  c'est-à-dire dans la réalisation des calculs  du mouvement du  tissu au  cours du  temps.  Enfin,  un autre point important  à résoudre concernait  l'obtention des images issues de  la parallélisation  de la simulation.   En effet,  dans le domaine de l'informatique graphique,  une simulation en temps réel n'a d'intérêt que si sa visualisation est possible.

Collaborations
Afin de répondre à l'ensemble de ces problèmes, ce travail de recherche, alliant calcul  haute performance,  réalité virtuelle  et informatique graphique, a  fait l'objet  d'une collaboration entre  le laboratoire d'Informatique et Distribution  (ID-IMAG) et le laboratoire GRAphisme, VIsion et Robotique (GRAVIR-IMAG), tous deux localisés à Grenoble.

Par ailleurs, ce travail a été partiellement financé par le contrat de la  thématique  prioritaire  n°4   "Sciences  et  technologies  de l'information, outils et applications" de la région Rhône-Alpes au travers du projet  SAPPE. Ce projet a été réalisé  dans le cadre d'une collaboration avec la société  Yxendis (Saint-Chamond), qui conçoit et commercialise  des produits logiciels  pour l'infographie  textile, en vue d'un transfert de technologie.

Architecture et environnement parallèle
Dès  le  commencement  de  ce  travail  de  recherche,  l'architecture parallèle visée  était de type grappe de machines.  Le choix concernant  l'utilisation   d'une  grappe  de  machines  plutôt  qu'une machine  multi-processeurs  dédiée  telle  qu'un  Cray  est  facilement compréhensible.  En  effet, à l'heure  actuelle, il est  beaucoup moins coûteux  de réunir plusieurs  ordinateurs ordinaires  que de  se doter d'une  machine  unique  multi-processeurs.   Par ailleurs,  une  grappe d'ordinateurs a  l'avantage d'offrir une  grande souplesse d'évolution grâce  à la  possibilité de  rajouter à  tout moment  des processeurs. Cette  dynamicité de l'architecture  n'est, hélas,  pas fournie  par les machines multi-processeurs. De plus, de nos jours, la grande majorité des entreprises  sont dotées  à la  fois d'un  réseau local  et  d'un parc informatique  conséquent.   Il  est  alors  facile  de  maximiser  les ressources  matérielles  existantes   en  employant  par  exemple  ces machines la nuit  en tant que grappe de  calcul, alors que d'ordinaire elles sont inexploitées.

Afin d'exploiter au maximum les  ressources offertes par une grappe de machines,  j'ai  utilisé  l'environnement  de  programmation parallèle Athapascan  développé   au  sein  du  laboratoire Informatique  et  Distribution  (ID-IMAG)  dans  le  cadre  du  projet INRIA-APACHE.   Le  parallélisme  au  sein de  cet  environnement  est exprimé sous la forme de  tâches de calculs s'exécutant en concurrence sur  la  machine  parallèle  cible.  L'emploi  de  cet  environnement, facilité  par  une  interface   applicative  de  haut  niveau,  permet d'assurer  la portabilité  des  programmes créés  en autorisant,  sans aucune   modification  des  programmes,   une  exécution   aussi  bien séquentielle, SMP  (machines multi-processeurs) que  distribuée.  Nous conservons     ainsi,    au     travers    de     la    programmation, l'extensibilité  offerte   initialement  par  la   grappe  de machines.

Ce projet de recherche a ainsi permis de valider l'approche de l'environnement  de programmation  parallèle  Athapascan, en mettant notamment  au point une application  avec des contraintes "temps  réel",  ainsi  que  le  contrôle dynamique  de  son ordonnanceur. En effet, il faut  savoir qu'au commencement de ma thèse cet  environnement   était  encore  en   cours  de  recherche   et  de développement par MM. Jean-Louis  Roch, Thierry Gautier et Rémi Revire (ID-IMAG,  projet APACHE)  et qu'il  n'avait  été testé  que sur  une application à gros grains de dynamique moléculaire, nommée "Takakaw".   Ainsi, tout  au long  de ma  thèse, j'ai  travaillé  en étroite collaboration  avec eux,  en  leur faisant  part  des améliorations  à apporter  à l'environnement  pour obtenir  de  meilleures performances dans le  cadre d'une  application à grains  fins :  communications pas assez  réactives,  graphe  de   flots  de  données  dupliqués  sur l'ensemble   des  noeuds,   surcoût  important   de  l'ordonnancement, contention du multi-threading, etc.

Au final, la validation  de l'environnement Athapascan a fait l'objet  d'une publication avec  MM.  Thierry  Gautier et  Rémi Revire (cf. publications).

Modélisation physique et parallélisation
Pour modéliser les  textiles, j'ai employé un modèle  physique de type masses-ressorts   basé   sur   une   discrétisation  de   l'objet   en particules. Ce modèle permet de  décrire la mécanique du textile en le discrétisant en  un ensemble de masses interagissants  entre elles par l'intermédiaire de ressorts plus ou moins complexes. La formulation de l'équation  du mouvement  associée  à  cet objet,  dictée  par la  loi fondamentale  de la  dynamique,  conduit alors  à  la résolution  d'un système d'Equations Différentielles Ordinaires (EDO).

Au  final,  les algorithmes  conduisant  à  la  génération des  images souhaitées peuvent se décomposer selon la structure suivante :

  • recherche des collisions possibles entre les objets de la scène,
  • calcul  d'une  matrice  représentant  l'environnement  global (positions des objets, forces, ...),
  • résolution de  systèmes  linéaires pour  la position  des points, leur vitesse et leur accélération.


L'implantation   parallèle  de  ces   calculs  dynamiques   a nécessité l'élaboration   de   structures    de   données   précises   pour   la parallélisation   des  algorithmes.   Notons  tout   d'abord   que  la parallélisation est basée sur un partitionnement de l'objet en sous-ensembles  de  particules,   la  taille  de  ces  sous-ensembles permettant de  définir la granularité de  l'algorithme parallèle. J'ai notamment  effectué une  étude  sur les  différents  paramètres de  la parallélisation,   résultant  essentiellement   de   la  décomposition physique de l'objet, afin d'obtenir les meilleures performances.

Par ailleurs, en employant ce partitionnement, j'ai implanté en parallèle deux méthodes  d'intégration  des  équations  du  mouvement  :  la méthode explicite  "leap-frog" et la  méthode d'Euler implicite. Dans le cadre  de l'intégration par la méthode  d'Euler implicite, les opérations  les   plus  coûteuses  en   calcul  correspondent  aux résolutions de  systèmes linéaires par la  méthode du gradient conjugué  impliquant   notamment  des  opérations  d'algèbre linéaire de type multiplications  de matrices creuses et de vecteurs. C'est pourquoi,  afin d'effectuer ces opérations  de manière efficace, j'ai  notamment  proposé  une  nouvelle structure  de  données parallèle.

Couplage simulation numérique parallèle / visualisation multi-écrans
Pour  effectuer  la   visualisation  de  l'application,  j'ai  utilisé l'environnement  de réalité  virtuelle Net  Juggler développé initialement  au  sein   du  Laboratoire  d'Informatique  Fondamentale d'Orléans  (LIFO), dont le  développement s'est  poursuivi au  sein du laboratoire   ID-IMAG.   Cet   environnement   permet  notamment   une visualisation de  l'application sur plusieurs écrans  en tirant parti des cartes graphiques disposées sur une grappe de machines.

L'emploi de  cet environnement a  imposé la réalisation  d'un couplage entre la simulation parallèle et la visualisation. J'ai ainsi implanté deux modules  distincts, une simulation  parallèle de textiles  et une visualisation multi-écrans,  que j'ai  ensuite couplés en  les faisant communiquer efficacement à l'aide de sockets et de primitives de diffusion  MPI (Message  Passing Interface). L'intérêt  d'une telle combinaison peut  permettre, à  terme, une meilleure  compréhension de simulations de  phénomènes très complexes nécessitant  de gros volumes de données dont la visualisation n'était pour le moment pas réalisable sans l'utilisation de machines fort coûteuses telles que des Silicon Graphics.

Du point de vue scientifique, l'étude d'algorithmes parallèles pour la synthèse d'animations a impliqué un  nouveau regard sur le domaine. En effet, la distribution des calculs sur une grappe de multi-processeurs et les  délais inévitablement variables de  récupération des résultats ont  remis  en  cause  l'approche synchrone  utilisée  jusqu'alors  en synthèse   d'animations.   J'ai   donc   implanté  un   modèle totalement  asynchrone  dans  lequel les  sous-ensembles  (simulation parallèle,    affichage,   interaction)   peuvent    être   exécutés indépendamment en  l'absence d'actions synchronisées.   Cette approche parallèle,  encourageant le  développement  d'algorithmes asynchrones, peut ainsi  permettre le  déploiement d'applications de  type serveurs d'animations   capables  de  gérer   efficacement  un   monde  virtuel multi-utilisateurs.

Ce  modèle  asynchrone  a  fait l'objet  de  différentes  publications réalisées notamment  avec les concepteurs  de Net Juggler,  MM. Bruno Raffin et Jérémie Allard, qui avaient également  testé  ce couplage  en  implantant  en  MPI une  simulation parallèle de fluides.  Au  final, nous avons réalisé une démonstration visualisée sur plusieurs écrans, nommée "démo valley", intégrant à l'intérieur d'un décor 3-D d'une vallée, leur simulation interactive de fluides écrite  en MPI, ma simulation interactive  de textiles écrite en Athapascan,  avec une simulation de prairie  implantée par MM. François Faure et  Franck Perbet (EVASION-GRAVIR).  L'utilisateur peut alors naviguer  dans ce monde  virtuel via un lapin  dont les effets  de  fourure  ont  été   réalisés  par  M.  Jérémie  Allard  en surperposant  plusieurs  couches  transparentes  de  textures.   Cette démonstration  est  visible  sur  la plate-forme  GrImage  de  l'INRIA Rhône-Alpes.

Il  est à  noter  que le  couplage  entre la  simulation parallèle  et l'environnement  multi-écrans ouvre  un nouveau  domaine  de recherche concernant  la gestion efficace  du  flux entre  applications parallèles  de  type   simulation  numérique  et  réalité  virtuelle, permettant  la   construction  d'applications  interactives  complexes traitant de gros volumes de données. Ce travail de recherche m'a ainsi permis  d'appréhender les  divers  problèmes liés  aux contraintes  de temps  réel et  au couplage  d'une visualisation  interactive  sur une simulation numérique.

Réalisations logicielles
Mon  travail  de  thèse  a  abouti  à  une  plate-forme permettant  d'effectuer une  simulation de  textiles en  parallèle pouvant être  visualisée sur  plusieurs écrans.  Actuellement, le  prototype que j'ai réalisé, d'environ  20 000 lignes de code C++ en Athapascan, permet  d'effectuer une simulation en parallèle d'environ un  million  de  particules  sur  une  grappe  de  200  PCs  avec  une visualisation sur 3 autres PCs.

Partitionnement Partitionnement valley valley

Fig1 : Partitionnement d'un pantalon (à gauche), images issues de la "démo valley" (à droite).


Perspectives

Cette plate-forme, issue d'un  travail de recherche, nécessite encore un  grand  nombre  d'améliorations.   L'une d'entre-elles  consiste  à complexifier  le modèle physique  employé en  ajoutant par  exemplecdes ressorts de flexions.  Cet ajout permettrait notamment d'affiner très facilement la courbure des tissus.

A court  terme, il  faudrait également ajouter  à cette  simulation de textiles les  phases de détection  et de traitement des  collisions du tissu avec  lui-même ou avec des  objets extérieurs. Pour  la phase de détection,  il  est  nécessaire  de  prendre  en  compte  les  aspects géométriques  des  objets contenus  dans  la  scène.  Les  algorithmes proposés  à   l'heure  actuelle   sont  généralement  basés   sur  des hiérarchies  de  boîtes englobantes.   Dans  notre  situation, il  est facile d'ajouter une  boîte englobante à chaque  bloc de particules issu du partitionnement du tissu  initial.  Une  structure hiérarchique des boîtes serait ensuite superposée.   Le point prometteur est que la hiérarchie   des  boîtes  pourrait   être  couplée   à  l'ordonnanceur dynamique.  Ainsi, la gestion  des collisions pourraient être améliorée par le fait  que les boîtes "voisines"  dans l'espace de l'objet géométrique seraient traitées sur des processeurs "voisins".

Puis le  traitement des collisions  pourra s'effectuer par  l'ajout de nouveaux ressorts entre les  particules. Cet ajout va modifier quelque peu les matrices des contributions des forces.  Mais ces modifications n'affectent  en   rien  les  propriétés  de  ces   matrices  qui  sont symétriques et creuses.  Elles n'ajoutent en effet qu'un nombre limité d'interactions  locales aux  particules.  Ces  changements  vont alors engendrer des  modifications du  graphe de flot  de données  associé à l'application. Mais ce dernier étant régénéré à chaque itération de la simulation, ces changements devraient être relativement transparents.

Il resterait  alors à  valider cette hypothèse  remettant en  avant le compromis entre  le découpage  de l'espace de  simulation et  celui de l'espace  objet.  La  mise au  point dépendra  alors du  "degré de collisions"  observé  dans la  scène  par rapport  aux tailles  des objets manipulés.

Par   ailleurs,  il  serait   également  intéressant   d'améliorer  le partitionnement  en  utilisant  une  librairie de  partitionnement  de graphe telles  que Scotch (développée  au LaBRI) ou  Metis et d'utiliser  la couche de  communication FlowVR  développée au sein du laboratoire ID-IMAG et du LIFO pour améliorer l'efficacité des communications  établies  entre les  différents  modules :  simulation parallèle, visualisation, interactions et collisions.

Enfin, afin d'exploiter au  maximum les ressources disponibles sur une plate-forme couplant des noeuds de  calculs avec des noeuds de rendu, il faudrait également paralléliser la  phase de rendu de la simulation de textiles.

Pour finir,  l'objectif final serait  de réaliser la  visualisation de plusieurs mannequins virtuels portant  des habits de manière réaliste, en intégrant tous les mouvements des tissus en réaction aux mouvements du mannequin virtuel.