M2 - Images

TP 2 : Modélisation récursive



animation

Partie 1 : affichage

Comment ça marche ?

Le squelette est décrit par un arbre, chaque articulation est un noeud de l'arbre.
Exemple :


  joint 'Hips'
        joint 'LeftUpLeg'
            joint 'LeftLowLeg'
                joint 'LeftFoot'
                    joint 'ltoes'
                        joint 'end'

        joint 'RightUpLeg'
            joint 'RightLowLeg'
                joint 'RightFoot'
                    joint 'rtoes'
                        joint 'end'

Chaque articulation définit un changement de repère, il est possible de bouger un orteil sans bouger le reste de la jambe, mais il est également possible de modifier l'orientation de la cuisse (LeftUpLeg par exemple) et de modifier la position des orteils en fonction.

Chaque articulation (ou joint) est positionnée et orientée dans le repère précédent de la hiérarchie : LeftUpLeg est positionnée par rapport à Hips, LeftLowLeg par rapport LeftUpLeg (et donc indirectement par Hips), etc.

Toutes ces données sont stockées dans un fichier .bvh, vous pouvez utiliser libbvh pour charger, extraire les informations puis afficher une pose complète du squelette, puis son animation.

Les informations nécessaires (translation et orientation) s'obtiennent ainsi :
  1. translation : joint_get_offset() + joint_get_position(), les translations sont décomposées en deux parties, une rigide (offset), et une autre animée (position), il faudra donc les composer.
  2. orientation : joint_get_orientation(valeurs[3], axes[3]), les orientations sont données dans un ordre précis (angles d'euler), il faudra le respecter lors de la composition.

    Q1: installez libbvh et téléchargez un fichier d'exemple walk.bvh. Chargez une animation, et récupérez les informations pour afficher la première image de l'animation.

    Q2: affichez une image de l'animation.
    Q3: définissez une caméra, comment déplacer interactivement le point de vue et l'orientation de la caméra ?

Partie 2 : animation

    Q1. affichez toutes les images de l'animation.

Partie subsidiaire :

    Q1. utilisez openGL directement pour réaliser tous les affichages.
    Q2. habillez votre squelette. Commencez par remplacer les segments par des 'cubes' allongés.