Cinématique Inverse

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Cinématique Inverse (CI) est une technique courante en animation numérique pour faire bouger les personnages de manière efficace et interagir de manière réaliste avec leur environnement. Le processus de création d'un mouvement réaliste pour un personnage nécessite souvent de nombreuses itérations et ajustements mineurs des différentes articulations. Avec la CI, vous pouvez poser et animer plusieurs parties d'un personnage en ajustant un seul objet.

Cette technique d'animation peut fournir des solutions pour les exemples suivants :

Attraper et poser la main d'un personnage tout en ajustant automatiquement les membres liés, tels que le poignet, le coude et l'épaule.
Faire interagir les pieds d'un personnage de manière réaliste sur différentes surfaces et pentes.
Attraper et déplacer un seul objet cible pour créer rapidement des interactions réalistes avec votre personnage et des accessoires.

IKControl

Vous pouvez utiliser un IKControl pour ajouter de manière procédurale la CI à vos modèles de personnage en dehors de l'Éditeur d'Animation. Studio vous permet d'appliquer la CI de manière programmatique à tous les personnages, tels que R15, Rthro et les personnages personnalisés importés, pour créer des mouvements et des interactions réalistes dans votre jeu.

Lors de l'ajout d'un IKControl, assurez-vous de définir correctement les propriétés requises pour éviter des résultats d'animation inattendus et peu naturels. Comme pour toute animation, testez vos IKControls pour vous assurer d'obtenir le comportement souhaité.

Propriétés requises

Lorsque vous ajoutez un IKControl à Humanoid ou AnimationController de votre personnage, vous devez définir les propriétés requises suivantes pour activer la CI :

PropriétéDescription
TypeSpécifie le type de comportement du contrôle IK. Voir Enum.IKControlType pour la liste des options de comportement. Les types de comportement courants sont Position ou Transform.
EndEffectorUne BasePart ou Bone dans votre modèle de personnage qui suit vers le Target. Par exemple, vous pouvez définir un os LeftHand comme EndEffector pour atteindre un objet de poignée de porte défini comme Target.
TargetL'objet vers lequel le EndEffector atteint ou pointe. Un Target peut être n'importe quel objet avec une position dans le monde.
ChainRootDéfinit la chaîne de BaseParts ou Bones que le IKControl affecte. Tous les éléments connectés entre le ChainRoot et le EndEffector sont affectés par le IKControl en utilisant le type de comportement défini.

Par exemple, si la LeftHand de votre personnage est définie comme le Target, vous pouvez appliquer la CI à tout le bras gauche en définissant ChainRoot sur le LeftUpperArm. Pour appliquer la CI uniquement aux parties sous le coude, définissez ChainRoot sur le LeftLowerArm.

Test IKControls

Vous pouvez ajouter et modifier IKControl de manière programmatique ou directement via l'Explorateur. Vous pouvez même ajouter et modifier IKControl durant un test de jeu pour vérifier rapidement comment les différentes propriétés affectent les mouvements d'un personnage.

Pour tester rapidement votre IKControl en utilisant un Attachment comme target :

  1. Depuis le mezzanine de Studio, initiez un test de jeu.

  2. Dans l'Explorateur, naviguez vers Workspace → le Model de votre utilisateur. Cette instance Model est nommée comme votre compte Roblox actuel.

  3. Cliquez sur l'icône à côté du HumanoidRootPart de votre modèle de personnage et ajoutez un Attachment.

  4. Sélectionnez l'Attachment et utilisez l'outil Déplacer pour positionner l'objet devant votre personnage dans la fenêtre de visualisation.

  5. Dans la fenêtre Explorateur, sélectionnez l'icône à côté du Humanoid de votre personnage et ajoutez un IKControl.

  6. Sélectionnez le IKControl et définissez les valeurs des propriétés suivantes dans la fenêtre Propriétés :

    1. Type : Sélectionnez Transform dans le menu déroulant.
    2. EndEffector : Sélectionnez le MeshPart LeftHand de votre modèle dans l'Explorateur.
    3. Target : Sélectionnez le nouvel objet Attachment créé dans l'Explorateur.
    4. ChainRoot : Sélectionnez le MeshPart LeftUpperArm de votre modèle dans l'Explorateur.
    Propriétés IKControl
    Explorateur - Modèle de personnage

    Le bras gauche de votre personnage devrait maintenant atteindre la cible Attachment. Vous pouvez expérimenter en déplaçant le Attachment ou en modifiant les propriétés du IKControl pour obtenir des résultats différents.

Ajouter des contraintes

Vous pouvez utiliser des Constraints pour restreindre comment les articulations peuvent se déplacer lorsqu'elles atteignent leur cible. Les contraintes peuvent garantir que des articulations comme les coudes et les genoux se plient naturellement, ou pour faire tourner les joints mécaniques dans une orientation spécifique.

Coude plié de manière non naturelle
Coude plié correctement

Pour ajouter des contraintes à votre personnage en utilisant IKControl, votre IKControl et la contrainte doivent respecter les conditions suivantes :

