การเคลื่อนไหวย้อนกลับ (IK) เป็นเทคนิคทั่วไปในอนิเมชันคอมพิวเตอร์ที่ช่วยให้ตัวละครเคลื่อนไหวและมีปฏิสัมพันธ์กับสภาพแวดล้อมได้อย่างสมจริง กระบวนการสร้างการเคลื่อนไหวที่สมจริงสำหรับตัวละครมักต้องการการปรับแต่งและการปรับเปลี่ยนเล็กน้อยหลายครั้งในข้อต่อที่แตกต่างกัน ด้วย IK คุณสามารถจัดท่าทางและอนิเมทหลายส่วนของตัวละครโดยการจัดท่าทางหรือปรับเปลี่ยนวัตถุเพียงชิ้นเดียว
เทคนิคการอนิเมทนี้สามารถให้โซลูชันสำหรับตัวอย่างต่อไปนี้:
IKControl
คุณสามารถใช้ IKControl เพื่อเพิ่ม IK ให้กับตัวละครของคุณอย่างเป็นระบบนอกเหนือจาก Animation Editor Studio อนุญาตให้คุณใช้ IK กับตัวละครทั้งหมดเพื่อสร้างการเคลื่อนไหวและปฏิสัมพันธ์ที่สมจริงในเกมของคุณ
เมื่อเพิ่ม IKControl ให้ตั้งค่าคุณสมบัติ ที่จำเป็น ให้ถูกต้องเพื่อหลีกเลี่ยงผลลัพธ์การอนิเมทที่ไม่คาดคิดและไม่เป็นธรรมชาติ เช่นเดียวกับการอนิเมททั้งหมด ให้ ทดสอบ IKControls ของคุณ เพื่อให้แน่ใจว่าคุณจะได้พฤติกรรมที่ต้องการ
คุณสมบัติที่จำเป็น
เมื่อเพิ่ม IKControl ให้กับ Humanoid หรือ AnimationController ของตัวละคร คุณต้องตั้งค่าคุณสมบัติที่จำเป็นต่อไปนี้เพื่อเปิดใช้งาน IK:
| คุณสมบัติ | คำอธิบาย |
|---|---|
| Type | ระบุประเภทพฤติกรรมของการควบคุม IK ดู Enum.IKControlType สำหรับรายการตัวเลือกพฤติกรรม ประเภทพฤติกรรมทั่วไปคือ Position หรือ Transform |
| EndEffector | ส่วน BasePart หรือ Bone ในตัวละครของคุณที่ติดตามไปยัง Target ตัวอย่างเช่น คุณสามารถตั้งค่ากระดูก LeftHand เป็น EndEffector เพื่อไปยังวัตถุที่เป็นลูกบิดประตูที่ตั้งค่าเป็น Target |
| Target | วัตถุที่ EndEffector ไปถึงหรือชี้ไปที่ วัตถุ Target สามารถเป็นวัตถุใด ๆ ที่มีตำแหน่งในโลก |
| ChainRoot | กำหนดโซ่ของ BaseParts หรือ Bones ที่ IKControl มีผลกระทบ ทุกส่วนที่เชื่อมต่อระหว่าง ChainRoot และ EndEffector จะได้รับผลกระทบจาก IKControl โดยใช้ประเภทพฤติกรรมที่กำหนด ตัวอย่างเช่น หาก LeftHand ของตัวละครของคุณตั้งเป็น Target คุณสามารถใช้ IK กับแขนซ้ายทั้งหมดโดยตั้งค่า ChainRoot เป็น LeftUpperArm หากต้องการใช้ IK เพียงแค่กับส่วนที่อยู่ด้านล่างข้อศอก ให้ตั้งค่า ChainRoot เป็น LeftLowerArm |
ทดสอบ IKControls
คุณสามารถเพิ่มและแก้ไข IKControl อย่างเป็นระบบหรือโดยตรงผ่าน Explorer คุณสามารถเพิ่มและทำการเปลี่ยนแปลง IKControl ในระหว่างการทดสอบเล่นเพื่อเช็คอย่างรวดเร็วว่าคุณสมบัติต่าง ๆ มีผลต่อการเคลื่อนไหวของตัวละครอย่างไร
เพื่อทดสอบ IKControl ของคุณอย่างรวดเร็วโดยใช้ Attachment เป็นเป้าหมาย:
จาก mezzanine ของ Studio ให้ เริ่มการทดสอบเล่น
คลิกที่ไอคอน ⊕ ข้าง HumanoidRootPart ของโมเดลตัวละครของคุณและเพิ่ม Attachment

