Kinétique inversée

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

Inverse Kinematics (IK) est une technique commune dans l'animation de la réalité 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 personnages en posant ou en ajustant un seul objet.

Cette technologie d'animation peut fournir des solutions aux exemples suivants :

Prenez et posez la main d'un personnage tout en réglant automatiquement les membres liés, tels que le poignet, l'aine et l'épaule.
Faites interagir les pieds d'un personnage de manière réaliste sur différentes surfaces et pentes.
Prenez et déplacez un seul objet cible pour créer rapidement des interactions réalistes avec votre personnage et vos propres.

IKContrôle

Vous pouvez utiliser un IKControl pour ajouter en toute sécurité l'IK à vos chariots de personnages à l'extérieur de l'éditeur d'animation. Studio vous permet de programmer l'ajout d'IK à tous les personnages, tels que R15, Rthro et les personnages importés personnalisés, pour créer des mouvements et des interactions réalistes dans votre expérience.

Lors de l'ajout d'un IKControl, définissez les propriétés requises correctement pour éviter les résultats d'animation inattendus et non naturels. Comme pour toute l'animations, testez vos IKControls pour vous assurer que vous obtenez le comportement souhaité.

Propriétés requises

Lors de l'ajout d'un IKControl à votre personnage, Humanoid ou AnimationController, vous devez définir les propriétés suivantes requises pour activer IK :

PropriétéDescription
TypeSpécifie le type de comportement du contrôle IK. Voir Enum.IKControlType pour la liste d'options de comportement. Les types de comportement courants sont Position ou Transform.
EndEffectorUn BasePart ou un Bone dans votre chariot de personnage qui se dirige vers le Target . Par exemple, vous pouvez configurer un 1>LeftHand1> osse comme un 4> Class.
TargetL'objet que le EndEffector atteint ou pointe vers. Un Target peut être n'importe quel objet avec une position dans le monde.
ChainRootDéfinit la chaîne de BaseParts ou Class.Bone

Test des IKControls

Vous pouvez ajouter et modifier IKControl programmatoirement 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 à l'aide d'un Attachment comme cible :

  1. Dans l'onglet Test, sélectionnez Jouer pour commencer le test de Jouer.

  2. Dans l'Explorer, naviguez à l'espace de travail → le Model de votre utilisateur. Cette instance Model est nommée comme votre compte Roblox actuel.

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

  4. Sélectionnez l' objet d'attribution et utilisez l'outil déplacer pour positionner l'objet devant votre personnage dans la fenêtre d'fenêtre de jeu.

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

  6. Sélectionnez le IKControl et définissez les valeurs de propriété suivantes dans le Property Panel :

    1. Tapez : Sélectionnez Transform dans le menu déroulant.
    2. FinEffector : Sélectionnez votre modèlisation's gaucheMain MeshPart dans l'Explorer.
    3. Cible : Sélectionnez l'objet accessoire créé récemment dans l'Explorer.
    4. ChainRoot : Sélectionnez votre modèlisation's LeftUpperArm MeshPart dans l'Explorer.
    Propriétés de contrôle IK
    Panel de l'explorateur - Modèle de personnage

    Le bras gauche de votre personnage devrait maintenant se déployer sur la cible Attachment. Vous pouvez expérimenter avec le déplacement du Attachment ou l'édition des propriétés IKControl pour obtenir différents résultats.

Ajouter des contraintes

Vous pouvez utiliser Constraints pour restreindre la façon dont les articulations peuvent se déplacer lorsqu'elle atteint sa cible. Les contraintes peuvent garantir que les articulations comme les épaules et les genoux se plient naturellement, ou pour faire pivoter les articulations mécaniques dans une orientation spécifique.

Épaulette courbée non naturellement
Elbow bending correctement

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

  • Les accessoires référencés dans les propriétés Attachment0 / Attachment1 de la contrainte attachent aux mêmes parties que les Motor6D1> Class.Motor6D.Part0|Part01> / 4>
  • Les positions relative de Attachment0 / Attachment1 doivent correspondre aux positions correspondantes du Motor6D1> Class.Motor6D.C0|C01> / 4> Class.Motor6D.C1|C14> C
  • La contrainte et la partage IKControl utilisent le même parent Model .

Les instructions suivantes décrivent le processus d'ajout d'un HingeConstraint pour restreindre la rotation de l'épaule d'un personnage et d'ajouter un BallSocketConstraint à la poitrine pour limiter l'angle de rotation.

Épaule

