ข้ามไปยังเนื้อหา
Tayakorn
คู่มือ Blender Animation

คู่มือ Blender Animation

LEVEL 2 · ระดับกลาง

IK กับ FK — สองวิธีตอบคำถามเดียวกัน

บทที่ 7 ทิ้งปัญหาไว้ข้อหนึ่ง: ค่ากระดูกเป็นค่าเทียบพ่อ อยากให้มือไปแตะจุดหนึ่งต้องไล่หมุนทีละข้อจากต้นทาง

วิธีไล่หมุนจากต้นทางลงปลายทางนั้นมีชื่อ เรียกว่า FK (Forward Kinematics) — คุณให้มุม ระบบคำนวณตำแหน่งปลายทางให้

IK (Inverse Kinematics) กลับทิศ — คุณให้ตำแหน่งปลายทาง ระบบคำนวณมุมทุกข้อย้อนกลับให้

ลองของจริง สร้างแขนสองท่อน ใส่ IK ชี้ไปที่เป้า แล้วย้ายเป้าอย่างเดียว ไม่หมุนกระดูกสักตัว:

  เป้าที่ (1.0, 0, 1.2)
    ปลายแขนไปหยุดที่ : (1.0, 0.0, 1.2)
    upper_arm  ค่าที่เก็บใน property = (0.0, -0.0, 0.0)   มุมจริงหลังแก้สมการ = (90.0, 1.2, 0.0)
    forearm    ค่าที่เก็บใน property = (0.0, -0.0, 0.0)   มุมจริงหลังแก้สมการ = (90.0, 78.4, 0.0)

  เป้าที่ (1.8, 0, 0.5)
    ปลายแขนไปหยุดที่ : (1.8, 0.0, 0.5)
    upper_arm  ค่าที่เก็บใน property = (0.0, -0.0, 0.0)   มุมจริงหลังแก้สมการ = (90.0, 53.6, 0.0)
    forearm    ค่าที่เก็บใน property = (0.0, -0.0, 0.0)   มุมจริงหลังแก้สมการ = (90.0, 95.4, -0.0)

ปลายแขนไปหยุดตรงเป้าเป๊ะทุกครั้ง และมุมที่ Blender แก้สมการได้ก็เปลี่ยนไปทุกครั้ง — 78.4 องศา แล้ว 95.4 องศา

แต่ดูคอลัมน์กลางให้ดี: ค่าที่เก็บใน property เป็นศูนย์ตลอด ทุกครั้ง ทุกกระดูก

9.1 ปริศนาที่เพิ่งโผล่

Blender คำนวณมุมได้ 78.4 องศา แล้วเอาไปวาดจริง แต่ไม่เคยเขียนตัวเลขนั้นกลับลงในช่องเก็บค่า ทำไม

นี่คือเบาะแสชิ้นแรกของกฎที่จะไขในบทที่ 10 และปิดจบในบทที่ 13 — IK คือ constraint ตัวหนึ่ง และ constraint ไม่มีสิทธิ์เขียนทับค่าที่คุณเก็บไว้

9.2 ขีดจำกัดที่มองเห็นได้

บรรทัดสุดท้ายของการทดลองบอกอะไรบางอย่าง:

  เป้าที่ (0.0, 0, 3.0)
    ปลายแขนไปหยุดที่ : (0.0, 0.0, 2.0)

เป้าอยู่ที่ระยะ 3.0 แต่แขนยาวรวมแค่ 2.0 มันจึงเหยียดสุดแล้วหยุด ไม่ยืดตาม IK ไม่ใช่เวทมนตร์ มันแก้สมการภายใต้ข้อจำกัดที่มีอยู่จริง

9.3 เลือกอันไหน

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

แถวสุดท้ายคือสิ่งที่ทำให้คนสับสน: ตอนใช้ IK คุณคีย์ เป้า ไม่ได้คีย์กระดูก เพราะกระดูกไม่มีค่าอะไรให้คีย์ — ตามที่เห็นในตัวเลขข้างบน

อ่านแบบเต็มเล่ม