Kinematika Invers (IK) adalah teknik umum dalam animasi komputer untuk secara efisien membuat karakter bergerak dan berinteraksi secara realistis dengan lingkungan mereka. Proses menciptakan gerakan yang realistis untuk sebuah karakter sering kali memerlukan banyak iterasi dan penyesuaian kecil dari berbagai sendi. Dengan IK, Anda dapat memposisikan dan menganimasikan beberapa bagian karakter dengan memposisikan atau menyesuaikan satu objek.
Teknik animasi ini dapat memberikan solusi untuk contoh berikut:
IKControl
Anda dapat menggunakan IKControl untuk secara prosedural menambahkan IK ke rig karakter Anda di luar Editor Animasi. Studio memungkinkan Anda untuk secara programatik menerapkan IK ke semua karakter, seperti R15, Rthro, dan karakter skin yang diimpor kustom, untuk menciptakan gerakan dan interaksi yang realistis dalam permainan Anda.
Ketika menambahkan IKControl, atur properti yang diperlukan dengan benar untuk menghindari hasil animasi yang tidak terduga dan tidak alami. Seperti semua animasi, uji IKControls Anda untuk memastikan bahwa Anda mencapai perilaku yang diinginkan.
Properti yang diperlukan
Ketika menambahkan IKControl ke Humanoid karakter Anda atau AnimationController, Anda harus mengatur properti yang diperlukan berikut untuk mengaktifkan IK:
| Properti | Deskripsi |
|---|---|
| Type | Menentukan tipe perilaku dari kontrol IK. Lihat Enum.IKControlType untuk daftar opsi perilaku. Tipe perilaku yang umum adalah Position atau Transform. |
| EndEffector | Sebuah BasePart atau Bone dalam rig karakter Anda yang mengarah ke Target. Sebagai contoh, Anda dapat mengatur bone LeftHand sebagai EndEffector untuk mencapai objek knop pintu yang diatur sebagai Target. |
| Target | Objek yang dicapai atau ditunjuk oleh EndEffector. Sebuah Target dapat berupa objek apa saja dengan posisi dunia. |
| ChainRoot | Menentukan rantai dari BaseParts atau Bones yang dipengaruhi oleh IKControl. Semua bagian yang terhubung antara ChainRoot dan EndEffector dipengaruhi oleh IKControl menggunakan tipe perilaku yang ditentukan. Sebagai contoh, jika LeftHand karakter Anda diatur sebagai Target, Anda dapat menerapkan IK ke seluruh lengan kiri dengan mengatur ChainRoot ke LeftUpperArm. Untuk menerapkan IK hanya pada bagian di bawah siku, atur ChainRoot ke LeftLowerArm. |
Uji IKControls
Anda dapat menambahkan dan mengedit IKControl secara programatik atau langsung melalui Explorer. Anda bahkan dapat menambahkan dan membuat perubahan pada IKControl saat uji Pemainan untuk memeriksa dengan cepat bagaimana berbagai properti memengaruhi gerakan karakter.
Untuk cepat menguji IKControl Anda menggunakan Attachment sebagai target:
Dari mezzanine Studio, mulai uji coba bermain.
Klik ikon ⊕ di samping HumanoidRootPart model karakter Anda dan tambahkan sebuah Attachment.

Pilih Attachment dan gunakan alat Move untuk memposisikan objek di depan karakter Anda di viewport.

Di jendela Explorer, pilih ikon ⊕ di samping Humanoid karakter Anda dan tambahkan sebuah IKControl.

Pilih IKControl dan atur nilai properti berikut di jendela Properties:
- Type: Pilih Transform dari dropdown.
- Target: Pilih objek Attachment yang baru dibuat di Explorer.

Properti IKControl 
Explorer - Model Karakter Lengan kiri karakter Anda sekarang seharusnya menjangkau objek target Attachment. Anda dapat bereksperimen dengan menggerakkan Attachment atau mengedit properti IKControl untuk mencapai hasil yang berbeda.
Tambahkan batasan
Anda dapat menggunakan Constraints untuk membatasi bagaimana sendi dapat bergerak saat mencapai targetnya. Batasan dapat memastikan bahwa sendi seperti siku dan lutut membengkok secara alami, atau untuk membuat sendi mekanik berputar dalam orientasi tertentu.