Les personnages Roblox R15 incluent déjà des accessoires dans leurs jointures que vous pouvez utiliser pour appliquer la contrainte d'épaule. Pour l'épaule, les éléments suivants sont inclus dans le LeftElbowRigAttachment et le LeftElbowRigAttachment : LeftElbowRigAttachment. En ajoutant un élément, vous devez également ajouter des éléments enfants à chaque partie de l'axe de rotation de l

Pour ajouter les HingeConstraint et les enfants d'attributs :

  1. Dans l'Explorer, localisez le LeftLowerArm de votre modèlisationet cliquez sur le bouton .

  2. Ajoutez un HingeConstraint avec le nom LeftElbowConstraint .

  3. Dans l'Explorer, naviguez à l'aide de l'angle supérieur gauche de l'arc gauche et ajoutez un point d'attache:

    1. Cliquez sur le bouton pour ajouter un Attachment avec le nom LeftElbowConstraintAttachment0.

    2. Dans la fenêtre de jeu, sélectionnez l'attribut et utilisez le outil de rotation pour faire pivoter l'attribut afin que le jaune PrimaryAxis soit l'axe de la rotation attendue de votre épaule.

    3. Définissez la propriété LeftElbowConstraint.Attachment0 à cette nouvelle attaque.

  4. Dans l'Explorer, naviguez à votre modèlisationde LeftLowerArm.LeftElbowRigRotationAttribution add an point d'attache:

    1. Cliquez sur le bouton et ajoutez un Attachment avec le nom LeftElbowConstraintAttachment1.
    2. Définissez la propriété LeftUpperArm.LeftElbowConstraint.Rotation1 à cette nouvelle point d'attache.
    3. Copiez la propriété LeftElbowConstraintAttachment0.CFrameOrientation et collez-la comme la valeur LeftElbowConstraint.Attachment1.CFrameOrientation .

Testez votre IKControl pour vérifier que le bras ne tourne que autour de son axe articulé :

Poignets

Même avec la contrainte d'épaule, le IKControl peut toujours produire des poses irréalistes avec les poignets.

Le poignet se courbait naturellement moins bien à certaines orientations

Vous pouvez améliorer cela en ajoutant un BallSocketConstraint pour limiter la rotation du poignet. Bien que cela soit similaire au processus pour ajouter un HingeConstraint à la patte d'athlète, vous pouvez utiliser la propriété LimitsEnabled sur cette patte pour contrôler plus précisément la portée de mouvement de

Pour ajouter un BallSocketConstraint pour le poignet :

  1. Dans l'Explorer, localisez le LeftHand de votre modèlisationet cliquez sur le bouton .
    1. Ajoutez un BallSOCocket限制 avec le nom LeftWristConstraint .
  2. Localisez le LeftLowerArm.LeftWristRigAttachment de votre modèlisationet ajoutez un point d'attache:
    1. Cliquez sur le bouton et ajoutez un Attachment avec le nom LeftWristConstraintAttachment0.
    2. Dans la fenêtre de jeu, sélectionnez l'attribut et utilisez l'outil tourner pour tourner l'attribut afin que les points jaunes de l'axe principal pointent vers les doigts du modèlisation.
    3. Définissez la propriété LeftWristConstraint.Rotation0 sur le nouveau LeftWristConstraintAttachment0.
  3. Localisez le LeftHand.LeftWristRigRotationAttachment de votre modèlisationet ajoutez un point d'attache:
    1. Cliquez sur le bouton et ajoutez un Attachment avec le nom LeftWristConstraintAttachment1.
    2. Copiez la propriété LeftWristConstraintAttachment0.CFrameOrientation et collez-la comme la propriété LeftWristConstraintAttachment1.CFrameOrientation .
    3. Définissez la propriété LeftWristConstraint.Attribute1 à ce nouveau LeftWristConstraintAttachment1 .
  4. Dans l'Explorer, sélectionnez le Contrôleur gauche .
  5. Dans l'éditeur de propriétés, définissez les éléments suivre:
    1. Activer LimitsEnabled .
    2. Définir Haut de l'angle à 80 . Ceci contrôle la mesure dans laquelle l'axe de la contrainte peut tourner, et 80 degrés est environ la mesure dans laquelle le poignet devrait être en mesure de se plier.
  6. En fonction de votre personnage, vous voudrez peut-être tweak la direction dans laquelle le cône pointe. Vous pouvez le faire en utilisant l'outil tourner pour tourner la contrainte's Attribut0 .

Lors de la sélection du Contrôleur de 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 pointée en avant du personnage et le poignet devrait tourner et se courber plus naturellement.