1 อธิบาย
Keyframe คือค่าที่เราตั้งเองในบางเฟรม โปรแกรมเติมเฟรมที่เหลือให้ (interpolation) แบบ constant ค้างค่าไว้แล้วกระโดด แบบ linear วิ่งความเร็วเท่ากันตลอด แบบ ease in-out ออกตัวช้า เร่งกลางทาง แล้วผ่อนก่อนถึง ส่วน ease out ออกตัวเร็วแล้วผ่อนจนหยุด
อ่านจุด onion skin: จุดห่าง = เคลื่อนเร็ว จุดถี่ = ช้า กราฟด้านล่างคือค่าตามเวลา ความชันของเส้นคือความเร็ว ลองหาว่ากล่องเป้าหมายใช้ interpolation แบบไหน และถึงปลายทางที่เฟรมไหน
ease in-out: v = 3u² − 2u³ · u = frame ÷ (frame of key 2)2 ลงมือลอง
โจทย์: ทำให้กล่องของคุณทับกล่องเป้าหมายทุกเฟรม
ดูว่าจุดของเป้าถี่ที่ปลายเดียวหรือทั้งสองปลาย และเส้นกราฟของเป้าแบนตั้งแต่เฟรมไหน
3 เจาะลึก
key คือคำสั่ง ส่วนเฟรมกลางคือการเดา
เราบอกโปรแกรมแค่ว่า "เฟรม 0 อยู่ตรงนี้ เฟรม 16 อยู่ตรงนั้น" ที่เหลือโปรแกรมเลือกตาม interpolation ที่ตั้งไว้ การเปลี่ยน interpolation จึงเปลี่ยนเฟรมกลางทั้งหมด โดยที่ key ไม่ขยับเลย
ในงาน comp เราไม่ได้ key แค่ตำแหน่ง แต่ key ทุกอย่างที่เป็นตัวเลข: ความสว่างของ glow, ขนาด blur, opacity ของ element ทุกค่าใช้หลักเดียวกันได้หมด
| แบบ | ความเร็วที่ key 1 | ความเร็วที่ key 2 | ใช้เมื่อ |
|---|---|---|---|
| constant | 0 (ค้าง) | กระโดด | เปิด/ปิด, สลับ, ไฟกะพริบ |
| linear | 1 | 1 | หมุนวน, เลื่อนต่อเนื่อง |
| ease in-out | 0 | 0 | เริ่มจากนิ่ง จบที่นิ่ง |
| ease out | 2 | 0 | พุ่งเข้าแล้วผ่อนหยุด |
อ่านการเคลื่อนจากจุด
onion skin แสดงตำแหน่งของทุกเฟรมพร้อมกัน ระยะระหว่างจุดคือระยะที่ขยับในหนึ่งเฟรม = ความเร็ว linear ให้จุดห่างเท่ากัน ease in-out ให้จุดถี่ที่สองปลายและห่างตรงกลาง
ease in-out ความเร็วสูงสุดกลางทางเป็น 1.5 เท่าของค่าเฉลี่ย เพราะต้องชดเชยช่วงที่ช้าตอนต้นและตอนจบ ถ้าใช้ระยะเวลาเท่ากัน ease จึงดู "พุ่ง" ตรงกลางมากกว่า linear
- 1ตั้ง key
- 2เลือก interpolation
- 3ดู onion skin / กราฟ
- 4เล่นที่ความเร็วจริง
ตัวอย่าง: การ์ดข้อความเลื่อนเข้า plate ทะเลทราย
การ์ดเลื่อนจากขอบจอเข้ามาหยุดเหนือหิน ถ้าใช้ linear จะเบรกกึกเหมือนชน ถ้าใช้ ease out จะพุ่งเข้าแล้วผ่อนนุ่ม ส่วน ease in-out ดูเหมือนการ์ดเริ่มจากนิ่งนอกจอ ซึ่งมักช้าเกินไปสำหรับการ์ดที่ต้องเข้าเร็ว
ของที่เข้ามาจากนอกจอ ใช้ ease out ส่วนของที่ออกนอกจอ ใช้ ease in
4 ในงานจริง
ทำใน Nuke
- คลิกขวาที่ knob (เช่น translate ของ Transform) > Set key เพื่อสร้าง key ที่เฟรมปัจจุบัน
- เปิด Curve Editor เลือก key แล้วคลิกขวา > Interpolation เพื่อเลือก Constant, Linear, Smooth, Horizontal และแบบอื่น ๆ
- Dope Sheet ใช้เลื่อนเวลาของ key ทั้งชุดโดยไม่เปลี่ยนค่า
- ดู motion path ของ Transform ใน Viewer เพื่อเห็นระยะห่างแต่ละเฟรม
พลาดบ่อย → แก้ยังไง
- ✗ ปล่อย interpolation ตาม default โดยไม่ดูกราฟ✓ เปิดกราฟทุกครั้งที่ key เสร็จ ดูว่าความชันตอนเข้าและออกตรงกับที่ตั้งใจ
- ✗ ใช้ linear กับของที่เริ่มหรือจบที่นิ่ง✓ ใช้ ease ที่ปลายที่นิ่ง linear เหมาะกับการเคลื่อนต่อเนื่องเท่านั้น
- ✗ key ทุกเฟรมด้วยมือเพื่อให้ "เนียน"✓ ใช้ key น้อยที่สุดแล้วแต่งด้วย interpolation key ถี่ ๆ แก้ยากและมักสั่น
- ✗ ใช้ constant โดยไม่ตั้งใจกับค่าที่ควรไหล✓ ถ้าเห็นค่ากระโดดในเฟรมเดียว ให้เช็ก interpolation ของ key ก่อนหน้า
เช็กก่อนส่งช็อต
- กราฟของทุกค่าที่ key แล้วไม่มีหักมุมที่ไม่ได้ตั้งใจ
- ปลายที่นิ่งใช้ ease, การเคลื่อนต่อเนื่องใช้ linear
- ใช้ key น้อยที่สุดที่ทำได้
- เล่นดูที่ความเร็วจริง ไม่ตัดสินจากการเลื่อนทีละเฟรม
5 เช็กตัวเอง
คุณ key การ์ดข้อความให้เลื่อนเข้าแล้วหยุด แต่มันกระโดดไปปลายทางในเฟรมเดียว น่าจะเป็นเพราะอะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ease in-out ในระยะเวลาเท่ากับ linear ความเร็วสูงสุดเป็นเท่าไรเทียบกับ linear
2. ไฟ LED กะพริบติด-ดับใน comp ควร key ด้วย interpolation แบบไหน
ตัวเลขมาจากไหน: ease in-out ในหน้านี้คือ cubic Hermite แบบ tangent แบน (3u² − 2u³) และ ease out คือ 1 − (1 − u)² เป็นเส้นตัวอย่างที่ใช้กันทั่วไป แต่ละโปรแกรมมีเส้นและชื่อของตัวเอง คำว่า "ease out" ในบทนี้ใช้ตามธรรมเนียม CSS และงาน motion graphics คือผ่อนตอนจบ บางโปรแกรมตั้งชื่อตามด้านของ key ความหมายจึงสลับกันได้ ภาพเคลื่อนไหววาดด้วยโค้ดที่ 24 fps