วันนี้ Mr. Mee studio จะมานำเสนอหนึ่งในวิธีเพิ่มความเร็วในการทำงานโมชั่นกราฟิก หรือแอนิเมชั่นอินโฟกราฟิก ที่จะช่วยประหยัดเวลาในการทำงานของคุณสำหรับผู้ใช้งานโปรแกรม Adobe aftereffect ทุกท่าน นั่นก็คือเครื่องมือ Expressions นั่นเอง
Expressions หากพูดง่ายๆก็คือการเขียนโค๊ดคำสั่งควบคุมใน AE นั่นเอง ซึ่งจะมีทั้งแบบง่ายมากไปจนถึงรูปแบบที่ซับซ้อน หลายคนที่ทำงานกราฟิกจะค่อนข้างกลัวกับการเขียนโค๊ดมาก เนื่องมาจากคิดว่าจะต้องเจอกับตัวเลขแบบมหาศาล หรือซับซ้อนจนไม่เข้าใจแค่คิดก็ถอดใจแล้ว บทความต่อไปนี้จะนำเสนอ Expessions พื้นฐานเหมาะสำหรับมือใหม่ทุกท่าน ขอเพียงคุณเปิดใจลองเรียนรู้ หวังว่าทุกคนจะสนุกกับมัน
เริ่มกันที่วิธีกดสร้างหรือลบ Expression ใน AE
สำหรับ window กดปุ่ม ALT+คลิกซ้าย บนปุ่มสร้างคีย์เฟรม สำหรับ mac กดปุ่ม OPTION+คลิกซ้าย
ดังภาพจะเกิดจากการเปิด Rotation ใน Shape layer แล้วกด ALT+คลิกซ้าย บนปุ่มสร้างคีย์เฟรมเพื่อเปิด expression หากถูกต้องจะได้ดังภาพ
คำสั่งที่น่าใช้ใน Expression
Value
คือค่าตัวเลขที่ถูกใส่ลงไปในเวลาเราใช้ขยับ position หรือ rotation ในงาน ทั้งนี้ยังรวมค่าตัวเลขอื่นๆด้วย เราจะเรียกค่าตัวเลขแต่ละลำดับเริ่มจาก value[0], value[1], value[2], value[…] ดังภาพ
เราสามารถเปลี่ยนค่าตัวเลข โดยการใส่เครื่องหมายทางคณิตศาสตร์บวก(+) ลบ(-) คูณ(*) หาร(/) ได้ เช่น
จะเห็นได้ว่าเราใส่คูณ2เข้าไปหลัง value[1]สิ่งที่เกิดขึ้น คือ ค่าตัวเลขจากตอนแรกที่เป็น 540 ถูกคุณ2 ขึ้นมาเป็น 1080 ดังภาพ
Layer Index
เป็นชื่อ number ตรงส่วนเครื่องหมาย #
ตัวอย่างวิธีการนำมาใช้ เช่น เราสร้าง Shape layer ขึ้นมาและเขียนให้หลังจากนี้ในทุก shape layer ที่ถูก Duplicate ขึ้นมาจะต้องห่างจากตัวแรก +300
เริ่มทำได้โดยการสร้าง Shape layer ขึ้นมาหนึ่งอัน หลังจากนั้นทำการDuplicate layer (Ctrl+D)เพื่อให้ได้ Shape layer ที่ซ้อนกันดังภาพด้านบน
หลังจากนั้นให้เราทำการกด expression ให้กับ position ทำการใส่ value[0],value[1] เหมือนที่สอนในบท value เพียงแต่คราวนี้เราจะใส่การแทนค่า value[0] ด้วย x แทน สิ่งที่ตามมาก็คือ เราต้องกำหนดค่า x ด้วยว่าคืออะไร โดยเราจะให้ x เป็นค่า position ของ layer แรกโดยใช้วิธีการลิงค์ ดังภาพ
หลังจากนั้นเราจะใส่ +300; เพื่อให้ position มีการเลื่อนขึ้นมา 300 ผลลัพธ์จะได้ดังภาพ
หลังจากนั้นจะทำการเปลี่ยนชื่อลิงค์ โดยเปลี่ยนเป็น index+1 หลังจากนั้นทุก layer ที่ถูก duplicate ขึ้นมาจะมีค่า+300 ของตัวก่อนหน้าไปเรื่อยๆ
Time
ค่าอัตราส่วนของเวลาต่อหนึ่งเฟรม นิยมใช้เพื่อให้ layer มีการขยับต่อไปเรื่อยๆตามเวลาแบบไม่มีกำหนด โดยสามารถใช้ร่วมกับเครื่องหมายพื้นฐานทางคณิตศาสตร์ได้ (+, - , / , & *) เช่น การกำหนดให้ shape layer มีการหมุนไปเรื่อยๆ ดังภาพ
valueAtTime()
ใช้กำหนดการแสดงผลโดยใช้ตัวเลขควบคุม โดยจะเป็น valueAtTime(ตัวเลข) เช่น
จะเป็นการให้ layer นี้แสดงผลค้างไว้ที่ 0.5 วินาทีตลอดเวลา หรือ
จะเป็นการทำให้ layer มีการแสดงผลของ scale ช้าลง 0.5 วินาที หรือ
การลิงค์ให้เกิดการแสดงผลเหมือนกับ Shape layer2 โดยให้ช้าลง 0.5 วินาที
loopIN() & loopOUT()
ใช้สำหรับให้เกิดการทำซ้ำในช่วงคีย์เฟรมที่กำหนด โดยคำสั่ง loopIN จะเป็นการทำซ้ำตรงส่วนด้านหน้าก่อนที่จะมีการสร้างคีย์เฟรมอันแรก ส่วน loopOUT จะเป็นการทำซ้ำหลังคีย์เฟรมอันสุดท้าย โดยสามารถพิมพ์ loopOut(type = "cycle", numKeyframes = 0) หรือ loopIn(type = "cycle", numKeyframes = 0) ได้เลย หรือ สามารถเปิดใช้ได้ดังภาพ
โดยค่า type ที่นิยมใช้ คือ
- cycle เป็นการทำให้เกิดการทำซ้ำโดยนับเริ่มจากคีย์เฟรมที่กำหนด
- pingpong เป็นการทำซ้ำในลักษณะย้อนกลับไปไปมา
- offset เป็นการทำซ้ำโดยการนำค่าสุดท้ายมาบวกเพิ่ม ส่วน numKeyframe คือจะให้ทำการloopตั้งแต่คีย์เฟรมไหน โดยคีย์เฟรมแรกเริ่มนับจาก 0
wiggle()
การสั่นแบบสุ่มจะทำให้เกิดการสุ่มค่าตัวเลข โดยการเขียนอย่างง่ายคือ wiggle(freq,amp) freq แทนค่าด้วยตัวเลข เป็นค่าความถี่ของการสั่นต่อวินาที ส่วน amp แทนค่าด้วยตัวเลขเช่นกัน เป็นค่าระยะความกว้างที่จะแสดงผล ว่ามากหรือน้อยขนาดไหน
Math.round()
ใช้สำหรับทำให้ค่าตัวเลขที่คำนวณออกมาหรือแสดงผลออกมาไม่ติดทศนิยม
หวังว่าเครื่องมือ Expressions จะช่วยให้การทำงานโมชั่น แอนิเมชั่นอินโฟกราฟิก ของคุณมีความสะดวกสบายและง่ายยิ่งขึ้นนะครับ