Kinématique inversée (IK) est une technique commune dans l'animation d'ordinateur pour faire en sorte que les personnages se déplacent et interagissent 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 des ajustements mineurs des différentes articulations.Avec IK, vous pouvez poser et animer plusieurs parties de personnage en posant ou en ajustant un seul objet.
Cette technique d'animation peut fournir des solutions aux exemples suivants :
IKContrôle
Vous pouvez utiliser un IKControl pour ajouter procéduralement IK à vos rigs de personnage en dehors de l'éditeur d'animation.Studio vous permet d'appliquer IK de manière programmatique à tous les personnages, tels que R15, Rthro et les personnages skinés personnalisés importés, pour créer des mouvements et des interactions réalistes dans votre expérience.
Lors de l'ajout d'un IKControl, définissez correctement les propriétés requises pour éviter des résultats d'animation imprévus et non naturels.Comme pour toute animations, testez vos contrôles IK pour vous assurer que vous obtenez le comportement souhaité.
Propriétés requises
Lorsque vous ajoutez un IKControl à la propriété Humanoid ou AnimationController de votre personnage, vous devez définir les propriétés suivantes requises pour activer l'IK :
Propriété | Avertissement |
---|---|
Type | Spécifie le type de comportement du contrôle IK. Voir Enum.IKControlType pour la liste des options de comportement. Les types de comportement communs sont Position ou Transform . |
EndEffector | Un BasePart ou Bone dans votre rig de personnage qui suit vers le Target .Par exemple, vous pouvez définir une os de la main gauche comme un EndEffector pour atteindre un ensemble d'objets de poignée comme le Target. |
Target | L'objet que le EndEffector atteint ou vers lequel il pointe. Un Target peut être n'importe quel objet avec une position mondiale. |
ChainRoot | Définit la chaîne de BaseParts ou Bones que le IKControl affecte.Toutes les parties connectées entre le ChainRoot et le EndEffector sont affectées par le IKControl utilisant le type de comportement défini. Par exemple, si la main gauche de votre personnage est définie comme la gauche, vous pouvez appliquer IK à l'ensemble du bras gauche en définissant comme la gauche sur le bras supérieur gauche.Pour appliquer IK seulement aux parties en dessous du coude, définissez ChainRoot à la Bras inférieur gauche . |
Tester les contrôles IK
Vous pouvez ajouter et modifier IKControl programmatiquement ou directement via l'Explorer.Vous pouvez même ajouter et faire des modifications à IKControl pendant un test de jeu pour vérifier rapidement comment différentes propriétés affectent les mouvements d'un personnage.
Pour tester rapidement votre IKControl en utilisant un Attachment comme cible :
Dans l'onglet Test de la barre d'outils, sélectionnez Jouer pour démarrer le test de jeu.
Cliquez sur l'icône ⊕ à côté du modèlisationde personnage de votre HumanoidRootPart et ajoutez une pièce jointe .
Sélectionnez le pièce jointe et utilisez l'outil déplacer pour positionner l'objet devant votre personnage dans la fenêtre de jeu.
Dans la fenêtre Explorateur , sélectionnez l'icône ⊕ à côté du Humanoid de votre personnage et ajoutez un IKControl .
Sélectionnez le IKControl et définissez les valeurs de propriété suivantes dans le panneau Propriétés :
- Type : Sélectionnez Transform dans le menu déroulant.
- Cible : Sélectionnez l'objet pièce jointe nouvellement créé dans l'Explorer.
- ChainRoot : Sélectionnez le Bras supérieur gauche de votre modèlisationdans l'Explorer.
Propriétés de contrôle IK >Panneau explorateur - Modèle de caractère >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 différents résultats.
Ajouter des contraintes
Vous pouvez utiliser Constraints pour restreindre la manière dont les jointures peuvent se déplacer lorsqu'elles atteignent leur cible.Les contraintes peuvent garantir que les articulations comme les coudes et les genoux se plient naturellement, ou pour faire tourner les articulations mécaniques dans une orientation spécifique.