เลือก Attachment และใช้เครื่องมือ Move เพื่อวางวัตถุไว้ข้างหน้าตัวละครของคุณในมุมมอง

ในหน้าต่าง Explorer ให้เลือกไอคอน ⊕ ข้าง Humanoid ของตัวละครของคุณและเพิ่ม IKControl

เลือก IKControl และตั้งค่าคุณสมบัติค่าต่อไปนี้ในหน้าต่าง Properties:
- Type: เลือก Transform จากเมนูดรอปดาวน์
- Target: เลือกวัตถุ Attachment ที่สร้างขึ้นใหม่ใน Explorer

คุณสมบัติ IKControl 
Explorer - โมเดลตัวละคร แขนซ้ายของตัวละครของคุณควรจะยื่นไปยังเป้าหมาย Attachment ตอนนี้ คุณสามารถทดลองเคลื่อนที่ Attachment หรือแก้ไขคุณสมบัติของ IKControl เพื่อให้ได้ผลลัพธ์ที่แตกต่างกัน
เพิ่มข้อจำกัด
คุณสามารถใช้ Constraints เพื่อจำกัดวิธีการเคลื่อนไหวของข้อต่อเมื่อไปถึงเป้าหมาย ข้อจำกัดสามารถทำให้ข้อต่อเช่นข้อศอกและเข่าบิดงออย่างเป็นธรรมชาติ หรือทำให้ข้อต่อกลไกหมุนในทิศทางที่เฉพาะเจาะจง


ในการเพิ่มข้อจำกัดให้กับตัวละครของคุณโดยใช้ IKControl IKControl และข้อจำกัดต้องตรงตามเงื่อนไขต่อไปนี้:
- การแนบที่อ้างถึงในคุณสมบัติ Attachment0/Attachment1 ของข้อจำกัดจะต้องเชื่อมต่อกับส่วนเดียวกันกับ Motor6D Part0/Part1
- ตำแหน่งสัมพัทธ์ของ Attachment0/Attachment1 จะต้องเท่ากับตำแหน่งที่สอดคล้องกันของ Motor6D C0/C1 CFrames
- ข้อจำกัดและ IKControl ต้องมีพ่อแม่เดียวกันคือ Model
คำแนะนำต่อไปนี้อธิบายกระบวนการเพิ่ม HingeConstraint เพื่อจำกัดการหมุนของข้อศอกของตัวละครและเพิ่ม BallSocketConstraint ที่ข้อมือเพื่อจำกัดมุมการหมุน
ข้อศอก
ตัวละครที่มี R15 rigs จะมีการแนบอยู่ในข้อต่อที่คุณสามารถใช้เพื่อใช้ข้อจำกัดของข้อศอก สำหรับข้อศอก ทั้ง LeftUpperArm และ LeftLowerArm จะมี LeftElbowRigAttachment รวมอยู่ด้วย นอกจากการเพิ่มข้อจำกัดแล้ว คุณยังต้องเพิ่มการแนบลูกเพิ่มเติมไปยัง LeftElbowRigAttachment ของแต่ละส่วนเพื่อระบุว่าแกนใดที่ข้อศอกสามารถหมุนได้
ในการเพิ่ม HingeConstraint และการแนบลูก:
ในหน้าต่าง Explorer ให้ค้นหา LeftLowerArm ของโมเดลของคุณและคลิกที่ ⊕ button
เพิ่ม HingeConstraint โดยตั้งชื่อว่า LeftElbowConstraint
ในหน้าต่าง Explorer ให้ไปที่ LeftUpperArm.LeftElbowRigAttachment และเพิ่มการแนบ:
คลิกที่ ⊕ button เพื่อเพิ่ม Attachment โดยตั้งชื่อว่า LeftElbowConstraintAttachment0
ในมุมมอง ให้เลือกการแนบและใช้เครื่องมือ Rotate เพื่อหมุนการแนบให้แกน PrimaryAxis สีเหลืองเป็นแกนที่คาดหวังของการหมุนข้อศอกของคุณ

