ควบคุมความเคลื่อนไหวย้อนกลับ (IK) เป็นเทคนิคทั่วไปในการทำแอนิเมชันคอมพิวเตอร์เพื่อทำให้ตัวละครเคลื่อนไหวและมีปฏิสัมพันธ์กับสภาพแวดล้อมได้อย่างสมจริง เทคนิคนี้สร้างการเคลื่อนไหวที่สมจริงสำหรับตัวละครมักต้องมีการปรับแต่งและเปลี่ยนแปลงในหลายๆ แบบของข้อต่อ ด้วย IK คุณสามารถจัดท่าและทำแอนิเมชันสำหรับหลายส่วนของตัวละครโดยการจัดท่าหรือปรับเปลี่ยนวัตถุเพียงอย่างเดียว
เทคนิคการทำแอนิเมชันนี้สามารถให้โซลูชันสำหรับตัวอย่างต่อไปนี้:
IKControl
คุณสามารถใช้ IKControl เพื่อเพิ่ม IK ให้กับระบบตัวละครของคุณนอกเหนือจาก Animation Editor สตูดิโอช่วยให้คุณสามารถนำ IK ไปใช้กับตัวละครทั้งหมด เช่น R15, Rthro และตัวละครที่นำเข้ามาที่กำหนดเอง เพื่อสร้างการเคลื่อนไหวและปฏิสัมพันธ์อย่างสมจริงในเกมของคุณ
เมื่อเพิ่ม 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
- ข้อจำกัดและ IKControl ต้องแชร์ Model พาเรนต์เดียวกัน
คำแนะนำด้านล่างอธิบายถึงกระบวนการในการเพิ่ม HingeConstraint เพื่อตรวจสอบการหมุนของข้อศอกของตัวละครและเพิ่ม BallSocketConstraint ไปยังข้อมือเพื่อลดมุมการหมุน
ข้อศอก
ตัวละคร Roblox R15 มักจะรวมถึงการเชื่อมโยงในข้อต่อที่คุณสามารถใช้เพื่อนำข้อจำกัดข้อศอกไปใช้ สำหรับข้อศอก ทั้ง LeftUpperArm และ LeftLowerArm จะมี LeftElbowRigAttachment ร่วมกับการเพิ่มข้อจำกัด คุณยังต้องเพิ่มการเชื่อมโยงลูกสาวเพิ่มเติมไปยัง LeftElbowRigAttachment ของแต่ละส่วนเพื่อตั้งค่าทิศทางที่ข้อศอกสามารถหมุนได้
ในการเพิ่ม HingeConstraint และการเชื่อมโยงลูกสาว:
ใน Explorer ให้ค้นหา LeftLowerArm ของโมเดลของคุณและคลิกที่ ⊕
เพิ่ม HingeConstraint ที่มีชื่อว่า LeftElbowConstraint
ใน Explorer ให้ไปที่ LeftUpperArm.LeftElbowRigAttachment และเพิ่มการเชื่อมโยง:
คลิกที่ ⊕ เพื่อเพิ่ม Attachment ที่มีชื่อว่า LeftElbowConstraintAttachment0
ในมุมมองให้เลือกการเชื่อมโยงและใช้เครื่องมือ Rotate เพื่อหมุนการเชื่อมโยงเพื่อให้ PrimaryAxis สีเหลืองเป็นแกนที่ข้อศอกควรหมุน

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

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

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

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

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