Classification d'animations 3D : une nouvelle approche

De Ensiwiki
Aller à : navigation, rechercher

Pour ce sujet, il est possible de bénéficier d'un encadrement spécifique sur le thème des méthodes agiles. Pour plus de détails, voir la page Méthodes agiles en projet de spécialité.

Cadre du projet

  • Encadrant : Franck Hétroy-Wheeler, en collaobration avec Tony Tung (université de Kyoto, Japon).
  • Nombre d'étudiants : 2 à 4.
  • Prérequis : programmation C++, graphique 3D, algèbre linéaire, géométrie.


Contexte

On s'intéresse aux animations 3D, qui sont simplement définies mathématiquement comme un maillage (ensemble de sommets, arêtes et faces le plus souvent triangulaires) se déformant au cours du temps. Une animation 3D peut être créée manuellement par un infographiste, mais ce travail prend du temps si on souhaite un résultat de bonne qualité (pour le cinéma par exemple). Ainsi, de plus en plus les professionnels partent de données réelles, correspondant à la capture vidéo d'un acteur effectuant une action. L'aide de marqueurs (on parle alors de motion capture) ou d'un ensemble de caméras disposées autour de la scène permet alors de reconstruire un maillage 3D à chaque pas de temps (voir images ci-dessous).

Serkis.jpg
Grimage.jpg
Motion capture : l'acteur Andy Serkis jouant Gollum dans une scène du Seigneur des Anneaux.
Reconstruction virtuelle multi-caméras.

Ce projet entre dans le cadre d'une collaboration de recherche avec l'université de Kyoto au Japon. Des réunions téléphoniques ou via Skype avec le Japon sont à prévoir.

Objectif

Le projet proposé fait suite à un projet de spécialité réalisé l'année dernière. Le code des étudiants vous sera fourni (sans garantie de bon fonctionnement, c'est un code d'étudiants Ensimag !). Ce code implémente un descripteur d'animations 3D calculé à partir d'un opérateur laplacien (divergence du gradient) défini sur nos animations qui sont des données quadri-dimensionnelles (trois dimensions spatiales + le temps) discrètes. Un paramètre d'échelle \alpha permet notamment de faire varier l'influence du temps, donc du mouvement, par rapport à celle de la géométrie. L'objectif du projet est de développer une nouvelle approche permettant de comparer les animations 3D, en utilisant l'opérateur laplacien 4D implémenté l'an dernier. Pour cela on étendra un algorithme récemment proposé pour des maillages statiques au cas de nos maillages animés.

Travail demandé

L'algorithme décrit dans [1] propose de définir la notion de différence entre maillages 3D (voir image ci-dessous) sous forme matricielle et à l'aide de l'opérateur laplacien. L'article propose ensuite plusieurs applications de cette notion de différence entre formes, comme la classification, la recherche d'analogies, l'interpolation, la recherche dans une base de modèles, ... Pour adapter la définition proposée au cas des maillages animés, il suffit de remplacer l'opérateur laplacien 3D par l'opérateur 4D implémenté l'an dernier, et de faire une décomposition spectrale de la matrice correspondante. Le projet se déroulera en 3 étapes successives :

  • 1. implémentation d'une méthode simple et rapide de décomposition spectrale de la matrice laplacienne 4D (la méthode sera fournie) ;
  • 2. implémentation des matrices de différence définies dans [1] selon l'option 2 page 5, et d'une ou de plusieurs applications au choix ;
  • 3. implémentation de l'algorithme de décomposition spectrale couplée proposé dans [2] et utilisation pour implémenter les matrices de différence définies dans [1] selon l'option 3 page 5, ainsi qu'une ou plusieurs applications au choix.
Rustamov et al.jpg
La différence entre le modèle de gauche sur la ligne du bas et un des 4 suivants est similaire à la différence entre le modèle de gauche sur la ligne du haut et le modèle déformé correspondant.

Chacune de ces étapes devra être validée à travers des tests extensifs sur des modèles variés (étudier notamment l'influence des divers paramètres sur le résultat). Il sera notamment intéressant de faire varier le paramètre \alpha afin de calculer une notion de différence prenant plutôt en compte la forme ou le mouvement.

Bibliographie

Détails techniques

La programmation se fera en C++, sous Linux. Une mini interface graphique pour maillages statiques et animés vous sera fournie. Elle tourne sous OpenGL, Qt et utilise libQGLViewer. Pour les calculs numériques, Eigen (bibliothèque C++ d'algèbre linéaire) sera utilisée. Matlab pourra également être utilisé si besoin (notamment pour les décompositions spectrales).

Autres logiciels utiles

  • Graphite est un logiciel Open Source développé à l'INRIA de Nancy et particulièrement spécialisé dans les algorithmes de calcul numérique sur les maillages.
  • MeshLab est un logiciel Open Source qui comprend de très nombreux algorithmes sur les maillages : visualisation, nettoyage, remaillage, lissage, ...