From BlenderWiki

Jump to: navigation, search

==“Skinning”== Une fois que l’armature — le “squelette” du personnage — est prête, il est nécessaire de l’apparenter à la “peau” (“skin”) du personnage. Le skinning est une technique pour créer des déformations douces à l’aide d’une armature. Pour l’essentiel, le skinning est la relation entre les vertices d’un mesh et les os d’une armature, relation définissant comment chaque os va affecter la position des vertices du mesh.

Quand on définit un enfant d’une armature, plusieurs options se présentent :

Parent to Bone
Pour apparenter l’objet à un os (en mode Pose uniquement). Dans ce cas, un menu apparaît vous permettant de choisir quel bone deviendra le parent du(des) objet(s) enfant(s). Cela fonctionne très bien pour des robots, dont le corps est fait de parties (meshes) séparées, indépendantes, qui ne sont pas sensées se déformer ou se tordre quand il bouge.
Parent to Armature
Pour apparenter l’objet à l’armature. Choisir cette option déformera le(s) mesh(es) enfant(s) en fonction de leurs groupes de vertices (dont les noms doivent correspondre à ceux des bones). Si les meshes enfants n’ont pas de groupes de vertices, ils feront l’objet d’un skinning automatique. Un second menu apparaît, proposant les choix suivants :
  • Don't create groups (“ne pas créer de groupe”) — ne fait rien de plus, le skinning sera automatique (ou utilisera les groupes déjà définis);
  • Name Groups (“nommer des groupes”) — crée des groupes de vertices vides dont les noms correspondent à ceux des os (mais aucun vertice ne leur est assigné);
  • Create from closest bone (“créer d’après l’os le plus proche”) — crée les groupes et leur assigne de façon automatique des vertices (en fonction de leur proximité avec les os);
  • Create from bone heat (“créer d’après la «chaleur» de l’os”) – crée les groupes de vertices et y assigne chaque vertex avec un poids (une pondération, “weight”) calculé par l’algorithme “bone heat” (“chaleur de l’os”). Parfois, celui-ci “échoue à trouver une solution” (“it fails to find a solution”); si cela arrive, passez en mode Edit et utilisez P → All Loose Parts, ce qui divisera le mesh en plusieurs meshes séparés, avant d’attacher l’armature à chacun d’eux.
Parent to Object
Choisir cette option fera que les enfants considéreront l’armature comme un objet parent “comme les autres” (un empty, par exemple), à tous les points de vue.

Si vous faites de l’animation de personnage, alors vous apparenterez la plupart du temps votre personnage à votre armature en choisissant Parent to Armature. Il vous est fortement conseillé d’utiliser l’option Name Groups. Cela mettra à votre disposition des groupes déjà créés, vous épargnant la fastidieuse opération de les créer et nommer (et de possibles fautes de frappe). La fonction Create from closest bone concentre actuellement de gros efforts de développement. Elle utilisera le type d’os qui peut être défini grâce au menu à droite du bouton IK (Boutons éditions pour une armature), pour un résultat optimal. Pour le moment, les seules options Skinnable et Unskinnable fonctionnent. La première option fait qu’un groupe de vertices est créé (et “peuplé” si on le désire) pour l’os concerné, la seconde option fait que l’os sera ignoré dans le processus du skinning.

Assignation automatique de vertex
L’algorithme d’assignation des vertices ne crée pas pour le moment des groupes de vertices optimaux – il est donc vivement recommandé de vérifier chaque groupe un par un.


Si un mesh ne possède aucun groupe de vertices, et qu’il est défini comme enfant d’une armature, Blender essayera de calculer les informations de déformation “à la volée”. C’est une opération très lente et pas du tout recommandée. Il est plus judicieux de créer et d’utiliser des groupes de vertices.

Weight et Dist
Les réglages de Weight (“poids”) et Dist (“distance”) ne sont utilisés que par le skinning automatique, qui est une fonctionnalité dépréciée parce qu’elle requiert beaucoup de temps CPU, produit des ralentissements, et donne de plus mauvais résultats que les autres méthodes.

Groupes de vertices

Vertex Groups.

Les groupes de vertices sont nécessaires pour définir quels os devront déformer quels vertices. Un vertex peut appartenir à plusieurs groupes, au quel cas sa déformation sera une moyenne pondérée des déformations des bones qui lui sont assignés. On peut ainsi créer des articulations douces, lisses.

Pour ajouter un nouveau groupe de vertices à un mesh, vous devez vous trouver en mode Edit. Créez ce groupe en cliquant sur le bouton New (“nouveau”) du groupe Vertex Groups, panneau Link and Materials, contexte Editing (F9).

Un groupe de vertices peut être ultérieurement détruit en cliquant sur le bouton Delete (“supprimer”). Changez de groupe actif en en choisissant un autre dans le menu déroulant. Les groupes de vertices doivent avoir les mêmes noms que les os qui les manipuleront (attention aux fautes de frappes et à la casse – “Genou”, “Genoux” et “genoux” sont tous différents !). C’est pourquoi la création automatique des noms est tellement pratique !

