Les outils d'édition de squelette de l'Unreal Engine vous permettent de modifier des squelettes existants, de renommer des os, de modifier leur placement ou de modifier leur hiérarchie.
De plus, grâce à des outils tels que la création d'os ou la peinture de pondération de surfaçage, vous pouvez créer de nouvelles ressources de squelette pour un maillage statique quelconque sans importer de fichier FBX. Associé à des outils tels que Control Rig et Sequencer, Unreal Engine vous permet de créer des surfaçages pour des personnages et d'animer ces derniers entièrement dans l'éditeur.
Conditions préalables
Activez le plug-in Outils de modification de maillage squelettique. Accédez à la barre de menus jusqu'à Modifier > Plug-ins et recherchez Outils de modification de maillage squelettique dans la section Animation, ou utilisez la barre de recherche. Activez le plug-in et redémarrez l'éditeur.
Votre projet contient un objet de maillage statique pour lequel vous pouvez créer un squelette ou un personnage à maillage squelettique dont vous souhaitez modifier la ressource de squelette.
Créer un maillage squelettique
Faites un clic droit sur un objet de maillage statique dans le navigateur de contenu et sélectionnez l'option Convertir en maillage squelettique dans le menu contextuel.
Une fois l'option Convertir en maillage squelettique sélectionnée, s'affiche un menu dans lequel vous pouvez sélectionner une ressource de squelette existante qui sera liée au maillage statique. Vous pouvez aussi sélectionner Créer pour créer une nouvelle ressource de squelette.
Lors de la création d'une ressource de squelette, un seul os racine est créé au point d'origine du maillage statique.
Modifier une ressource de squelette
Après avoir créé une ressource de squelette ou sélectionné une ressource existante à modifier, ouvrez le squelette dans l'éditeur de squelette. Dans l'éditeur, cliquez sur le bouton Outils d'édition dans la barre d'outils pour commencer à modifier votre squelette.
Voici un aperçu des outils et panneaux de l'éditeur de squelette.
Panneau Outils
Arborescence de squelette
Détails/Détails de ressource/Aperçu
Créer et modifier des os
Pour commencer à créer des os, sélectionnez le mode Squelette dans le panneau Outils.
Utiliser l'outil Modifier le squelette permet de placer des os dans le maillage du hublot.
Activez le mode Ajouter (N), sélectionnez un os dans le hublot, puis faites glisser le nouvel os pour le tracer jusqu'à la longueur voulue et le positionner sur le personnage. Le premier os sélectionné servira de parent du nouvel os.
Une fois les os créés, sélectionnez Accepter pour confirmer leur création et leur position.
Utilisez la longueur d'axe et l'épaisseur d'axe pour visualiser la direction dans laquelle les nouveaux os pointent.
Si cette option est activée, la propriété Mettre à jour les enfants déplacera tous les os enfants de l'os sélectionné une fois modifié. Cela permet d'ajuster des chaînes entières.
Assigner des os à des parents
Pour associer des os à de nouveaux parents dans l'arborescence de squelette, sélectionnez-les dans le panneau correspondant, puis faites-les glisser vers un nouvel os parent.
Renommer des os
Pour renommer (F2) un os, vous pouvez faire un clic droit dessus en sélectionner l'option Renommer l'os dans le menu contextuel.
Vous pouvez aussi sélectionner plusieurs os d'une même chaîne pour les renommer simultanément. D'autre part, vous pouvez ajouter l'opérateur dièse # à la fin du nom pour renommer différents os en leur attribuant des numéros consécutifs. Par exemple, vous pouvez sélectionner plusieurs os dans la chaîne et remplacer le nom du premier par tail_##1. Après cette modification, le premier os deviendra tail_001 et les os successifs deviendront tail_002, tail_003, etc.
Mode Modification
Pour modifier des os existants dans le squelette à l'aide d'outils tels que Orienter les os et Mettre en miroir les os, sélectionnez le mode Modification.
Orienter les os
Les os doivent être orientés dans la bonne direction pour pouvoir pivoter comme il convient. C'est ce qu'on appelle l'orientation des os. Pour orienter vos os, sélectionnez la chaîne correspondante et développez la section Orienter.
Voici la liste des propriétés d'orientation des os et une description de leur rôle :
| Propriété | Description |
|---|---|
Primaire | Définit la direction dans laquelle les os seront orientés, qui est généralement l'axe X. |
Secondaire | Définit l'axe qui représentera la direction vers le haut des os. |
Utiliser le plan comme secondaire | Lorsqu'elle est activée, cette propriété construit un plan à travers les os pour vous aider à vous orienter. |
Cible secondaire | Définit la position à utiliser pour l'axe secondaire. |
Orienter les enfants | Lorsqu'elle est activée, cette propriété oriente tous les enfants au-dessous de l'os sélectionné. |
Vous pouvez également orienter manuellement les os : sélectionnez-les et utilisez le gadget de rotation (R) ou spécifiez une valeur de transformation explicite sur chaque axe (X, Y et Z).
Mettre des os en miroir
Pour accélérer le processus de création du squelette, vous pouvez utiliser l'outil Mettre des os en miroir pour mettre une chaîne d'os en miroir et copier des membres ou d'autres structures d'os mis en miroir. Pour mettre une chaîne d'os en miroir, sélectionnez la chaîne ou les os concernés et utilisez le bouton Mettre en miroir dans le mode Modification.
Voici la liste des propriétés de mise en miroir d'os et une description de leur rôle :
| Propriété | Description |
|---|---|
Axe de la mise en miroir | Définit le plan de l'axe selon lequel la mise en miroir sera effectuée. |
Rotation de miroir | Si cette propriété est activée, la rotation sera inversée selon le plan. Elle est généralement nécessaire pour l'animation. |
Chaîne de gauche | Définit le nom utilisé pour rechercher les éléments du côté gauche. |
Chaîne de droite | Définit le nom utilisé pour rechercher les éléments du côté droit. |
Mettre les enfants en miroir | Si cette option est activée, les os en miroir reflèteront également tous leurs enfants dans la chaîne d'os sélectionnée. |
Pondérations de surfaçage
Lorsque vous ajoutez de nouveaux os à votre maillage squelettique, l'outil Lier le surfaçage vous permet de leur attribuer des pondérations de surfaçage pour influencer la géométrie du maillage. Les pondérations de surfaçage sont des valeurs attribuées à chaque vertex de la géométrie du maillage squelettique. Ces valeurs représentent l'influence qu'un os en mouvement exerce sur la déformation du vertex. Chaque vertex peut être influencé par plusieurs os du squelette. En tant qu'utilisateur, vous devez attribuer une pondération à chaque vertex pour chaque os afin d'indiquer à quels os il doit être attaché. Chaque vertex contient une valeur comprise entre 0,0 et 1,0 pour chaque os. Une valeur de 0 signifie que le vertex n'est pas du tout affecté par l'os, tandis qu'une valeur de 1 signifie que le vertex est entièrement attaché à l'os. Les valeurs comprises entre 0 et 1 permettent à un vertex d'être partiellement affecté par un os. Définir la pondération de surfaçage à chaque vertex séparément n'est pas une solution pratique. En revanche, peindre des textures de pondération de surfaçage constitue une méthode plus efficace pour créer des déformations élégantes sur un personnage entier.
Les valeurs de pondération de surfaçage de chaque vertex sont normalisées, ce qui signifie que la pondération totale de chaque vertex doit être égale à 1. De cette manière, lorsque l'ensemble du squelette est déplacé, les vertex du maillage se déplacent avec lui. Si la pondération totale d'un vertex est inférieure à 1, le mouvement du vertex est retardé par rapport au mouvement du squelette. À l'inverse, si la valeur totale est supérieure à 1, le vertex se déplace plus vite que le squelette. Unreal Engine applique donc à une valeur totale de 1, en normalisant les valeurs de pondération de surfaçage pour chaque vertex du maillage.
Par exemple, si le vertex d'un coude a une valeur de 0,7 sur l'os de l'avant-bras, la pondération de 0,3 restante sera attribuée à un ou plusieurs autres os. Dans ce cas, il serait rattaché au haut du bras.
Lorsque vous modifiez la pondération d'un vertex, Unreal Engine normalise automatiquement les autres pondérations pour que la valeur totale soit toujours égale à 1, et peut donc ajuster automatiquement les valeurs des pondérations de surfaçage.
Si le vertex n'a qu'une seule influence et qu'un seul os a un poids non nul, vous ne pourrez pas modifier de manière significative le poids de cet os. Définir le poids sur une valeur différente de 1,0 déclenche la procédure de normalisation qui rétablira la valeur sur 1,0, quelle que soit la valeur que vous assignez. Lorsqu'une pondération non nulle est attribuée à plusieurs os d'un vertex, la procédure de normalisation appliquera aux autres influences la pondération supplémentaire requise pour atteindre le poids défini par l'utilisateur.
Prenons l'exemple précédent avec un vertex dont la pondération est définie sur 0,7 pour l'avant-bras et 0,3 pour le haut du bras. Si l'utilisateur tente de réduire la pondération sur l'avant-bras (par exemple en définissant sa valeur sur 0,6), la procédure de normalisation modifiera automatiquement la valeur du haut du bras de 0,3 à 0,4, pour maintenir une valeur totale de 1.
Il est préférable d'ajouter explicitement les pondérations des vertex, pour permettre à la procédure de normalisation de réduire la pondération pour atteindre la valeur souhaitée.
Si vous souhaitez qu'un os ait moins d'influence, il est préférable d'ajouter une pondération supplémentaire à un autre os. Vous pouvez ainsi indiquer explicitement où se situe l'influence au lieu de laisser la normalisation la répartir équitablement.
Lier des pondérations de surfaçage
Pour commencer à peindre des pondérations de surfaçage, sélectionnez le mode de surfaçage dans le panneau Outils, puis l'outil Lier le surfaçage pour définir les paramètres de référence de vos ressources.
Voici la liste des propriétés de l'outil Lier le surfaçage et une description de leur rôle :
| Propriété | Description |
|---|---|
Type de liaison | Sélectionnez la méthode à utiliser pour la liaison. Vous pouvez choisir l'une des méthodes suivantes.
|
Rigidité | Définit la rigidité de la liaison. Des valeurs plus faibles permettent aux os plus éloignés de contribuer à la liaison. |
Influences max. | Définit le nombre maximal d'os qui influenceront chaque vertex. |
Résolution des voxels | Lorsque le type de liaison est défini sur Voxel géodésique, vous pouvez utiliser cette propriété pour définir la résolution de la grille voxélisée. Des valeurs élevées peuvent avoir un impact sur les performances, mais peuvent permettre de résoudre des détails plus fins. |
Pondérations de peinture
Une fois vos pondérations de base définies, vous pouvez peindre des textures de pondération de surfaçage pour déterminer la zone du maillage sur laquelle chaque os a une influence. Pour commencer à peindre des textures de pondération de surfaçage, sélectionnez le bouton Modifier les pondérations dans le mode Surfaçage.
Vous pouvez ensuite sélectionner l'outil de votre choix pour peindre des textures de pondération de surfaçage sur votre maillage. Deux modes d'édition de pondération sont disponibles :
Pinceau : utilise un pinceau pour appliquer des pondérations à un maillage complet. Ce mode est surtout utilisé pour appliquer des pondérations à de vastes zones ou à des structures simples.Vertex : utilise un outil de sélection qui permet de choisir des vertex spécifiques pour modifier les pondérations de surfaçage. Ce mode est surtout utilisé pour l'édition et le masquage détaillés de pondération.
Mode Pinceau
Pour commencer à peindre des pondérations avec le mode Pinceau, sélectionnez un os dans la hiérarchie figurant dans le panneau Arborescence du squelette. Les pondérations assignées à cet os sur le maillage s'affichent alors.
Le mode Pinceau comprend un ensemble d'opérations utilisant le pinceau qui vous aident à modifier les pondérations :
| Opération | Description |
|---|---|
Ajouter | Ce mode fournit le pinceau par défaut qui ajoutera des pondérations aux valeurs actuelles jusqu'à atteindre la valeur maximale de |
Remplacer | Ce mode remplace les pondérations actuelles moins la valeur de force. |
Multiplier | Ce mode multiplie les pondérations actuelles par la valeur de force. |
Relaxer | Ce mode applique la moyenne des pondérations de vertex connectés, par arêtes, aux pondérations actuelles. Ce mode fonctionne de la même manière que le lissage. |
Vous pouvez également choisir l'un des deux types de pinceau suivants :
| Brush | Description |
|---|---|
Surface | Le pinceau de surface affecte les vertex proportionnellement à la distance le long de la surface du maillage, appelée Distance géodésique. Cela est utile pour peindre des zones étroites et fortement courbées, comme les lèvres. Le pinceau de surface n'affecte pas la lèvre supérieure lorsque vous peignez la lèvre inférieure, et inversement. |
Volume | Le pinceau volumétrique affecte les vertex proportionnellement à la distance en ligne droite entre le centre du pinceau et le vertex, quelle que soit la connectivité ou la distance le long du maillage. |
Chaque pinceau peut également être modifié avec les paramètres suivants :
| Paramètre | Description |
|---|---|
Rayon | Définit la taille du pinceau. |
Intensité | Définit l'intensité du pinceau qui influence le résultat des opérations réalisées avec celui-ci. |
Atténuation | Définit l'atténuation exponentielle du pinceau, c'est-à-dire la façon dont le pinceau influence le point entourant son centre. |
Après avoir sélectionné votre pinceau et votre mode, vous pouvez commencer à peindre la texture de pondération de surfaçage de l'os sélectionné ; pour cela, cliquez sur le pinceau et faites-le glisser sur le maillage dans le hublot.
La touche de raccourci B permet de modifier visuellement la taille du pinceau et l'intensité du pinceau.
Maintenez la touche B enfoncée et faites glisser la souris vers la gauche et la droite pour ajuster le rayon du pinceau.
Maintenez la touche B enfoncée et faites glisser la souris vers le haut et le bas pour ajuster l'intensité du pinceau.
Une fois que vous avez terminé vos modifications de pondération, cliquez sur Accepter pour valider vos choix et quitter l'outil.
Si vous n'êtes pas satisfait du résultat, vous pouvez facilement annuler les modifications en utilisant le raccourci Ctrl+Z, même si vous avez déjà accepté les pondérations.
Mode Vertex
Le mode Vertex permet de sélectionner des vertex spécifiques pour lesquels vous souhaitez modifier les pondérations à l'aide de l'outil Rectangle.
Voici la liste des opérations du mode Vertex et une description de leur rôle :
| Opération | Description |
|---|---|
Symétrie miroir | Met en miroir les os et les pondérations de vertex sélectionnés vers l'autre côté, en fonction de la direction du plan miroir. |
Saturer les pondérations | Sature les pondérations sélectionnées à l'aide des opérations du pinceau. Pour saturer des pondérations, sélectionnez des vertex et des os, puis utilisez l'opération Ajouter. Si les pondérations d'un os sont saturées à |
Élaguer les pondérations | Les pondérations inférieures à la valeur seuil donnée seront supprimées. Cela permet notamment d'améliorer les performances. |
Pour lisser les périmètres précis des textures de pondération, sélectionnez des vertex, un os et utilisez l'opération Relaxer.
Mettre des pondérations en miroir
Pour accélérer le flux de travail de peinture de pondération de surfaçage, vous pouvez mettre en miroir des structures symétriques, telles que des membres ou d'autres éléments, à l'aide du bouton Mise en miroir. Pour mettre une structure en miroir, sélectionnez l'os, la chaîne d'os ou les vertex concernés, puis cliquez sur le bouton Mise en miroir dans le panneau Outils, sous l'onglet Modifier les pondérations.
En mode Vertex, si vous ne sélectionnez aucun vertex, les opérations sont exécutées sur tous ceux affectés par l'os sélectionné. Cela peut être utile pour mettre des pondérations en miroir pour tout le côté gauche d'un personnage vers le côté droit.
Peindre des cartes d'attributs
Les cartes d'attributs sont des textures de pondération par vertex que vous pouvez peindre afin de les utiliser comme données ailleurs dans l'Unreal Engine, par exemple dans un graphique de déformateur. Pour créer une carte d'attribut et commencer à peindre, accédez à l'onglet Modifier les attributs, donnez-lui un nouveau nom et cliquez sur Ajouter une couche à la texture de pondération.
Cette nouvelle carte s'affichera dans la section Attributs de vertex sous l'inspecteur d'attributs.
Une fois créée, vous pouvez peindre votre carte d'attribut en sélectionnant l'onglet Peindre les cartes dans le panneau Outil. Choisissez le type de carte à peindre sous Attribut sélectionné, cliquez sur le hublot et faites glisser la souris pour commencer à peindre le maillage.
Référence des raccourcis clavier
Voici la liste des raccourcis disponibles pour chaque mode de création de squelette.
Modification des pondérations
| Raccourci | Description |
|---|---|
B (maintenir) (glisser gauche/droite) | Changer la taille du rayon du pinceau |
B (maintenir) (glisser haut/bas) | Changer l'intensité du pinceau |
Maj | Relaxer le pinceau |
Ctrl | Inverser le mode du pinceau actuel |
Clic bouton du milieu de la souris (sur un os) | Sélectionner visuellement une influence à peindre |
F | Centrer la caméra sur les vertex ou les os sélectionnés |
Modification d'un os
| Raccourci | Description |
|---|---|
N | Créer un nouvel os |
Échap | Modifier un os |
B | Redéfinir la parenté |
Maj + P | Déconnecter (annuler la parenté) |
Supprimer | Supprimer l'os |
API Python
Voici l'API Python pour les outils d'édition de squelette que vous pouvez utilez pour écrire des scripts d'automatisation de votre flux de travail.
Accéder aux os et aux pondérations
mesh_path = "/Game/Characters/Mannequins/Meshes/SKM_Quinn_Simple"
asset_editor = unreal.EditorAssetLibrary()
skel_mesh = asset_editor.load_asset(mesh_path)Charger les bibliothèques de modificateurs
# load the weight modifier
weight_modifier = unreal.SkinWeightModifier()
# load the skeleton modifier
skeleton_modifier = unreal.SkeletonModifier()Créer des os
# Create two bones, a and b
skeleton_modifier.set_skeletal_mesh(skel_mesh)
skeleton_modifier.add_bones(["a", "b"],["root", "root"], [unreal.Transform(), unreal.Transform()])Assigner des os à des parents
# Parent bone b to bone a
skeleton_modifier.parent_bone("b", "a")Valider les modifications
# Commit the changes
skeleton_modifier.commit_skeleton_to_skeletal_mesh()