หน้าแรก · Lab · พื้นฐาน motion

M1 Keyframe และ interpolation

สอง key เดียวกัน แต่เฟรมช่วงกลางต่างกันได้มาก

พื้นฐาน motion · ~6 นาที · ฟรี

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 ลงมือลอง

โจทย์: ทำให้กล่องของคุณทับกล่องเป้าหมายทุกเฟรม

ดูว่าจุดของเป้าถี่ที่ปลายเดียวหรือทั้งสองปลาย และเส้นกราฟของเป้าแบนตั้งแต่เฟรมไหน

SkyVFX Lab · M1interactive · 1001

3 เจาะลึก

key คือคำสั่ง ส่วนเฟรมกลางคือการเดา

เราบอกโปรแกรมแค่ว่า "เฟรม 0 อยู่ตรงนี้ เฟรม 16 อยู่ตรงนั้น" ที่เหลือโปรแกรมเลือกตาม interpolation ที่ตั้งไว้ การเปลี่ยน interpolation จึงเปลี่ยนเฟรมกลางทั้งหมด โดยที่ key ไม่ขยับเลย

ในงาน comp เราไม่ได้ key แค่ตำแหน่ง แต่ key ทุกอย่างที่เป็นตัวเลข: ความสว่างของ glow, ขนาด blur, opacity ของ element ทุกค่าใช้หลักเดียวกันได้หมด

แบบความเร็วที่ key 1ความเร็วที่ key 2ใช้เมื่อ
constant0 (ค้าง)กระโดดเปิด/ปิด, สลับ, ไฟกะพริบ
linear11หมุนวน, เลื่อนต่อเนื่อง
ease in-out00เริ่มจากนิ่ง จบที่นิ่ง
ease out20พุ่งเข้าแล้วผ่อนหยุด

อ่านการเคลื่อนจากจุด

onion skin แสดงตำแหน่งของทุกเฟรมพร้อมกัน ระยะระหว่างจุดคือระยะที่ขยับในหนึ่งเฟรม = ความเร็ว linear ให้จุดห่างเท่ากัน ease in-out ให้จุดถี่ที่สองปลายและห่างตรงกลาง

ease in-out ความเร็วสูงสุดกลางทางเป็น 1.5 เท่าของค่าเฉลี่ย เพราะต้องชดเชยช่วงที่ช้าตอนต้นและตอนจบ ถ้าใช้ระยะเวลาเท่ากัน ease จึงดู "พุ่ง" ตรงกลางมากกว่า linear

  1. 1ตั้ง key
  2. 2เลือก interpolation
  3. 3ดู onion skin / กราฟ
  4. 4เล่นที่ความเร็วจริง

ตัวอย่าง: การ์ดข้อความเลื่อนเข้า plate ทะเลทราย

การ์ดเลื่อนจากขอบจอเข้ามาหยุดเหนือหิน ถ้าใช้ linear จะเบรกกึกเหมือนชน ถ้าใช้ ease out จะพุ่งเข้าแล้วผ่อนนุ่ม ส่วน ease in-out ดูเหมือนการ์ดเริ่มจากนิ่งนอกจอ ซึ่งมักช้าเกินไปสำหรับการ์ดที่ต้องเข้าเร็ว

ของที่เข้ามาจากนอกจอ ใช้ ease out ส่วนของที่ออกนอกจอ ใช้ ease in

4 ในงานจริง

ทำใน Nuke

  1. คลิกขวาที่ knob (เช่น translate ของ Transform) > Set key เพื่อสร้าง key ที่เฟรมปัจจุบัน
  2. เปิด Curve Editor เลือก key แล้วคลิกขวา > Interpolation เพื่อเลือก Constant, Linear, Smooth, Horizontal และแบบอื่น ๆ
  3. Dope Sheet ใช้เลื่อนเวลาของ key ทั้งชุดโดยไม่เปลี่ยนค่า
  4. ดู motion path ของ Transform ใน Viewer เพื่อเห็นระยะห่างแต่ละเฟรม

พลาดบ่อย → แก้ยังไง

  • ✗ ปล่อย interpolation ตาม default โดยไม่ดูกราฟ✓ เปิดกราฟทุกครั้งที่ key เสร็จ ดูว่าความชันตอนเข้าและออกตรงกับที่ตั้งใจ
  • ✗ ใช้ linear กับของที่เริ่มหรือจบที่นิ่ง✓ ใช้ ease ที่ปลายที่นิ่ง linear เหมาะกับการเคลื่อนต่อเนื่องเท่านั้น
  • ✗ key ทุกเฟรมด้วยมือเพื่อให้ "เนียน"✓ ใช้ key น้อยที่สุดแล้วแต่งด้วย interpolation key ถี่ ๆ แก้ยากและมักสั่น
  • ✗ ใช้ constant โดยไม่ตั้งใจกับค่าที่ควรไหล✓ ถ้าเห็นค่ากระโดดในเฟรมเดียว ให้เช็ก interpolation ของ key ก่อนหน้า

เช็กก่อนส่งช็อต

  • กราฟของทุกค่าที่ key แล้วไม่มีหักมุมที่ไม่ได้ตั้งใจ
  • ปลายที่นิ่งใช้ ease, การเคลื่อนต่อเนื่องใช้ linear
  • ใช้ key น้อยที่สุดที่ทำได้
  • เล่นดูที่ความเร็วจริง ไม่ตัดสินจากการเลื่อนทีละเฟรม

5 เช็กตัวเอง

เช็กตัวเอง 1 ข้อ

คุณ 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