TD3 : Déformations du modèle, FFD

Contenu du TD

Free-Form Deformations

Le squelette de programme fourni contient les procédures pour charger et afficher trois modèles (le pingouin, la théière et un cube). Pour chaque modèle, il calcule et stocke la boite englobante (bb[model][MIN/MAX][0/1/2]).

Il trace également une grille de points de contrôle (drawGrid()).

Vous pourrez également expérimenter avec le code pour les Function-Based Deformations (qui contient aussi le code de tracé des splines, des courbes de Bézier et des courbes de subdivision).

Les deux programmes partagent le code de gestion de la trackball avec le TD1. Pour cette raison, le dossier TD3 doit se trouver au même niveau hiérarchique que les dossiers TD1 et common (qui provient du TD1).

Travail Dirigé

Pour le TD 3, vous devez implémenter une déformation des modèles en utilisant des FFD.

Dans le programme :

Accélérations

Vous pouvez constater que le programme est assez rapide tant qu'il ne s'agit que de représenter la théière ou le cube, mais assez lent pour le modèle du pingouin. Cela vient du fait qu'on calcule les transformations sur le modèle à chaque image.

OpenGL propose un mécanisme permettant de stocker une série d'ordres graphiques, les display lists. On va s'en servir pour éviter de tout recalculer à chaque image, mais seulement lorsque le modèle change.

Avec cette série d'ordres, vous devriez observer une accélération de l'affichage. Vous pouvez aussi représenter la grille de points de contrôle en temps réel, et ne modifier le modèle que lorsque l'utilisateur a relâché la souris.

Squelette et FFD

En reprenant le code précédent, faites un modèle du pingouin avec plusieurs FFD sur le corps (une pour chaque bras, une pour le ventre, une pour la tête, etc.) Animez le modèle de pingouin.