Inverse Kinematik (IK) ist eine gängige Technik in der Computeranimation, um Charaktere effizient zu bewegen und realistisch mit ihrer Umgebung zu interagieren. Der Prozess, eine realistische Bewegung für einen Charakter zu erstellen, erfordert oft viele Iterationen und kleine 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 prozedural IK zu Ihren Charakter-Rigs außerhalb des Animationseditors hinzuzufügen. Studio ermöglicht es Ihnen, IK programmgesteuert auf alle Charaktere anzuwenden, um realistische Bewegungen und Interaktionen in Ihrem Spiel zu erstellen.
Beim Hinzufügen einer IKControl müssen Sie die erforderlichen Eigenschaften korrekt einstellen, 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 dem Humanoid oder AnimationController Ihres Charakters müssen Sie die folgenden erforderlichen Eigenschaften festlegen, um IK zu aktivieren:
| Eigenschaft | Beschreibung |
|---|---|
| Type | Gibt den Verhaltenstyp der IK-Steuerung an. Siehe Enum.IKControlType für die Liste der Verhaltensoptionen. Häufige Verhaltenstypen sind Position oder Transform. |
| EndEffector | Ein BasePart oder Bone in Ihrem Charakter-Rig, das auf das Target zielt. Zum Beispiel können Sie einen LeftHand-Knochen als EndEffector festlegen, um ein Türknaufobjekt zu erreichen, 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 dem EndEffector werden von der IKControl unter Verwendung des definierten Verhaltenstyps beeinflusst. Zum Beispiel, wenn 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 unterhalb des Ellenbogens anzuwenden, setzen Sie ChainRoot auf den LeftLowerArm. |
Testen von IKControls
Sie können IKControl programmgesteuert oder direkt über den Explorer hinzufügen und bearbeiten. Sie können sogar IKControl während eines Spieltests hinzufügen und Änderungen vornehmen, um schnell zu überprüfen, wie verschiedene Eigenschaften die Bewegungen eines Charakters beeinflussen.
Um Ihre IKControl schnell zu testen, indem Sie eine Attachment als Ziel verwenden:
Starten Sie einen Spieltest aus der Mezzanine von Studio.
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 vor Ihrem Charakter im Viewport 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:
- Type: Wählen Sie Transform aus dem Dropdown-Menü.
- Target: 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 einzuschränken, wie Gelenke sich bewegen können, wenn sie ihr Ziel erreichen. Einschränkungen können sicherstellen, dass Gelenke wie Ellenbogen und Knie natürlich beugen oder dass mechanische Gelenke in einer bestimmten Ausrichtung rotieren.


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 Anhänge müssen an denselben Teilen wie die Motor6D Part0/Part1 befestigt sein.
- Die relativen Positionen von Attachment0/Attachment1 müssen den entsprechenden Positionen der Motor6D C0/C1 CFrames entsprechen.
- Die Einschränkung und die IKControl müssen dasselbe übergeordnete Model teilen.
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 Rotationswinkel zu begrenzen.
Ellenbogen
Charaktere mit R15-Rigs enthalten bereits Anhänge in ihren Gelenken, die Sie verwenden können, um die Ellenbogenbeschränkung anzuwenden. Für den Ellenbogen enthalten sowohl der LeftUpperArm als auch der LeftLowerArm eine LeftElbowRigAttachment. Neben dem Hinzufügen einer Einschränkung müssen Sie auch zusätzliche Kind-Anhänge zu jedem Teil's LeftElbowRigAttachment hinzufügen, um anzugeben, um welche Achse sich der Ellenbogen drehen kann.
Um die HingeConstraint und die Kind-Anhänge hinzuzufügen:
Suchen Sie im Explorer-Fenster 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-Fenster zu der LeftUpperArm.LeftElbowRigAttachment und fügen Sie einen Anhang hinzu:
Klicken Sie auf die ⊕-Schaltfläche, um einen Attachment mit dem Namen LeftElbowConstraintAttachment0 hinzuzufügen.
Wählen Sie im Viewport den Anhang aus und verwenden Sie das Drehwerkzeug, um den Anhang so zu drehen, dass die gelbe PrimaryAxis die Achse der erwarteten Rotation Ihres Ellenbogens ist.

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

Testen Sie Ihre 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 unrealistische Posen mit den Handgelenken erzeugen.

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

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

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