ตั้งค่าคุณสมบัติ LeftElbowConstraint.Attachment0 เป็นการแนบใหม่นี้
ในหน้าต่าง Explorer ให้ไปที่ LeftLowerArm.LeftElbowRigAttachment และเพิ่มการแนบ:
- คลิกที่ ⊕ button และเพิ่ม Attachment โดยตั้งชื่อว่า LeftElbowConstraintAttachment1
- ตั้งค่าคุณสมบัติ LeftUpperArm.LeftElbowConstraint.Attachment1 เป็นการแนบใหม่นี้
- คัดลอกคุณสมบัติ LeftElbowConstraintAttachment0.CFrameOrientation และวางเป็นค่า LeftElbowConstraint.Attachment1.CFrameOrientation

ทดสอบ IKControl ของคุณเพื่อยืนยันว่าข้อศอกหมุนได้เฉพาะรอบแกนข้อต่อของมันเท่านั้น:
ข้อมือ
แม้จะมีข้อจำกัดของข้อศอก แต่ IKControl ก็ยังสามารถสร้างท่าทางที่ไม่สมจริงกับข้อมือได้

คุณสามารถปรับปรุงสิ่งนี้ได้โดยการเพิ่ม BallSocketConstraint เพื่อจำกัดการหมุนของข้อมือ ในขณะที่สิ่งนี้คล้ายกับกระบวนการในการเพิ่ม HingeConstraint ให้กับข้อศอก คุณสามารถใช้คุณสมบัติ LimitsEnabled บนข้อจำกัดนี้เพื่อควบคุมช่วงการเคลื่อนไหวของข้อมือได้มากขึ้น
ในการเพิ่ม BallSocketConstraint สำหรับข้อมือ:
- ในหน้าต่าง Explorer ให้ค้นหา LeftHand ของโมเดลของคุณและคลิกที่ ⊕ button
- เพิ่ม BallSocketConstraint โดยตั้งชื่อว่า LeftWristConstraint
- ค้นหา LeftLowerArm.LeftWristRigAttachment ของโมเดลของคุณและเพิ่มการแนบ:
- คลิกที่ ⊕ button และเพิ่ม Attachment โดยตั้งชื่อว่า LeftWristConstraintAttachment0
- ในมุมมอง ให้เลือกการแนบและใช้เครื่องมือ Rotate เพื่อหมุนการแนบให้แกน PrimaryAxis สีเหลืองชี้ไปที่ปลายนิ้วของโมเดล

- ตั้งค่าคุณสมบัติ LeftWristConstraint.Attachment0 เป็นการแนบใหม่ LeftWristConstraintAttachment0
- ค้นหา LeftHand.LeftWristRigAttachment ของโมเดลของคุณและเพิ่มการแนบ:
- คลิกที่ ⊕ button และเพิ่ม Attachment โดยตั้งชื่อว่า LeftWristConstraintAttachment1
- คัดลอกคุณสมบัติ LeftWristConstraintAttachment0.CFrameOrientation และวางเป็นคุณสมบัติ LeftWristConstraintAttachment1.CFrameOrientation
- ตั้งค่าคุณสมบัติ LeftWristConstraint.Attachment1 เป็นการแนบใหม่ LeftWristConstraintAttachment1
- ในหน้าต่าง Explorer ให้เลือก LeftWristConstraint
- ในหน้าต่าง Properties ให้ตั้งค่าต่อไปนี้:
- เปิดใช้งาน LimitsEnabled
- ตั้งค่า UpperAngle เป็น 80 นี่ควบคุมว่าข้อจำกัดของแกนสามารถหมุนได้มากแค่ไหน และ 80 องศาคือประมาณที่ข้อมือควรจะสามารถงอได้
- ขึ้นอยู่กับตัวละครของคุณ คุณอาจต้องปรับทิศทางที่กรวยชี้ไป คุณสามารถทำได้โดยใช้เครื่องมือ Rotate เพื่อหมุน Attachment0 ของข้อจำกัด
เมื่อเลือก LeftWristConstraint จะมีกรวยสีเขียวปรากฏขึ้นเพื่อแสดงช่วงการเคลื่อนไหวของข้อมือ

เมื่อการจำกัดตั้งค่าเสร็จสิ้น ให้ทดสอบ IKControl โดยให้มือชี้ลงไปข้างหน้าตัวละครและข้อมือควรหมุนและงอได้อย่างสมจริงมากขึ้น