Vous pouvez renommer un groupe avec un clic ⇧ ShiftLMB Template-LMB.png sur le bouton du nom, puis en tapant un nouveau nom. Notez qu’un nom de groupes de vertices doit être unique à l’intérieur d’un mesh donné.

Des vertices peuvent être assignés au groupe actif en les sélectionnant puis en cliquant sur le bouton Assign. En fonction du réglage Weight (“poids”), ces vertices seront plus ou moins influencés par le bone. Cette pondération n’est importante que pour les vertices qui sont influencés par plusieurs os (qui appartiennent à plusieurs groupes). D’autre part, il ne s’agit pas d’une valeur absolue, elle est plutôt relative. Pour chaque vertex, le système calcule la somme des poids de tous les os qui l’affectent. La déformation de chaque os sera alors divisée par cette somme, de telle sorte que chaque vertex reçoive exactement “100%” de déformation.

Assigner un poids nul (0.0) à un vertex revient à le retirer du groupe actif. Pour supprimer des vertices du groupe actif, sélectionnez-les et cliquez sur le bouton Remove (“enlever”). Presser le bouton Select ajoutera à la sélection courante les vertices assignés au groupe actif. Inversement, presser le bouton Deselect retirera de la sélection courante les vertices assignés au groupe actif. C’est très pratique pour vérifier quels vertices font partie de tel ou tel groupe.

Peinture de poids

Option Weight Paint.

La “peinture à pois de poids” (“weight painting”) est une technique alternative pour assigner un poids aux vertices dans les groupes de vertices. Vous pouvez “peindre” les poids sur le modèle lui-même, et voir les résultats en temps réel. Cela permet de réaliser plus facilement des articulations douces. Pour activer le mode Weight Paint, sélectionnez un mesh ayant des groupes de vertices, et cliquez sur l’entrée appropriée du menu des modes (Option Weight Paint).

Le mesh courant sera affiché d’après les codes-couleur de ce mode. Le bleu foncé représente les zones qui n’ont pas de poids (ou poids nul) dans le groupe courant, et le rouge représente les zones de poids maximal. Un seul groupe peut être visualisé à la fois. Changer le groupe de vertices actif par le biais du menu dédié modifiera la peinture de poids affichée.

Les poids sont peints sur le mesh en utilisant des techniques semblables à celles employées pour la peinture de vertices (vertex painting), à quelques exceptions près. La “couleur” est la valeur de poids spécifiée dans les boutons d’édition du mesh. Le curseur Opacity (“opacité”) dans le panneau Paint permet de moduler le poids. Pour “effacer” le poids des vertices, réglez Weight à 0.0 et commencez à peindre.

“Cuire” des actions
Si votre animation met en œuvre des contraintes et que vous voulez l’utiliser dans le moteur de jeu de Blender (“Game engine”, qui ignore les contraintes, et n’est pas couvert dans ce “livre”), vous pouvez “cuire” (“to bake”), pré-calculer l’action en pressant le bouton Bake dans la barre d’en-tête de la fenêtre Action Editor. Cela créera une nouvelle action dans laquelle chaque frame est une image-clé. Cette action peut être jouée par le moteur de jeu et devrait s’afficher correctement, une fois toutes les contraintes supprimées. Pour de meilleurs résultats, assurez-vous que toutes les cibles des contraintes se trouvent bien dans la même armature.


Vous pouvez voir l’Ipo action associée à un os dans la fenêtre Ipo, au lieu de la fenêtre Action, en passant de l’une à l’autre (Ipo action). L’Ipo action est un type spécial d’Ipo qui n’est applicable qu’aux os. Au lieu d’utiliser les angles d’Euler pour encoder la rotation, les Ipos action utilisent les quaternions, qui produisent une meilleure interpolation entre les “poses”.

Ipo action.

Les quaternions utilisent un vecteur à quatre composantes (ils sont aussi appelés “nombres hyper-complexes” – par analogie avec les “nombres complexes” à deux composantes…). Il est généralement difficile, et pas du tout intuitif, de décrire les relations de ces canaux de quaternion avec les orientations qui en résultent, mais ce n’est (heureusemnt !) presque jamais nécessaire. Mieux vaut générer des images-clé quaternion en manipulant directement les os eux-mêmes, en éditant uniquement les courbes spécifiques pour ajuster les transitions en ouverture/fermeture.

menu “Paint”

Le mode Weight Paint dispose également d’un menu particulier dans la barre d’en-tête, avec les options suivantes :

Apply bone envelopes to vertex groups
Calcule les poids de chaque vertex dans chaque groupe à partir des envelopes des bones.
Apply bone heat weights to vertex groups
De façon similaire à l’option Create from bone heat disponible lors de la définition des relations de parenté (voyez ci-dessus), cette option utilise l’algorithme “bone heat” (“chaleur d’os”) pour créer et peupler les groupes de vertices, et assigner un poids à chaque vertex.
Divers scripts…