Kinematyka odwrotna (IK) to powszechna technika w animacji komputerowej, która efektywnie pozwala postaciom poruszać się i wchodzić w realistyczne interakcje z otoczeniem. Proces tworzenia realistycznego ruchu dla postaci często wymaga wielu iteracji i drobnych poprawek różnych stawów. Dzięki IK możesz pozować i animować wiele części postaci, dostosowując lub zmieniając tylko jeden obiekt.
Ta technika animacji może dostarczyć rozwiązań w następujących przykładach:
IKControl
Możesz użyć IKControl, aby proceduralnie dodać IK do rigów postaci poza Animatorem. Studio pozwala programowo zastosować IK do wszystkich postaci, aby stworzyć realistyczny ruch i interakcje w twojej grze.
Podczas dodawania IKControl, poprawnie ustaw wymagane właściwości, aby uniknąć nieoczekiwanych i nienaturalnych wyników animacji. Jak w przypadku każdej animacji, przetestuj swoje IKControls, aby upewnić się, że osiągniesz pożądane zachowanie.
Wymagane właściwości
Podczas dodawania IKControl do Humanoid lub AnimationController twojej postaci, musisz ustawić następujące wymagane właściwości, aby włączyć IK:
| Właściwość | Opis |
|---|---|
| Type | Określa typ zachowania kontrolera IK. Zobacz Enum.IKControlType, aby uzyskać listę opcji zachowania. Typowe typy zachowań to Position lub Transform. |
| EndEffector | Obiekt BasePart lub Bone w twoim rig postaci, który śledzi w kierunku Target. Na przykład, możesz ustawić kość LeftHand jako EndEffector, aby sięgnąć do obiektu klamki ustawionego jako Target. |
| Target | Obiekt, do którego EndEffector sięga lub wskazuje. Target może być dowolnym obiektem z pozycją w świecie. |
| ChainRoot | Definiuje łańcuch BaseParts lub Bones, na które wpływa IKControl. Wszystkie połączone części między ChainRoot a EndEffector są dotknięte przez IKControl przy użyciu zdefiniowanego typu zachowania. Na przykład, jeśli LeftHand twojej postaci jest ustawiona jako Target, możesz zastosować IK do całego lewego ramienia, ustawiając ChainRoot na LeftUpperArm. Aby zastosować IK tylko do części poniżej łokcia, ustaw ChainRoot na LeftLowerArm. |
Testowanie IKControls
Możesz dodać i edytować IKControl programowo lub bezpośrednio przez Eksplorator. Możesz nawet dodać i wprowadzać zmiany w IKControl podczas testu gry, aby szybko sprawdzić, jak różne właściwości wpływają na ruchy postaci.
Aby szybko przetestować swoje IKControl, używając Attachment jako celu:
Z mezzaniny Studio, rozpocznij test gry.
Kliknij ikonę ⊕ obok HumanoidRootPart modelu twojej postaci i dodaj Attachment.

Wybierz Attachment i użyj narzędzia Przesuń, aby umieścić obiekt przed swoją postacią w widoku.

W oknie Eksplorator wybierz ikonę ⊕ obok Humanoid twojej postaci i dodaj IKControl.

Wybierz IKControl i ustaw następujące wartości właściwości w oknie Właściwości:
- Typ: Wybierz Transform z rozwijanego menu.
- Cel: Wybierz nowo utworzony obiekt Attachment w Eksplorator.

Właściwości IKControl 
Eksplorator - Model postaci Lewa ręka twojej postaci powinna teraz sięgać do celu Attachment. Możesz eksperymentować z przesuwaniem Attachment lub edytowaniem właściwości IKControl, aby uzyskać różne wyniki.
Dodaj ograniczenia
Możesz użyć Constraints, aby ograniczyć, jak stawy mogą się poruszać, gdy sięgają do celu. Ograniczenia mogą zapewnić, że stawy, takie jak łokcie i kolana, zginają się naturalnie, lub aby mechaniczne stawy obracały się w określonej orientacji.


