Manipulation rigide d'animations 3D

De Ensiwiki
Révision de 22 avril 2014 à 09:51 par Hetroyf (discussion | contributions) (Cadre du projet)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
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.
  • Nombre d'étudiants : 3 ou 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.

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 d'utiliser l'opérateur laplacien 4D implémenté l'an dernier à un autre problème, qui concerne la manipulation et la déformation d'animations 3D. Pour cela on étendra un algorithme très populaire défini pour des maillages statiques au cas de nos maillages animés, et on comparera avec un algorithme existant.

Travail demandé

L'algorithme décrit dans [1] propose une méthode de déformation aussi rigide que possible d'un maillage 3D (voir image ci-dessous) : l'utilisateur sélectionne la limite de la zone à déformer (en rouge sur l'image) puis déplace un sommet du maillage (en jaune sur l'image), et l'algorithme calcule automatiquement la déformation du reste des sommets du maillage. L'algorithme utilise un opérateur laplacien 3D discret. Pour l'adapter au cas des maillages animés, il suffit de remplacer cet opérateur 3D par l'opérateur 4D implémenté l'an dernier. Le projet se déroulera en 3 étapes successives :

  • 1. implémentation de l'algorithme décrit dans [1] dans le cas des animations ;
  • 2. implémentation d'un autre algorithme de manipulation d'animations [2] ;
  • 3. comparaison des résultats des deux algorithmes et conclusions : avantages/inconvénients de chacune des approches.
Sorkine alexa.jpg
Le maillage de gauche est déformé interactivement selon l'algorithme décrit dans [1].

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 modifier la forme et le mouvement indépendamment l'un de l'autre.

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.

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, ...