Untuk menambahkan batasan pada karakter Anda menggunakan IKControl, IKControl dan batasan harus memenuhi syarat-syarat berikut:
- Lampiran yang dirujuk dalam properti Attachment0/Attachment1 dari batasan harus terpasang pada bagian yang sama dengan Motor6D Part0/Part1.
- Posisi relatif dari Attachment0/Attachment1 harus sama dengan posisi yang relevan dari Motor6D C0/C1 CFrames.
- Batasan dan IKControl harus berbagi induk yang sama Model.
Instruksi berikut menggambarkan proses menambahkan HingeConstraint untuk membatasi rotasi siku karakter dan menambahkan BallSocketConstraint ke pergelangan tangan untuk membatasi sudut rotasi.
Siku
Karakter Roblox R15 sudah menyertakan lampiran di sendi-joint mereka yang dapat Anda gunakan untuk menerapkan batasan siku. Untuk siku, baik LeftUpperArm maupun LeftLowerArm menyertakan LeftElbowRigAttachment. Bersamaan dengan menambahkan batasan, Anda juga perlu menambahkan lampiran anak tambahan ke setiap bagian LeftElbowRigAttachment untuk menentukan sumbu mana yang dapat diputar oleh siku.
Untuk menambahkan HingeConstraint dan lampiran anak:
Di Explorer, temukan LeftLowerArm model Anda dan klik tombol ⊕.
Tambahkan HingeConstraint dengan nama LeftElbowConstraint.
Di Explorer, navigasikan ke LeftUpperArm.LeftElbowRigAttachment dan tambahkan sebuah lampiran:
Klik tombol ⊕ untuk menambahkan Attachment dengan nama LeftElbowConstraintAttachment0.
Di viewport, pilih lampiran tersebut dan gunakan alat Rotate untuk memutar lampiran sehingga PrimaryAxis kuning menjadi sumbu dari rotasi siku yang diharapkan.

Atur properti LeftElbowConstraint.Attachment0 ke lampiran baru ini.
Di Explorer, navigasikan ke LeftLowerArm.LeftElbowRigAttachment dan tambahkan sebuah lampiran:
- Klik tombol ⊕ dan tambahkan Attachment dengan nama LeftElbowConstraintAttachment1.
- Atur properti LeftUpperArm.LeftElbowConstraint.Attachment1 ke lampiran baru ini.
- Salin properti LeftElbowConstraintAttachment0.CFrameOrientation dan tempelkan sebagai nilai LeftElbowConstraint.Attachment1.CFrameOrientation.

Uji IKControl Anda untuk memverifikasi bahwa siku hanya berputar di sekitar sumbu engselnya:
Pergelangan Tangan
Bahkan dengan batasan siku, IKControl masih dapat menghasilkan pose yang tidak realistis dengan pergelangan tangan.

Anda dapat memperbaikinya dengan menambahkan BallSocketConstraint untuk membatasi rotasi pergelangan tangan. Meskipun ini mirip dengan proses untuk menambahkan HingeConstraint ke siku, Anda dapat menggunakan properti LimitsEnabled pada batasan ini untuk mengontrol lebih jauh rentang gerakan pergelangan tangan.
Untuk menambahkan BallSocketConstraint untuk pergelangan tangan:
- Di Explorer, temukan LeftHand model Anda dan klik tombol ⊕.
- Tambahkan BallSocketConstraint dengan nama LeftWristConstraint.
- Temukan LeftLowerArm.LeftWristRigAttachment model Anda dan tambahkan sebuah lampiran:
- Klik tombol ⊕ dan tambahkan Attachment dengan nama LeftWristConstraintAttachment0.
- Di viewport, pilih lampiran dan gunakan alat Rotate untuk memutar lampiran sehingga PrimaryAxis kuning mengarah ke jari model.

- Atur properti LeftWristConstraint.Attachment0 ke LeftWristConstraintAttachment0 baru.
- Temukan LeftHand.LeftWristRigAttachment model Anda dan tambahkan sebuah lampiran:
- Klik tombol ⊕ dan tambahkan Attachment dengan nama LeftWristConstraintAttachment1.
- Salin properti LeftWristConstraintAttachment0.CFrameOrientation dan tempelkan sebagai properti LeftWristConstraintAttachment1.CFrameOrientation.
- Atur properti LeftWristConstraint.Attachment1 ke LeftWristConstraintAttachment1 yang baru ini.
- Di Explorer, pilih LeftWristConstraint.
- Di jendela Properties, atur yang berikut:
- Aktifkan LimitsEnabled.
- Atur UpperAngle ke 80. Ini mengontrol seberapa banyak sumbu batasan dapat berputar, dan 80 derajat adalah sekitar seberapa banyak pergelangan tangan dapat membengkok.
- Bergantung pada karakter Anda, Anda mungkin ingin menyesuaikan arah kerucutnya. Anda dapat melakukannya dengan menggunakan alat Rotate untuk memutar Attachment0 pada batasan tersebut.
Saat memilih LeftWristConstraint, sebuah kerucut hijau muncul menvisualisasikan rentang gerakan pergelangan tangan.

Dengan batasan yang sudah diatur, uji IKControl dengan tangan menunjuk ke bawah di depan karakter dan pergelangan tangan seharusnya berputar dan membengkok lebih realistis.