Aby dodać ograniczenia do swojej postaci za pomocą IKControl, twój IKControl i ograniczenie muszą spełniać następujące warunki:
- Załączniki, do których odnosi się Attachment0/Attachment1, muszą być podłączone do tych samych części, co Motor6D Part0/Part1.
- Względne pozycje Attachment0/Attachment1 muszą odpowiadać odpowiednim pozycjom Motor6D C0/C1 CFrames.
- Ograniczenie i IKControl muszą mieć ten sam rodzic Model.
Poniższe instrukcje opisują proces dodawania HingeConstraint, aby ograniczyć obrót łokcia postaci oraz dodawania BallSocketConstraint do nadgarstka, aby ograniczyć kąt obrotu.
Łokieć
Postacie z rigami R15 już zawierają załączniki w swoich stawach, które możesz wykorzystać do zastosowania ograniczenia łokcia. Dla łokcia zarówno LeftUpperArm, jak i LeftLowerArm zawierają LeftElbowRigAttachment. Oprócz dodania ograniczenia, musisz również dodać dodatkowe załączniki podrzędne do LeftElbowRigAttachment każdej części, aby określić, wokół której osi łokieć może się obracać.
Aby dodać HingeConstraint i załączniki podrzędne:
W oknie Eksplorator zlokalizuj LeftLowerArm swojego modelu i kliknij przycisk ⊕.
Dodaj HingeConstraint o nazwie LeftElbowConstraint.
W oknie Eksplorator przejdź do LeftUpperArm.LeftElbowRigAttachment i dodaj załącznik:
Kliknij przycisk ⊕, aby dodać Attachment o nazwie LeftElbowConstraintAttachment0.
W widoku wybierz załącznik i użyj narzędzia Obróć, aby obrócić załącznik tak, aby żółta PrimaryAxis była osią oczekiwanego obrotu łokcia.

Ustaw właściwość LeftElbowConstraint.Attachment0 na ten nowy załącznik.
W oknie Eksplorator przejdź do LeftLowerArm.LeftElbowRigAttachment swojego modelu i dodaj załącznik:
- Kliknij przycisk ⊕ i dodaj Attachment o nazwie LeftElbowConstraintAttachment1.
- Ustaw właściwość LeftUpperArm.LeftElbowConstraint.Attachment1 na ten nowy załącznik.
- Skopiuj właściwość LeftElbowConstraintAttachment0.CFrameOrientation i wklej ją jako wartość LeftElbowConstraint.Attachment1.CFrameOrientation.

Przetestuj swoje IKControl, aby zweryfikować, że łokieć obraca się tylko wokół swojej osi zawiasowej:
Nadgarstki
Nawet z ograniczeniem łokcia, IKControl może nadal generować nerealistyczne pozy z nadgarstkami.

Możesz to poprawić, dodając BallSocketConstraint, aby ograniczyć obrót nadgarstka. Chociaż jest to podobne do procesu dodawania HingeConstraint do łokcia, możesz użyć właściwości LimitsEnabled na tym ograniczeniu, aby dalej kontrolować zakres ruchu nadgarstka.
Aby dodać BallSocketConstraint dla nadgarstka:
- W oknie Eksplorator zlokalizuj LeftHand swojego modelu i kliknij przycisk ⊕.
- Dodaj BallSocketConstraint o nazwie LeftWristConstraint.
- Zlokalizuj LeftLowerArm.LeftWristRigAttachment swojego modelu i dodaj załącznik:
- Kliknij przycisk ⊕ i dodaj Attachment o nazwie LeftWristConstraintAttachment0.
- W widoku wybierz załącznik i użyj narzędzia Obróć, aby obrócić załącznik tak, aby żółta PrimaryAxis wskazywała w kierunku palców modelu.

- Ustaw właściwość LeftWristConstraint.Attachment0 na nowy LeftWristConstraintAttachment0.
- Zlokalizuj LeftHand.LeftWristRigAttachment swojego modelu i dodaj załącznik:
- Kliknij przycisk ⊕ i dodaj Attachment o nazwie LeftWristConstraintAttachment1.
- Skopiuj właściwość LeftWristConstraintAttachment0.CFrameOrientation i wklej ją jako właściwość LeftWristConstraintAttachment1.CFrameOrientation.
- Ustaw właściwość LeftWristConstraint.Attachment1 na ten nowy LeftWristConstraintAttachment1.
- W oknie Eksplorator wybierz LeftWristConstraint.
- W oknie Właściwości ustaw następujące:
- Włącz LimitsEnabled.
- Ustaw UpperAngle na 80. To kontroluje, jak bardzo oś ograniczenia może się obracać, a 80 stopni to mniej więcej tyle, ile nadgarstek powinien być w stanie zgiąć się.
- W zależności od twojej postaci, możesz chcieć dostosować kierunek, w którym wskazuje stożek. Możesz to zrobić, używając narzędzia Obróć, aby obrócić Attachment0 ograniczenia.
Podczas wybierania LeftWristConstraint pojawia się zielony stożek wizualizujący zakres ruchu nadgarstka.

Po ustawieniu ograniczenia przetestuj IKControl, wskazując ręką w dół przed postacią, a nadgarstek powinien obracać się i zginać bardziej realistycznie.