Les instructions suivantes décrivent le processus d'ajout d'un HingeConstraint pour restreindre la rotation du coude d'un personnage et d'ajouter un BallSocketConstraint au poignet pour limiter l'angle de rotation.

Coude

Les personnages Roblox R15 incluent déjà des attachements dans leurs articulations que vous pouvez utiliser pour appliquer la contrainte du coude. Pour le coude, à la fois le LeftUpperArm et le LeftLowerArm incluent un LeftElbowRigAttachment. En plus d'ajouter une contrainte, vous devez également ajouter des attachements enfants supplémentaires à chaque LeftElbowRigAttachment de pièce pour spécifier autour de quel axe le coude peut pivoter.

Pour ajouter le HingeConstraint et les attachements enfants :

  1. Dans l'Explorateur, localisez le LeftLowerArm de votre modèle et cliquez sur le ⊕ button.

  2. Ajoutez un HingeConstraint avec le nom LeftElbowConstraint.

  3. Dans l'Explorateur, naviguez vers le LeftUpperArm.LeftElbowRigAttachment et ajoutez une attache :

    1. Cliquez sur le ⊕ button pour ajouter une Attachment avec le nom LeftElbowConstraintAttachment0.

    2. Dans la fenêtre de visualisation, sélectionnez l'attache et utilisez l'outil Tourner pour faire pivoter l'attache de sorte que l'axe PrimaryAxis jaune soit l'axe de la rotation attendue du coude.

    3. Définissez la propriété LeftElbowConstraint.Attachment0 sur ce nouvel attachement.

  4. Dans l'Explorateur, naviguez vers le LeftLowerArm.LeftElbowRigAttachment de votre modèle, et ajoutez une attache :

    1. Cliquez sur le ⊕ button et ajoutez une Attachment avec le nom LeftElbowConstraintAttachment1.
    2. Définissez la propriété LeftUpperArm.LeftElbowConstraint.Attachment1 sur ce nouvel attachement.
    3. Copiez la propriété LeftElbowConstraintAttachment0.CFrameOrientation et collez-la comme valeur LeftElbowConstraint.Attachment1.CFrameOrientation.

Testez votre IKControl pour vérifier que le coude tourne uniquement autour de son axe de charnière :

Poignets

Même avec la contrainte du coude, le IKControl peut encore produire des poses irréalistes avec les poignets.

Le poignet se plie de manière non naturelle à certaines orientations

Vous pouvez améliorer cela en ajoutant un BallSocketConstraint pour limiter la rotation du poignet. Bien que ce soit similaire au processus d'ajout d'un HingeConstraint au coude, vous pouvez utiliser la propriété LimitsEnabled sur cette contrainte pour contrôler davantage l'amplitude de mouvement du poignet.

Pour ajouter un BallSocketConstraint pour le poignet :

  1. Dans l'Explorateur, localisez votre modèle LeftHand et cliquez sur le ⊕ button.
    1. Ajoutez un BallSocketConstraint avec le nom LeftWristConstraint.
  2. Localisez le LeftLowerArm.LeftWristRigAttachment de votre modèle et ajoutez une attache :
    1. Cliquez sur le ⊕ button et ajoutez une Attachment avec le nom LeftWristConstraintAttachment0.
    2. Dans la fenêtre de visualisation, sélectionnez l'attache et utilisez l'outil Tourner pour faire pivoter l'attache afin que l'axe PrimaryAxis jaune pointe vers les doigts du modèle.
    3. Définissez la propriété LeftWristConstraint.Attachment0 sur le nouvel LeftWristConstraintAttachment0.
  3. Localisez le LeftHand.LeftWristRigAttachment de votre modèle et ajoutez une attache :
    1. Cliquez sur le ⊕ button et ajoutez une Attachment avec le nom LeftWristConstraintAttachment1.
    2. Copiez la propriété LeftWristConstraintAttachment0.CFrameOrientation et collez-la comme propriété LeftWristConstraintAttachment1.CFrameOrientation.
    3. Définissez la propriété LeftWristConstraint.Attachment1 sur ce nouvel LeftWristConstraintAttachment1.
  4. Dans l'Explorateur, sélectionnez le LeftWristConstraint.
  5. Dans la fenêtre Propriétés, définissez les éléments suivants :
    1. Activez LimitsEnabled.
    2. Définissez UpperAngle sur 80. Cela contrôle combien l'axe de la contrainte peut tourner, et 80 degrés est approximativement combien le poignet devrait pouvoir se plier.
  6. Selon votre personnage, vous voudrez peut-être ajuster la direction dans laquelle pointe le cône. Vous pouvez le faire en utilisant l'outil Tourner pour faire pivoter l'Attachment0 de la contrainte.

Lorsque vous sélectionnez le LeftWristConstraint, un cône vert apparaît pour visualiser l'amplitude de mouvement du poignet.

Avec la contrainte configurée, testez le IKControl avec la main pointant vers le bas devant le personnage et le poignet devrait tourner et se plier de manière plus réaliste.

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.