
Le film de Richard HeffronFutureworld, sorti en 1976 (American International Pictures), montre pour la première fois au grand public des images générées à partir de modèles 3D conçus et animés sur ordinateur. Depuis, l’usage de cette technologie s’est démocratisé : on parle d’images de synthèse, ou, en anglais, de computer-generated imagery (CGI). Elle est aujourd’hui largement employée dans les productions audiovisuelles : jeux vidéo, films d’animation, effets spéciaux, au cinéma comme dans les publicités… La qualité de ces images ne cesse d’augmenter et elles semblent « de plus en plus réelles ». Pourtant, les principes mathématiques qui les régissent sont toujours les mêmes !
Euler et ses angles
Tout commence avec une scène virtuelle, dans laquelle évoluent les différents objets 3D (modèles de personnages, véhicules, meubles…). C’est un espace euclidien à trois dimensions, c’est-à-dire que la position de chaque modèle est définie avec un vecteur, composé de trois nombres, qui décrit son écartement par rapport au point de repère central de la scène. Cependant, la position seule ne suffit pas pour parfaitement décrire la présence d’un objet : il faut aussi l’orienter. Cette orientation d’un objet en 3D est une problématique importante en mathématique : comment faire pour décrire des angles en trois dimensions ?
Au XVIII e siècle, le mathématicien et ingénieur Leonhard Euler inventa une représentation qui portera son nom : les angles d’Euler (voir les Angles, Bibliothèque Tangente 53, 2015). Au nombre de trois, ces nombres décrivent parfaitement une orientation, en effectuant trois rotations élémentaires de manière assez intuitive. Faisons l’expérience : placez-vous debout, et essayez de contrôler votre regard. Dans un premier temps, tournez sur vous-même d’un tour complet. Ensuite, hochez de la tête. Enfin, inclinez votre tête en la rapprochant d’une de vos épaules. Félicitations, vous venez d’effectuer les trois rotations élémentaires d’Euler !
Comme elle est intuitive, cette représentation est souvent utilisée par les artistes 3D, animateurs ou level designers. Historiquement, elle est utilisée en navigation maritime (un cardan représente exactement ces trois rotations) ou pour l’aviation. Dans ce dernier cas, les trois rotations que vous avez expérimentées sont appelées respectivement lacet, tangage et roulis.
Travail sur un personnage 3D (à gauche : image finale ; au centre : scène virtuelle, maillage du modèle et placement des lumières ; à droite, en haut : maillage du haut du corps, avec coloration simple).
Le défaut de la cuirasse
Néanmoins, cette technique possède un défaut, que l’on appelle le blocage de cardan. Dans notre expérience précédente, elle survient lorsque vous regardez exactement au-dessus de vous, les yeux rivés sur le zénith : la rotation de votre corps sur vous-même et la rotation de votre tête sur votre cou sont mélangées. C’est pour cette raison précisément que les ingénieurs préfèrent utiliser une autre représentation : le quaternion. Cet objet mathématique est idéal pour manipuler les orientations. C’est en fait le pendant du nombre complexe pour l’espace 3D : un nombre complexe peut représenter une orientation sur un plan 2D grâce à deux nombres réels ; un quaternion peut représenter une orientation en 3D avec quatre nombres réels. Ces « nombres » sont assez difficiles à manipuler car ils n’ont pas vraiment de sens physique. Concrètement, on peut s’imaginer un quaternion avec une autre représentation assez proche : une orientation peut se définir par une rotation autour d’un axe. L’axe est défini par trois nombres, et l’angle par un quatrième. Ces quatre nombres ne forment pas strictement un quaternion, mais l’idée est là.
Résumons-nous : une scène est créée avec des objets 3D. Chaque objet est positionné grâce à une matrice qui contient ses informations de position, rotation, et dimensionnement. Toutefois, les artistes ne manipulent pas directement cette matrice : elle est trop complexe ! Ils préfèrent représenter la position et le dimensionnement avec un vecteur, et la rotation avec des angles d’Euler.
L’animation d’un modèle 3D
Détaillons maintenant la construction d’un modèle animé. Elle est basée sur un maillage de points, une sorte de grillage qui connecte des points ou des sommets (ou vertices en anglais) pour constituer des surfaces triangulaires (ou faces). Ce sont ces sommets, et donc les faces ainsi définies, qui sont déplacées par les matrices de transformation (voir FOCUS).
Il est possible de plaquer une image sur ces surfaces, que l’on appelle texture. Pour ce faire, chaque sommet dispose, en plus d’une position dans l’espace (vecteur à trois composantes), des coordonnées d’un point de la texture auquel il est rattaché (vecteur à deux composantes), que l’on appelle communément coordonnées UV. Chaque sommet peut disposer d’autres informations, par exemple le vecteur normal des faces, qui sert dans le calcul de l’éclairage. En outre, on utilise de nos jours plusieurs textures pour disposer de plus de contrôle sur le rendu final de l’image.
Pour animer un modèle, il « suffit » de déplacer les sommets en fonction du temps. Mais un artiste ne peut pas animer individuellement chaque sommet du maillage : un beau personnage de jeu vidéo en possède plusieurs dizaines de milliers, et encore bien plus dans les films d’animation !
L’astuce la plus courante, surtout pour les modèles d’êtres vivants, consiste à équiper le modèle d’un squelette, constitué d’« os ». Ils ne correspondent pas aux vrais os anatomiques, mais permettent de différencier les parties du modèle qui ont des mouvements indépendants. Ainsi, un véhicule ou un meuble peuvent aussi avoir un squelette. On anime principalement les os en rotation (les angles d’Euler deviennent fonctions du temps), et afin de donner une sensation de fluidité, on anime souvent leur dimensionnement également. Les sommets vont être rattachés aux os, opération qui s’appelle le skinning (terme qui signifie « recouvrir de peau », puisqu’on plaque le maillage texturé sur un squelette). Ainsi, il devient plus facile d’animer le modèle puisqu’il y a peu d’os par rapport au nombre gigantesque de sommets et que les sommets vont automatiquement suivre les mouvements des os.
Un sommet peut être attaché à plusieurs os, pour permettre des animations plus « organiques ». Imaginez que votre corps soit un modèle 3D, et regardons ce qu’il se passe pour les sommets qui sont dans les plis du coude. Si vous bougez votre bras en gardant l’épaule fixe, ils se déplacent : ils sont donc attachés au bras. Mais si vous bougez votre avant-bras en gardant le bras fixe, ils se déplacent légèrement aussi. Ils sont donc rattachés aux deux « os » qui représentent respectivement le bras et l’avant-bras.
Mais animer directement les os est encore trop complexe : un personnage humain en compte facilement plus de cent cinquante ! Pour faciliter la tâche des animateurs, on construit un rig, c’est-à-dire un ensemble d’outils appelés contrôleurs. Chaque contrôleur supervise plusieurs « os ». Ainsi, en animant un contrôleur, on anime un ensemble d’« os » de manière plus fine que si l’on devait animer chaque « os » individuellement.
Quelle que soit la méthode choisie, animer des sommets, des os, ou des contrôleurs… revient à changer des valeurs en fonction du temps. Pour cela, on utilise le concept d’image clé (ou keyframe), qui définit une pose. Un jeu vidéo typique affiche soixante images par seconde, et là encore, il est impossible pour un artiste d’affecter une valeur pour chaque image. On définit donc uniquement quelques images clés, à des moments importants de l’animation, et toutes les valeurs entre deux images clés vont être interpolées. On utilise souvent des courbes de Bézier pour ajuster les interpolations.
Vers une animation fluide
Les films d’animation peuvent s’arrêter là pour les animations, mais les jeux vidéo doivent aller plus loin encore. En effet, un jeu se doit de réagir aux actions du joueur à n’importe quel moment, et l’animation qui en découle doit être fluide. Ainsi, un jeu se compose de plusieurs séquences d’animation, qui sont ensuite fusionnées. Par exemple, lorsqu’un personnage est à l’arrêt, il y a souvent une animation en boucle dans laquelle le personnage se repose en bougeant un peu, pour donner l’impression d’un être vivant. Sitôt que le joueur ordonne d’aller dans une direction, le personnage se met en marche. Mais passer de l’animation de repos à l’animation de marche ne peut pas être fait instantanément, car cela produirait un changement de pose irréel. Il faut donc effectuer une transition de l’une à l’autre avec un fondu, c’est-à-dire réduire progressivement l’influence de la première animation tout en augmentant celle de la seconde…
Bref, animer un modèle nécessite plusieurs étapes préparatoires, qui permettent de créer des outils pour les animateurs. Ensuite, l’animation s’effectue à travers des images clés, qui permettent de définir des poses clés, et l’animation finale se base sur les interpolations de ces poses. C’est le secret de toute bonne animation !