Partie 1 : animation de personnages
Il existe de nombreuses techniques d'animations de
personnages, le thème du TD est d'utiliser une technique simple
permettant de reconstruire, pour chaque instant, la description
complète du personnage afin de recréer une animation
fluide.
L'animation que vous allez manipuler est
décrite comme un ensemble de maillages correspondant chacun
à la description complète du personnage à un
instant t. Pour reconstruire l'animation, il suffit d'interpoler la
position de chaque sommet du maillage entre sa position
précédente et sa position suivante.
Partie 2 : description du maillage
Le personnage est décrit à chaque
instant par un maillage composé de sommets et de faces
(quadrangles). La fonction
model_maya_obj() permet de charger
un modèle au format MAYA (.obj) et de le représenter en
mémoire comme un ensemble de faces :
struct
{
int mat; // indice de la matiere
int norm; // indice de la normale geometrique de la face
int (*v)[3]; // parametres des sommets (indice du sommet, indice des coordonnées de texture, indice de la normale)
int size; // nombre de sommets alloués
int n; // nombre de sommets de la face
} FACE;
Le modèle complet comporte également
un ensemble de matières, un ensemble de normales, un ensemble de
coordonnées de texture et évidement, un ensemble de
sommets. Tous les ensembles sont représentés par des
tableaux dynamiques.
La fonction
model_display() permet d'afficher un modèle.
Ces deux fonctions sont disponibles dans maya_obj.c et maya_view.c (cf. lien ci-dessous).
Partie 3 : réalisation
Réalisez un programme qui charge toutes les
positions intermédiaires et qui les affiches successivement.
Modifiez votre programme afin d'interpoler la position de chaque sommet en fonction de l'instant t.
Les fonctions de chargement et d'affichage du maillage sont
ici, le modèle bigguy de nvidia est
ici.