LEVEL 3 · ระดับสูง
Shape key กับ Lattice — เปลี่ยนรูปโดยไม่แตะกระดูก
ไม่ใช่ทุกการเปลี่ยนรูปที่เหมาะกับกระดูก การยิ้ม การขมวดคิ้ว การพองของลูกโป่ง — สิ่งเหล่านี้ไม่มี "ข้อต่อ" ให้หมุน
Shape key เก็บ ปลายทางของทุกจุด ไว้เป็นชุด แล้วให้เลขตัวเดียวคุมว่าจะเดินทางไปถึงกี่เปอร์เซ็นต์
=== ข้อมูลที่ถูกเก็บ ===
key 'Basis' : จุดที่ 0 อยู่ที่ (-1.0, -1.0, 0.0)
key 'Smile' : จุดที่ 0 อยู่ที่ (-1.0, -1.0, 1.0)
=== เลื่อนสไลเดอร์ตัวเดียว แล้วดูจุดจริง ===
Smile = 0.0 -> จุดที่ 0 อยู่ที่ z = 0.000
Smile = 0.25 -> จุดที่ 0 อยู่ที่ z = 0.250
Smile = 0.5 -> จุดที่ 0 อยู่ที่ z = 0.500
Smile = 0.75 -> จุดที่ 0 อยู่ที่ z = 0.750
Smile = 1.0 -> จุดที่ 0 อยู่ที่ z = 1.000เป็นการผสมเชิงเส้นตรงไปตรงมา ไม่มีอะไรซับซ้อนกว่านั้น
12.1 จุดที่มันเชื่อมกับสองบทก่อน
ค่าของ shape key คือ property ตัวหนึ่ง — แปลว่ามันคีย์ได้ (บทที่ 3) และมันถูก driver ขับได้ (บทที่ 11)
นั่นคือวิธีที่ระบบใบหน้าของงานจริงทำงาน: กระดูกตัวควบคุมหนึ่งตัวเลื่อนขึ้น → driver อ่านค่านั้น → shape key หลายตัวขยับตามสัดส่วนที่กำหนด กลไกสามอย่างจากสามบทต่อกันเป็นสายเดียว
12.2 Lattice — กรงที่บีบของข้างในตาม
Lattice คือกรงจุดควบคุมหยาบ ๆ ที่ครอบวัตถุไว้ ขยับจุดบนกรง แล้วทุกอย่างข้างในบิดตามอย่างนุ่มนวล
ลองพิสูจน์ด้วยตาเอง — ครอบท่อด้วย lattice แล้วขยับจุดควบคุมบนสุดไปทางแกน X:
จุดบนสุดใน mesh ต้นฉบับ = (0.0, 0.3, 1.0)
ผลหลังประเมิน ก่อนขยับ lattice = (0.0, 0.3, 1.0) ← ยังไม่มีอะไรเกิดขึ้น
ผลหลังประเมิน หลังขยับจุดควบคุม = (0.172, 0.3, 1.0) ← เนื้อบิดตามแล้ว
mesh ต้นฉบับหลังทุกอย่าง = (0.0, 0.3, 1.0) ← ไม่เคยถูกแตะเลย
จำนวนกระดูกในซีน = 0สองบรรทัดสุดท้ายคือหัวใจ เนื้อบิดจริงแต่ข้อมูล mesh ต้นฉบับไม่เปลี่ยนเลยสักจุด และทำได้โดยไม่มีกระดูกอยู่ในซีนแม้แต่ตัวเดียว — กฎเดียวกับ constraint ในบทที่ 10 เป๊ะ คือทำงานบนผลลัพธ์ ไม่ใช่บนค่าที่เก็บ
มันมีอยู่เพราะบางครั้งคุณอยากบิด ทั้งก้อน โดยไม่สนใจว่าข้างในมีกี่จุด เช่น ทำให้ตัวหนังสือทั้งบรรทัดโค้งเป็นคลื่น — ถ้าใช้ shape key ต้องกำหนดปลายทางทุกจุดเอง ซึ่งไม่มีใครทำ