Inverse Kinematik (IK) ist eine gängige Technik in der Computeranimation, um Charaktere effizient und realistisch mit ihrer Umgebung zu bewegen und zu interagieren. Der Prozess, eine realistische Bewegung für einen Charakter zu erstellen, erfordert oft viele Iterationen und kleinere Anpassungen der verschiedenen Gelenke. Mit IK können Sie mehrere Teile eines Charakters posieren und animieren, indem Sie ein einzelnes Objekt posieren oder anpassen.
Diese Animationstechnik kann Lösungen für die folgenden Beispiele bieten:
IKControl
Sie können eine IKControl verwenden, um procedurale IK zu Ihren Charakter-Rigs außerhalb des Animation Editors hinzuzufügen. Studio ermöglicht es Ihnen, IK programmgesteuert auf alle Charaktere anzuwenden, wie R15, Rthro und benutzerdefinierte importierte Skin-Charaktere, um realistische Bewegungen und Interaktionen in Ihrem Spiel zu erzeugen.
Beim Hinzufügen einer IKControl müssen Sie die erforderlichen Eigenschaften korrekt festlegen, um unerwartete und unnatürliche Animationsergebnisse zu vermeiden. Wie bei allen Animationen sollten Sie Ihre IKControls testen, um sicherzustellen, dass Sie das gewünschte Verhalten erreichen.
Erforderliche Eigenschaften
Beim Hinzufügen einer IKControl zu Humanoid oder AnimationController Ihres Charakters müssen Sie die folgenden erforderlichen Eigenschaften festlegen, um IK zu aktivieren:
| Eigenschaft | Beschreibung |
|---|---|
| Type | Bestimmt den Verhaltenstyp der IK-Steuerung. Siehe Enum.IKControlType für die Liste der Verhaltensoptionen. Gängige Verhaltenstypen sind Position oder Transform. |
| EndEffector | Ein BasePart oder Bone in Ihrem Charakter-Rig, das auf das Target ausgerichtet ist. Zum Beispiel können Sie einen LeftHand-Knochen als EndEffector festlegen, um auf ein Türknaufobjekt zuzugreifen, das als Target festgelegt ist. |
| Target | Das Objekt, das der EndEffector erreicht oder auf das es zeigt. Ein Target kann jedes Objekt mit einer Weltposition sein. |
| ChainRoot | Definiert die Kette von BaseParts oder Bones, die die IKControl beeinflusst. Alle verbundenen Teile zwischen dem ChainRoot und der EndEffector werden von der IKControl unter Verwendung des definierten Verhaltenstyps beeinflusst. Wenn zum Beispiel die LeftHand Ihres Charakters als Target festgelegt ist, können Sie IK auf den gesamten linken Arm anwenden, indem Sie ChainRoot auf den LeftUpperArm festlegen. Um IK nur auf die Teile unter dem Ellenbogen anzuwenden, legen Sie ChainRoot auf den LeftLowerArm fest. |
Test IKControls
Sie können IKControl programmgesteuert oder direkt über den Explorer hinzufügen und bearbeiten. Sie können sogar IKControl während eines Play-Tests hinzufügen und ändern, um schnell zu überprüfen, wie verschiedene Eigenschaften die Bewegungen eines Charakters beeinflussen.
Um Ihr IKControl schnell zu testen, indem Sie eine Attachment als Ziel verwenden:
Initiieren Sie einen Playtest über das Mezzanin von Studio, starten Sie einen Playtest.
Klicken Sie auf das ⊕-Symbol neben dem HumanoidRootPart Ihres Charaktermodells und fügen Sie eine Attachment hinzu.

Wählen Sie die Attachment aus und verwenden Sie das Bewege-Werkzeug, um das Objekt im Viewport vor Ihrem Charakter zu positionieren.

Wählen Sie im Explorer-Fenster das ⊕-Symbol neben dem Humanoid Ihres Charakters und fügen Sie eine IKControl hinzu.

Wählen Sie die IKControl aus und setzen Sie die folgenden Eigenschaftswerte im Eigenschaften-Fenster:
- Typ: Wählen Sie Transform aus dem Dropdown-Menü.
- Ziel: Wählen Sie das neu erstellte Attachment-Objekt im Explorer aus.

IKControl Eigenschaften 
Explorer - Charaktermodell Der linke Arm Ihres Charakters sollte nun nach dem Ziel Attachment greifen. Sie können experimentieren, indem Sie die Attachment bewegen oder die Eigenschaften der IKControl bearbeiten, um unterschiedliche Ergebnisse zu erzielen.
Einschränkungen hinzufügen
Sie können Constraints verwenden, um sich einzuschränken, wie Gelenke sich bewegen können, wenn sie ihr Ziel erreichen. Einschränkungen können sicherstellen, dass Gelenke wie Ellenbogen und Knie sich natürlich biegen oder dass die mechanischen Gelenke sich in einer bestimmten Orientierung drehen.


