Filtrage d'animations 3D

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

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 le filtrage ou le débruitage d'animations 3D. Pour cela on cherchera à étendre 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 une méthode de débruitage d'un maillage 3D dont les résultats semblent surpasser ceux des méthodes précédentes (voir image ci-dessous). Il utilise un opérateur laplacien 3D discret défini sur les arêtes du maillage. Pour l'adapter au cas des maillages animés, le projet se déroulera en 3 étapes successives :

  • 1. implémentation de l'algorithme décrit dans [1] ;
  • 2. extension au cas des maillages animés en remplaçant l'opérateur D proposé dans [1] par l'opérateur laplacien 4D discret sur les sommets implémenté l'an dernier ;
  • 3. développement d'un nouvel opérateur 4D discret sur les arêtes et remplacement de l'opérateur D de [1] par cet opérateur.
He schaefer.jpg
Un maillage très bruité (à gauche), débruité selon plusieurs méthodes. Le résultat de l'algorithme présenté dans [1] est celui de droite.

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 d'évaluer s'il est possible de filtrer/débruiter 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, ...