LEVEL 0 · ปูพื้นจากศูนย์
Data path — ชื่อจริงของสิ่งที่ขยับได้
ถ้าทุกอย่างคือ property แล้ว Blender เรียกชื่อ property แต่ละตัวว่ายังไง
คำตอบคือ data path — สตริงหนึ่งเส้นที่บอกทางไปหาช่องเก็บค่านั้น เหมือนที่อยู่บ้าน ไม่ใช่ชื่อเล่น
ลองคีย์ตำแหน่งกล่องหนึ่งใบสองจุด แล้วเปิดดูว่า Blender เก็บอะไรไว้จริง ๆ:
cube.location.x = 0.0
cube.keyframe_insert(data_path="location", index=0, frame=1)
cube.location.x = 10.0
cube.keyframe_insert(data_path="location", index=0, frame=25)ผลที่ได้:
action name : BoxAction
จำนวน F-Curve : 1
data_path : 'location' | array_index: 0 ← ชื่อจริงของสิ่งที่ถูกคีย์
จำนวน keyframe : 2สังเกตสองอย่าง: ชื่อคือ location ไม่ใช่ location.x และมี array_index: 0 แยกออกมาต่างหาก
2.1 ทำไมต้องแยก path กับ index
เพราะ location เป็นค่าสามช่องรวมกัน (x, y, z) Blender จึงเก็บ path ไว้เส้นเดียวแล้วใช้ตัวเลข index ชี้ว่าเป็นช่องไหน — 0 คือ X, 1 คือ Y, 2 คือ Z
นี่คือเหตุผลเชิงออกแบบ ไม่ใช่ความบังเอิญ: ถ้าคีย์ทั้งสามแกน คุณจะได้เส้นโค้งสามเส้นที่ใช้ path เดียวกันแต่ index ต่างกัน ทำให้ Blender จัดกลุ่มมันเข้าด้วยกันในหน้าจอได้เอง โดยไม่ต้องมีตารางแยกบอกว่าเส้นไหนเป็นพวกเดียวกัน
💡 data path เขียนตามโครงสร้างข้อมูลจริงของ Blender เช่น location (ตำแหน่งวัตถุ) · rotation_euler (การหมุน) · scale (ขนาด) · ยิ่งของอยู่ลึก path ยิ่งยาว แต่หลักการเดิม คือทางเดินจากวัตถุไปถึงช่องเก็บค่า:
location ← ตำแหน่งของวัตถุ
pose.bones["forearm"].rotation_quaternion ← การหมุนของกระดูกชื่อ forearm2.2 ทำไมคุณต้องรู้เรื่องนี้ตั้งแต่บทที่ 2
เพราะ data path เป็นสิ่งที่โผล่ซ้ำในทุกกลไกที่เหลือของเล่ม
- ตอนคีย์ — มันคือสิ่งที่บอกว่าคีย์อะไร (บทที่ 3)
- ตอนตั้ง driver — มันคือปลายทางที่ค่าจะไปลง (บทที่ 11)
- ตอนไล่หาว่าใครเขียนทับ — มันคือชื่อที่คุณใช้ค้น (บทที่ 13)
พูดอีกแบบ: ถ้าตอบไม่ได้ว่ากำลังจะแอนิเมต data path ไหน แปลว่ายังไม่รู้ว่ากำลังจะทำอะไร