Kinematyka odwrotna (IK) to powszechna technika w animacji komputerowej, która skutecznie umożliwia postaciom realistyczne poruszanie się i interakcję z ich otoczeniem. Proces tworzenia realistycznego ruchu postaci często wymaga wielu iteracji i drobnych poprawek dotyczących różnych stawów. Dzięki IK możesz pozować i animować wiele części postaci, zmieniając lub dostosowując jeden obiekt.
Ta technika animacyjna może zapewnić rozwiązania dla następujących przykładów:
IKControl
Możesz użyć IKControl, aby procedurally dodać IK do rigów swojej postaci poza Animatorem. Studio umożliwia programowe zastosowanie IK do wszystkich postaci, takich jak R15, Rthro oraz niestandardowe importowane postacie z siatką, aby stworzyć realistyczny ruch i interakcje w grze.
Dodając IKControl, prawidłowo ustaw wymagane właściwości, aby uniknąć niespodziewanych i nienaturalnych wyników animacji. Jak w przypadku całej animacji, przetestuj swoje IKControls, aby upewnić się, że osiągasz pożądane zachowanie.
Wymagane właściwości
Dodając IKControl do Humanoid lub AnimationController swojej 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 na liście opcji zachowania. Typowe typy zachowania to Position lub Transform. |
| EndEffector | Partia BasePart lub Bone w twoim rig postaci, która kieruje się w stronę Target. Na przykład, możesz ustawić kość LeftHand jako EndEffector, aby sięgnąć do obiektu gałki do drzwi ustawionej jako Target. |
| Target | Obiekt, do którego EndEffector sięga lub wskazuje. Target może być dowolnym obiektem z położeniem na świecie. |
| ChainRoot | Definiuje łańcuch BaseParts lub Bones, które kontroler IK wpływa. Wszystkie połączone części między ChainRoot a EndEffector są dotknięte przez kontroler IK 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 dla 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 Przenieś, aby umieścić obiekt przed 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 rozwijanej listy.
- Cel: Wybierz nowo utworzony obiekt Attachment w Eksploratorze.

Właściwości IKControl 
Eksplorator - Model postaci Lewa ręka twojej postaci powinna teraz sięgać w stronę celu Attachment. Możesz eksperymentować, przesuwając Attachment lub edytując właściwości IKControl, aby osiągnąć różne rezultaty.
Dodaj ograniczenia
Możesz używać Constraints, aby ograniczyć sposób, w jaki stawy mogą poruszać się podczas sięgania do celu. Ograniczenia mogą zapewnić, że stawy, takie jak łokcie i kolana, będą się wyginać w naturalny sposób lub aby mechaniczne stawy obracały się w określonym kierunku.


Aby dodać ograniczenia do swojej postaci przy użyciu IKControl, twój IKControl i ograniczenie muszą spełniać następujące warunki:
- Załączniki wymienione w właściwościach Attachment0/Attachment1 muszą być połączone z tymi samymi częściami, co Motor6D Part0/Part1.
- Względne położenia Attachment0/Attachment1 muszą odpowiadać odpowiednim położeniom 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 dodania BallSocketConstraint do nadgarstka, aby ograniczyć kąt obrotu.
Łokieć
Postacie Roblox R15 już zawierają załączniki w swoich stawach, które można wykorzystać do zastosowania ograniczenia łokcia. Dla łokcia zarówno LeftUpperArm, jak i LeftLowerArm zawierają LeftElbowRigAttachment. Oprócz dodania ograniczenia, musisz także dodać dodatkowe załączniki dla każdego załącznika LeftElbowRigAttachment, aby określić, wokół którego osi łokieć może się obracać.
Aby dodać HingeConstraint i załączniki dzieci:
W Eksploratorze znajdź LeftLowerArm swojego modelu i kliknij ⊕ przycisk.
Dodaj HingeConstraint o nazwie LeftElbowConstraint.
W Eksploratorze 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 ruchu łokcia.

Ustaw właściwość LeftElbowConstraint.Attachment0 na ten nowy załącznik.
W Eksploratorze przejdź do LeftLowerArm.LeftElbowRigAttachment 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ół osi swojego zawiasu:
Nadgarstki
Nawet z ograniczeniem łokcia, IKControl może nadal generować nierealistyczne pozy z nadgarstkami.

Możesz to poprawić, dodając BallSocketConstraint, aby ograniczyć rotację nadgarstka. Chociaż jest to podobny proces do dodawania HingeConstraint do łokcia, możesz użyć właściwości LimitsEnabled na tym ograniczeniu, aby jeszcze bardziej kontrolować zakres ruchu nadgarstka.
Aby dodać BallSocketConstraint do nadgarstka:
- W Eksploratorze znajdź 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 na palce 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 nowy LeftWristConstraintAttachment1.
- W Eksploratorze wybierz LeftWristConstraint.
- W oknie Właściwości ustaw następujące:
- Włącz LimitsEnabled.
- Ustaw UpperAngle na 80. To kontroluje, jak dużo oś ograniczenia może się obracać, a 80 stopni to mniej więcej to, ile nadgarstek powinien mieć możliwość zgięcia.
- W zależności od swojej postaci, możesz chcieć dostosować kierunek, w którym wskazuje kono. Możesz to zrobić, korzystając z narzędzia Obróć, aby obrócić Attachment0 ograniczenia.
Podczas wybierania LeftWristConstraint pojawia się zielony stożek wizualizujący zakres ruchu nadgarstka.

Gdy ograniczenie jest skonfigurowane, przetestuj IKControl z ręką wskazującą w dół przed postacią, a nadgarstek powinien obracać się i zginać w bardziej realistyczny sposób.