Um Einschränkungen zu Ihrem Charakter mit IKControl hinzuzufügen, müssen Ihre IKControl und die Einschränkung die folgenden Bedingungen erfüllen:
- Die in den Eigenschaften Attachment0/Attachment1 der Einschränkung referenzierten Attachments müssen an denselben Teilen wie die Motor6D Part0/Part1 angebracht sein.
- Die relativen Positionen von Attachment0/Attachment1 müssen den entsprechenden Positionen der Motor6D C0/C1 CFrames entsprechen.
- Die Einschränkung und die IKControl teilen sich dasselbe übergeordnete Model.
Die folgenden Anweisungen beschreiben den Prozess, eine HingeConstraint hinzuzufügen, um die Rotation des Ellenbogens eines Charakters einzuschränken, und eine BallSocketConstraint zum Handgelenk hinzuzufügen, um den Drehwinkel zu begrenzen.
Ellenbogen
Roblox R15-Charaktere enthalten bereits Attachments in ihren Gelenken, die Sie verwenden können, um die Ellenbogenbeschränkung anzuwenden. Für den Ellenbogen verfügen sowohl der LeftUpperArm als auch der LeftLowerArm über eine LeftElbowRigAttachment. Neben dem Hinzufügen einer Einschränkung müssen Sie auch zusätzliche untergeordnete Attachments an dem LeftElbowRigAttachment jedes Teils hinzufügen, um anzugeben, um welche Achse sich der Ellenbogen drehen kann.
Um die HingeConstraint und die untergeordneten Attachments hinzuzufügen:
Suchen Sie im Explorer das LeftLowerArm Ihres Modells und klicken Sie auf die ⊕-Schaltfläche.
Fügen Sie eine HingeConstraint mit dem Namen LeftElbowConstraint hinzu.
Navigieren Sie im Explorer zu der LeftUpperArm.LeftElbowRigAttachment und fügen Sie ein Attachment hinzu:
Klicken Sie auf die ⊕-Schaltfläche, um ein Attachment mit dem Namen LeftElbowConstraintAttachment0 hinzuzufügen.
Wählen Sie im Viewport das Attachment aus und verwenden Sie das Drehwerkzeug, um das Attachment so zu drehen, dass die gelbe PrimaryAxis die Achse der erwarteten Rotation Ihres Ellenbogens ist.

Setzen Sie die Eigenschaft LeftElbowConstraint.Attachment0 auf dieses neue Attachment.
Navigieren Sie im Explorer zu LeftLowerArm.LeftElbowRigAttachment Ihres Modells und fügen Sie ein Attachment hinzu:
- Klicken Sie auf die ⊕-Schaltfläche und fügen Sie ein Attachment mit dem Namen LeftElbowConstraintAttachment1 hinzu.
- Setzen Sie die Eigenschaft LeftUpperArm.LeftElbowConstraint.Attachment1 auf dieses neue Attachment.
- Kopieren Sie die Eigenschaft LeftElbowConstraintAttachment0.CFrameOrientation und fügen Sie diese als Wert für LeftElbowConstraint.Attachment1.CFrameOrientation ein.

Testen Sie Ihr IKControl, um zu überprüfen, ob sich der Ellenbogen nur um seine Scharnierachse dreht:
Handgelenke
Selbst mit der Ellenbogenbeschränkung kann die IKControl immer noch unnatürliche Posen mit den Handgelenken erzeugen.

Sie können dies verbessern, indem Sie eine BallSocketConstraint hinzufügen, um die Rotation des Handgelenks zu begrenzen. Obwohl dies dem Prozess zum Hinzufügen einer HingeConstraint zum Ellenbogen ähnlich ist, können Sie die Eigenschaft LimitsEnabled für diese Einschränkung verwenden, um das Bewegungsspektrum des Handgelenks weiter zu steuern.
Um eine BallSocketConstraint für das Handgelenk hinzuzufügen:
- Suchen Sie im Explorer Ihr Modell LeftHand und klicken Sie auf die ⊕-Schaltfläche.
- Fügen Sie eine BallSocketConstraint mit dem Namen LeftWristConstraint hinzu.
- Suchen Sie das LeftLowerArm.LeftWristRigAttachment Ihres Modells und fügen Sie ein Attachment hinzu:
- Klicken Sie auf die ⊕-Schaltfläche und fügen Sie ein Attachment mit dem Namen LeftWristConstraintAttachment0 hinzu.
- Wählen Sie im Viewport das Attachment aus und verwenden Sie das Drehwerkzeug, um das Attachment so zu drehen, dass die gelbe PrimaryAxis auf die Fingerspitzen des Modells zeigt.

- Setzen Sie die Eigenschaft LeftWristConstraint.Attachment0 auf das neue LeftWristConstraintAttachment0.
- Suchen Sie das LeftHand.LeftWristRigAttachment Ihres Modells und fügen Sie ein Attachment hinzu:
- Klicken Sie auf die ⊕-Schaltfläche und fügen Sie ein Attachment mit dem Namen LeftWristConstraintAttachment1 hinzu.
- Kopieren Sie die Eigenschaft LeftWristConstraintAttachment0.CFrameOrientation und fügen Sie sie als Eigenschaft LeftWristConstraintAttachment1.CFrameOrientation ein.
- Setzen Sie die Eigenschaft LeftWristConstraint.Attachment1 auf dieses neue LeftWristConstraintAttachment1.
- Wählen Sie im Explorer die LeftWristConstraint aus.
- Setzen Sie im Eigenschaften-Fenster Folgendes:
- Aktivieren Sie LimitsEnabled.
- Setzen Sie den UpperAngle auf 80. Dies steuert, wie viel sich die Achse der Einschränkung drehen kann, und 80 Grad sind ungefähr das, wie viel das Handgelenk sich beugen sollte.
- Je nach Charakter möchten Sie möglicherweise die Richtung ändern, in die der Kegel zeigt. Dies können Sie tun, indem Sie das Drehwerkzeug verwenden, um das Attachment0 der Einschränkung zu drehen.
Wenn Sie die LeftWristConstraint auswählen, erscheint ein grüner Kegel, der den Bewegungsspielraum des Handgelenks visualisiert.

Mit der eingerichteten Einschränkung testen Sie das IKControl, indem Sie die Hand nach unten vor dem Charakter zeigen lassen, und das Handgelenk sollte realistischer rotieren und sich beugen.