Pour ajouter des contraintes à votre personnage en utilisant IKControl , votre IKControl et la contrainte doit répondre aux conditions suivantes :
- Les pièces jointes mentionnées dans les propriétés de contrainte Attachment0 / Attachment1 se fixent aux mêmes parties que les Motor6D / Part0 / Part1.
- Les positions relatives de Attachment0 / Attachment1 doivent être égales aux positions correspondantes des Motor6D / C0 / C1 CFrames.
- La contrainte et l'IKControl partagent le même parent Model.
Les instructions suivantes décrivent le processus d'ajout d'un HingeConstraint pour restreindre la rotation du coude d'un personnage et ajouter un BallSocketConstraint au poignet pour limiter l'angle de rotation.
Coude
Les personnages Roblox R15 incluent déjà des accessoires dans leurs articulations que vous pouvez utiliser pour appliquer la contrainte d'épaule.Pour le coude, les bras supérieur et inférieur gauche incluent tous deux un LeftElbowRigAttachment.En plus d'ajouter une contrainte, vous devez également ajouter des attachements enfants supplémentaires à chaque partie de LeftElbowRigAttachment pour spécifier sur quelle axe l'épaule peut tourner.
Pour ajouter les HingeConstraint et les pièces jointes enfants :
Dans l'Explorer, localisez le bras inférieur gauche de votre modèlisationet cliquez sur le bouton ⊕ .
Ajoutez une contrainte de charnière avec le nom LeftElbowConstraint.
Dans l'Explorer, naviguez jusqu'au LeftUpperArm.LeftElbowRigAttachment et ajoutez une point d'attache:
Cliquez sur le bouton ⊕ pour ajouter une pièce jointe avec le nom LeftElbowConstraintAttachment0.
Dans la fenêtre de jeu, sélectionnez l'attachement et utilisez l'outil Rotate tool pour faire pivoter l'attachement afin que l'axe jaune PrimaryAxis soit l'axe de la rotation prévue de votre coude.
Définissez la propriété LeftElbowConstraint.Attachment0 à cet nouvel point d'attache.
Dans l'Explorer, naviguez vers le Bras inférieur gauche de votre modèlisation.ElbowRigAttachment ajoutez une point d'attache:
- Cliquez sur le bouton ⊕ et ajoutez une pièce jointe avec le nom LeftElbowConstraintAttachment1.
- Définissez la propriété LeftUpperArm.LeftElbowConstraint.Attachment1 à cette nouvelle point d'attache.
- Copiez la propriété LeftElbowConstraintAttachment0.CFrameOrientation et collez-la en tant que valeur LeftElbowConstraint.Attachment1.CFrameOrientation .
Testez votre IKControl pour vérifier que le coude ne tourne que sur son axe de charnière :
Poignets
Même avec la contrainte de l'épaule, l'IKControl peut toujours produire des poses irréalistes avec les poignets.

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 à l'épaule, vous pouvez utiliser la propriété LimitsEnabled sur cette contrainte pour contrôler plus précisément la portée de mouvement du poignet.
Pour ajouter un BallSocketConstraint pour le poignet :
- Dans l'Explorer, localisez la main gauche de votre modèlisationet cliquez sur le bouton ⊕ .
- Ajoutez une contrainte de socket de balle avec le nom LeftWristConstraint.
- Localisez le LeftLowerArm.LeftWristRigAttachment de votre modèlisationet ajoutez une point d'attache:
- Cliquez sur le bouton ⊕ et ajoutez une pièce jointe avec le nom LeftWristConstraintAttachment0.
- Dans la fenêtre de jeu, sélectionnez l'attachement et utilisez l'outil Rotate tool pour faire pivoter l'attachement afin que les points jaunes de l'axe principal se dirigent vers les doigts du modèlisation.
- Définissez la propriété LeftWristConstraint.Attachment0 à la nouvelle LeftWristConstraintAttachment0.
- Localisez le LeftHand.LeftWristRigAttachment de votre modèlisationet ajoutez une point d'attache:
- Cliquez sur le bouton ⊕ et ajoutez une pièce jointe avec le nom LeftWristConstraintAttachment1.
- Copiez la propriété LeftWristConstraintAttachment0.CFrameOrientation et collez-la comme propriété LeftWristConstraintAttachment1.CFrameOrientation .
- Définissez la propriété LeftWristConstraint.Attachment1 à ce nouvel LeftWristConstraintAttachment1 .
- Dans l'Explorer, sélectionnez la contrainte de poignet gauche .
- Dans l'éditeur de propriétés, définissez ce qui suivre:
- Activer Limites activées .
- Définir angle supérieur à 80.Cela contrôle la quantité de rotation que l'axe de la contrainte peut effectuer, et 80 degrés est environ la quantité de flexion que le poignet devrait être en mesure d'effectuer.
- En fonction de votre personnage, vous pouvez vouloir modifier la direction vers laquelle le cône pointe.Vous pouvez le faire en utilisant l'outil Rotation pour faire pivoter l'attachement de la contrainte Attachment0 .
Lors de la sélection de la contrainte du poignet gauche , un cône vert apparaît pour visualiser la portée de mouvement du poignet.

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