Armature, la cinématique nouvelle génération
Jusqu'à la version 1.8, la cinématique inverse (IKA) était gérée mais présentait de nombreux défauts. Depuis la version 2.20, les IKA ont laissé place à un nouveau système d'animation résolument plus puissant et plus évolué qui permet d'animer de façon plus cohérente vos personnages : les Armatures.
Au cours de cette leçon, qui s'étendra sur deux articles, nous allons voir comment mettre en place une armature, comment lui lier un objet maillé, et enfin comment animer le tout. Mais commençons par les bases de modélisation de cette nouvelle fonction qui est, comme d'ordinaire, accessible via le sous-menu ADD en pressant la barre d'espace.
Tout d'abord, il ne faut pas oublier qu'à instar d'un squelette de cinématique inverse, une armature est uniquement un outil permettant l'animation d'objets à l'origine « rigides ». L'armature ne sera pas visible sur les images issues de calculs. Seul l'objet sur lequel elle agit est visible sur les rendus d'animations.
Avant de passer à la modélisation d'un squelette complet, abordons cette fonction avec une petite armature. Dans la vue de dessus, créez une armature dont le premier élément fera environ deux carreaux de longueur. Pour valider sa création, cliquez sur le bouton de gauche de la souris. Immédiatement, Blender fige l'élément en cours d'édition et en crée un nouveau à son extrémité. Donnez la même longueur et la même orientation à ce nouvel élément. Cette fois, après avoir validé, pressez la touche Echap afin d'abandonner le mode de création d'éléments. L'élément en cours d'édition est automatiquement effacé. Jusque-là, rien de bien différent par rapport à l'ancienne fonction, si ce n'est l'aspect des éléments de l'armature. Nous allons créer maintenant un nouvel élément, mais dont l'origine va se trouver à l'extrémité du premier élément créé. Pour cela, avec le bouton de droite de la souris, cliquez sur le point de liaison central des deux éléments pour l'activer et pressez la touche E. A la requête OK? Extrude Bone Segments, validez avec le bouton de gauche de la souris. Ainsi, un nouvel élément sera créé. Placez-le perpendiculairement aux deux autres.
Parmi les nouveautés, vous avez pu voir qu'il est possible de créer un élément à l'extrémité de n'importe quel élément déjà en place. Contrairement à l'ancienne fonction, la taille et l'orientation de chaque élément sont modifiables de façon indépendante et apporte une grande souplesse lors de la modélisation.
Lorsque le mode d'édition est activé, comme c'est actuellement le cas, l'icône représentant un triangle aux sommets de couleur jaune est activée dans la barre d'icônes des vues. Pour quitter ce mode, il suffit de presser la touche TAB ou de désactiver l'icône.
Puisque nous sommes toujours dans le mode d'édition, activez tous les éléments en pressant la touche A. Tous actifs, ils sont de couleur jaune. Ouvrez le menu d'édition des objets. Blender y montre les différents éléments, les liaisons entre ces éléments ainsi que le type de liaison. La figure 1 représente cette mini-armature ainsi que le menu d'édition correspondant.
Une nouvelle icône, représentant une silhouette genre "Pacman", spécialement dédiée aux armatures a fait son apparition à la gauche de l'icône d'activation du mode d'édition. Visible uniquement lorsqu'une armature est active, elle permet d'activer le mode d'animation de l'armature. Dans ce mode, les éléments sont de couleur bleue. Chaque élément peut se voir attribuer une position clé. Nous verrons plus loin la méthode d'animation.
Après ce petit exercice, nous allons nous intéresser à une réalisation plus complète puisque nous allons modéliser un personnage. Initialisez donc Blender et placez le curseur 3D à l'origine des axes en pressant les touches Shift C. Dans la vue de face, créez une armature verticale orientée vers le haut dont le premier élément aura une longueur d'environ un quart de carreau. L'élément suivant fera 6,5 carreaux. Le troisième fera 1,5 carreaux et enfin le quatrième 3,5 carreaux. Nous venons de modéliser la partie qui matérialisera la colonne vertébrale, le cou et la tête du personnage. La figure 2 représente cette armature.
Déplacez le curseur 3D d'un carreau vers la droite. Pour cela, cliquez au plus proche de la grille sur la position désirée, puis pressez Shift S et sélectionnez Curs->Grid. A partir de ce point, nous allons modéliser le squelette d'une jambe. Sans quitter l'édition, créez une nouvelle armature en sélectionnant Armature dans le sous-menu ADD.
Orientez le nouvel élément verticalement vers le bas et donnez-lui une longueur de cinq carreaux. Faites de même pour l'élément suivant et pressez la touche Echap après avoir validé la création du second élément. Passez dans la vue de côté et activez l'extrémité du second élément de la jambe avec le bouton de droite de la souris. Créez un nouvel élément qui va matérialiser le pied en pressant la touche E. Orientez ce dernier horizontalement vers la gauche et donnez-lui une longueur de 3 carreaux. La figure 3 représente la jambe complète.
La jambe de gauche étant terminée, nous allons passer à la modélisation de celle de droite (à gauche à l'écran). Ici, rien de plus simple. Activez l'axe de pivot du premier élément de la jambe, puis tout en maintenant la touche Shift enfoncée, activez l'extrémité de chaque élément qui la compose afin que l'armature complète soit active. L'autre solution est de placer simplement le pointeur de la souris sur l'armature de la jambe et de presser la touche L afin de l'activer entièrement. Repassez ensuite dans la vue de face, pressez les touches Shift D et déplacez le double ainsi créé de deux carreaux vers la gauche en maintenant la touche Ctrl enfoncée. La figure 4 représente les deux jambes.
Nous allons à présent mettre en place les membres supérieurs. Activez l'extrémité du deuxième élément de l'armature de la colonne vertébrale et centrez le curseur 3D sur cette position (Shift S puis Curs->Sel). Via le menu ADD, dans la vue de face, créez une nouvelle armature horizontale composée de quatre éléments et orientée vers la gauche de la vue. Le premier élément aura une longueur d'un carreau, le second fera 4,5 carreaux de long, le troisième 4 carreaux et enfin le quatrième un carreau. Sélectionnez l'armature complète (touche L) et déplacez-la d'environ un carreau et demi sur la gauche. Cette armature matérialise le bras droit et est représentée en figure 5.
Pour créer le bras gauche, nous allons le dupliquer puis l'inverser. L'armature étant toujours active, pressez les touches Shift D. Blender vient de créer un double. Sans le déplacer, pressez la touche S puis la touche X. L'orientation de l'armature est inversée de 180 degrés sur l'axe X. Validez avec la touche Entrée. Déplacez le double de 12,5 carreaux vers la droite (Dx). La figure 6 représente l'armature complète du personnage, composée de cinq armatures distinctes.
Bien que faisant partie du même objet, ces cinq armatures ne sont pas liées. Du coup, en cas de déplacement de l'armature de la colonne vertébrale, les quatre autres resteront sur leur position respective. Pour remédier à cela, nous allons lier les armatures entre elles.
Ouvrez le menu d'édition des objets. Activez le bouton Draw Names afin que soit affiché le nom de chaque élément sur l'armature. Il est nécessaire que tous les éléments soient sélectionnés pour que soit affiché le détail de la configuration de chacun d'eux. Le tableau ainsi obtenu dans le menu de configuration des objets indique les dépendances, le type de liaison et le degré d'influence sur l'objet lié.
Activez donc la totalité des éléments avec la touche A et ouvrez le menu de configuration des objets. A ce stade, nous n'avons pas encore lié d'objet à l'armature. La figure 7 représente l'armature activée avec le nom des éléments, ainsi que le détail de sa configuration actuelle.
Vous pouvez remarquer que l'élément supérieur de la jambe de gauche (à droite sur l'écran) nommé par défaut Bone.004 n'est relié à aucun autre élément par son point de pivot. Cela se traduit dans le tableau de configuration par la mention -1 dans le bouton Child of de la ligne qui concerne cet élément.
Nous allons lier cet élément à l'extrémité de l'élément inférieur de l'armature de la colonne vertébrale nommé Bone. Pour cela, cliquez sur le bouton Child of portant la mention -1 et sélectionnez Bone. Vous pouvez remarquer la ligne pointillée qui indique la liaison entre le point de pivot de l'élément Bone.004 et l'extrémité de l'élément Bone. Un bouton IK non activé est apparu.
Le fait de l'activer déplacerait le point de pivot de l'élément enfant pour le placer à l'extrémité de l'élément parent. Cela n'étant le but recherché, laissez-le inactif. La figure 8 représente la jambe sans et avec la liaison. La troisième partie de la figure montre ce que l'on obtient si le bouton IK est activé. Faites de même avec l'autre jambe.
Enfin, procédez de façon similaire avec les membres supérieurs en liant les éléments Bone.010 et Bone.014 à l'élément Bone.001. Comme précédemment, n'activez pas le bouton IK.
Ainsi configuré, lorsque l'élément Bone.001 tournera autour de son point de pivot, les membres supérieurs suivront le mouvement. En cas de mouvement de l'élément Bone, c'est l'ensemble de l'armature qui se déplacera.
Nous allons maintenant renommer chacun des éléments en fonction de leur emplacement. Cela ne paraît pas être important dans l'immédiat, mais notez bien l'orthographe et la casse de chaque nom car cela nécessaire lors de la liaison avec l'objet maillé que nous modéliserons par la suite. Saisissez donc les noms suivants dans les boutons BO: Bone.XXX dans le tableau de configuration de l'armature:
Bone: Reference
Bone.001: Buste
Bone.002: Cou
Bone.003: Tete
Bone.004: Cuisse gauche
Bone.005: Mollet gauche
Bone.006: Pied gauche
Bone.007: Cuisse droite
Bone.008: Mollet droit
Bone.009: Pied droit
Bone.010: Epaule droite
Bone.011: Biceps droit
Bone.012: Avant bras droit
Bone.013: Main droite
Bone.014: Epaule gauche
Bone.015: Biceps gauche
Bone.016: Avant bras gauche
Bone.017: Main gauche
Lors de la saisie des noms, Blender renomme automatiquement les éléments dans les vues et applique aussi les noms correspondants dans les boutons de déclaration des liaisons (Child of). La figure 9 montre l'armature renommée comme indiqué ci-dessus.
A ce stade, le travail sur l'armature est terminé. Il reste maintenant à modéliser « l'enveloppe charnelle » de notre personnage. Pour cela, nous allons utiliser un objet maillé avec la fonction « SubSurf » activée. Quittez donc l'édition de l'armature en pressant la touche TAB. Vous pouvez sauvegarder votre travail avant de poursuivre par sécurité. Même si Linux est stable, Blender souffre encore de quelques sorties inexpliquées.
Je vous propose tout d'abord d'aménager l'espace de trace avec uniquement les vues de face et de côté côte à côte. Puis, dans la vue de face, créez un cube à l'origine des axes. (ADD->Mesh). Ouvrez le menu d'édition des objets et activez le bouton SubSurf. Passez la variable Subdiv qui définit la finesse du maillage à 2. Toutes les manipulations qui suivent vont être faites en mode édition sans jamais le quitter.
Tous les points étant actifs, déplacez le cube d'un carreau sur la gauche de l'écran. Dans la vue de côté, sélectionnez les points de gauche du plan supérieur du cube et déplacez-les vers le bas de 0,5 carreau (Dz). Dé-sélectionnez les points avec la touche A.
Pour mémoire, afin d'obtenir un pas de translation de 0,1 carreau, il faut maintenir les touches Shift + Ctrl enfoncées.
Sélectionnez ensuite les points supérieurs de droite et déplacez-les de 1,5 carreaux sur la droite (Dy) et de 0,7 carreau vers le bas (Dz). Les points inférieurs de droite doivent être déplacés de 1,1 carreaux vers la droite et enfin les points inférieurs gauches de 0,2 carreau vers le bas. Dans la vue de face, sélectionnez les points de gauche et déplacez-les de 0,3 carreau vers la gauche. La figure 10 représente la première phase de la modélisation du corps. Oui... je vous l'accorde, nous avons modélisé une vulgaire patatoïde !
Dans la vue de côté, sélectionnez le plan supérieur du cube et extrudez-le (touche E). Déplacez ce dernier de +0,3 carreau sur l'axe Y et de +0,4 carreau sur l'axe Z. Déplacez les points de droite de -1 carreau sur Y et de +0,4 carreau sur Z. Dans la vue de face, déplacez les points de gauche du plan supérieur de +0,4 carreau sur X.
Dans la vue de côté, extrudez le plan supérieur et déplacez-le de -0,3 carreau sur Y et de +4,9 carreaux sur Z. Déplacez les points de droite du plan supérieur de +0,6 carreau sur Y. Dans la vue de face, déplacez les points de gauche de ce même plan de -0,4 carreau sur X.
Sélectionnez maintenant le plan inférieur et extrudez-le. Placez-le 0,1 carreau au-dessous de sa position d'origine. Pressez la touche S et réduisez son échelle à 0,975. Extrudez-le à son tour et déplacez-le de 0,7 carreau sur Y et -3,3 carreaux sur Z.
Déplacez les points de droite du plan de -1,4 carreaux sur Y et de -0,2 carreau sur Z.
Dans la vue de face, sélectionnez le plan inférieur. Nous allons le redimensionner, mais uniquement sur l'axe X. Pour ce faire, pressez la touche S et déplacez le pointeur de la souris horizontalement, puis tout en déplaçant la souris, cliquez sur son bouton central (ou sur le bouton de gauche avec la touche Alt enfoncée). Validez lorsque la variable SizeX est égale à 0,89. Extrudez le plan et déplacez-le de -0,2 carreau sur Z.
Dans la vue de côté, extrudez à nouveau la sélection et déplacez-la de -0,4 carreau sur Y et de -0,2 carreau sur Z. Placez les points de droite du plan inférieur et placez à 1,4 carreaux sur Y et à 0,2 carreau sur Z de leur position initiale.
Extrudez le plan inférieur et déplacez-le de 0,8 carreau sur Y et de -4,4 carreaux sur Z. Déplacez les points de droite de ce dernier de 2,4 carreaux sur Y et de 0,1 carreau sur Z.
Dans la vue de face, sélectionnez le plan complet et redimensionnez-le jusqu'à ce que la variable SizeX soit égale à 0,62 (les variables Size Y et Size Z conservant leur valeur d'origine). Extrudez le plan actif et déplacez-le de -0,4 carreau sur Y et de -1,5 carreaux sur Z. Déplacez les points de droite de 1,5 carreaux sur Y et de 0,2 carreau sur Z. Dans la vue de face, portez l'échelle du plan à +1,6 sur l'axe X (touche S + bouton du milieu de la souris).
Extrudez le plan et déplacez-le de -0,3 carreau sur Z. Dans la vue de côté, déplacez les points de droite de -0,5 carreau sur Z. Sélectionnez les points de gauche du plan inférieur ainsi que les points de gauche des deux sections placées au-dessus de ce dernier. Extrudez la sélection et déplacez-la de -2,5 carreaux sur Y. Sélectionnez les points de gauche du plan inférieur et déplacez-les de 0,2 carreau sur Y.
Dans la vue de face, sélectionnez tous les points du plan inférieur et passez son échelle à 0,88 sur X. Enfin, extrudez-le et sans le déplacer, pressez la touche Entrée. Le fait de cumuler deux maillages identiques sur les mêmes coordonnées permet d'obtenir des surfaces planes avec l'option SubSurf activée. Les figures 11 et représentent diverses étapes de la modélisation.
A présent, sélectionnez le plan supérieur de l'objet et extrudez-le. Positionnez-le deux carreaux au dessus de sa position d'origine (Dz). Pressez la touche W et cliquez sur Subdivise afin de multiplier le nombre de points qui le compose.
Dans la vue de face, sélectionnez les points de droite ainsi que les points du segment central. Extrudez la sélection et déplacez-la de +0,9 carreau sur l'axe Z. Sélectionnez les trois points de gauche du plan et déplacez-les de +0,5 carreau sur X. Dans la vue de côté, re-sélectionnez le plan et passez son échelle à 0,52 sur l'axe Y.
Extrudez la sélection et déplacez-la de +0,3 carreau sur Z. Dans la vue de face, activez uniquement le point central du segment de droite. Centrez le curseur 3D sur celui-ci en pressant Shift S et en cliquant sur Curs->Sel. Dans la barre d'icône de la vue de face, activez celle qui représente le curseur 3D. Ainsi, lors du changement d'échelle que nous allons opérer sur la sélection, le curseur 3D servira de point de centre. Du coup, le segment sur lequel il est placé ne bougera pas sur l'axe X. Activez tous les points du plan et passez l'échelle de la sélection à 1,83 sur tous les axes. Veillez bien à pressez la touche S dans la vue où l'icône du curseur 3D est active à savoir la vue de face.
Extrudez la sélection et déplacez-la de 3,1 carreaux sur l'axe Z. Centrez à nouveau le curseur 3D sur le point central du segment de droite dans la vue de droite comme expliqué plus haut. Activez ensuite tous les points du plan supérieur et passez son échelle à 0,75 sur les trois axes (figure 13).
Nous allons modéliser maintenant le bras du personnage. Pour cela, dans la vue de face, sélectionnez le plan vertical qui se trouve juste sous le coup à sa gauche. Extrudez-le et déplacez-le de -1,2 carreaux sur X.
Remplacez la vue de côté par la vue de dessus. Puis, dans cette dernière, passez l'échelle de la sélection à 0,57 sur Y. Revenez dans la vue de face et passez son échelle à 0,85 sur Z. Sélectionnez le segment supérieur de la section précédente qui forme l'épaule et déplacez-le de +0,2 carreau sur Z.
Sélectionnez à nouveau le plan vertical de gauche du bras, extrudez-le et déplacez-le de -1,6 carreaux sur X. Passez son échelle à 1,49. Extrudez-le à nouveau et déplacez-le de -1,4 carreaux sur X. Réduisez son échelle à 0,79. Extrudez la sélection et déplacez-la de -0,3 carreau sur X. Passez son échelle à 0,83.
Pour changer, on va extruder la sélection et la placer 0,2 carreau sur la gauche. Puis on va fixer son échelle à 1,12... ça c'est du changement... non ??! Bon, alors, extrudez à nouveau la sélection et déplacez-la de -0,7 carreau sur X. Passez son échelle à 1,09.
Extrudez le plan actif et déplacez-le de -2,6 carreaux sur X. Réduisez son échelle à 0,54 sur l'axe Y dans la vue de dessus. Passez ensuite son échelle à 0,43 sur Z. Enfin déplacez le plan complet de 0,2 carreau vers le haut.
Extrudez le plan et déplacez-le de -0,3 carreau sur X. Dans la vue de face, sélectionnez le segment inférieur du plan et déplacez-le de -0,1 carreau sur X et +0,3 carreau sur Z. Déplacez ensuite le segment supérieur de -0,1 carreau sur Z. Re-sélectionnez le plan, extrudez-le et positionnez-le 0,4 carreau sur la gauche. Sélectionnez le segment inférieur et déplacez-le de -0,2 carreau sur Z. Dans la vue de dessus, faites passer l'échelle du plan à 1,49 sur Y.
Dans la vue de face, extrudez le plan et déplacez-le de -0,6 carreau sur X. Déplacez le segment inférieur de 0,1 carreau sur Z. Extrudez le plan et déplacez-le de -1,4 carreaux sur X. Réduisez son échelle à 0,64. La figure 14 montre la modélisation du bras.
Ça y est! Plus d'extrusion! Plus d'échelle à modifier! Oui, c'est la fin !!... Ben NON ! Ben oui… quoi ! Il reste tout de même l'autre côté à modéliser. Mais non, je blague, la manip va être beaucoup plus simple et rapide... Ouf!
Tout d'abord, nous allons supprimer les faces de la partie de droite du demi-personnage. Pour cela, sélectionnez tous les points des faces verticales de droite dans la vue de face. Pressez la touche X et sélectionnez Faces.
Activez tous les points en pressant la touche A par deux fois, puis copiez le maillage en pressant Shift D. Sans déplacer la souris, pressez la touche S pour activer le mode de modification d'échelle. Là encore, pressez immédiatement la touche X sans toucher à la souris et pressez la touche Entrée afin de valider l'inversion du maillage sur l'axe X.
Il ne reste plus qu'à placer le côté gauche de la sélection sur le côté droit du maillage original (touche G). Une fois fait, sélectionnez les points confondus des deux maillages. Puis, dans le menu d'édition des objets, passez la valeur de la variable Limit à 0,01. C'est elle qui fixe la tolérance de la valeur des coordonnées confondues. Cliquez enfin sur Rem Doubles.
Le personnage est enfin prêt à être lié à l'armature. La figure 15 représente le personnage terminé. Ce n'est pas vraiment un top modèle, mais il fera parfaitement l'affaire pour illustrer l'exercice sur l'animation à l'aide de l'armature.
Pour la présente leçon, j'avais le choix entre expliquer la modélisation et l'animation des armatures en faisant impasse sur la modélisation d'un personnage ou préférer expliquer la modélisation du personnage et remettre l'exercice sur l'animation au mois prochain. C'est la seconde solution qui a été privilégiée afin de ne pas léser les personnes qui ne maîtrisent pas totalement Blender. Ainsi, tout le monde partira sur les mêmes bases pour la prochaine leçon. J'espère que les utilisateurs plus experts ne m'en voudront pas, mais je souhaite que tout le monde puisse suivre. Je suis certain que ces derniers auront réalisé un bonhomme plus sympathique, mais l'esthétique de celui-ci n'est tout de même pas l'objet de la leçon. Je vous donne rendez-vous donc au prochain numéro de Linux Magazine pour enfin animer notre acteur virtuel !
Franck Barnier
barnierf@club-internet.fr