ต่อจาก
บทที่ ๑
ใน
บทที่แล้วได้แนะนำการติดตั้ง manim และการใช้คำสั่ง manimgl ในเบื้องต้นไปแล้ว สำหรับบทนี้จะลงลึกรายละเอียดการใช้คำสั่ง manimgl
เริ่มต้นรันคำสั่ง manimgl กรณีที่มี Scene เดียว
ขอเริ่มจากยกตัวอย่าง เช่นมีไฟล์ kumo.py ดังนี้ (โค้ดสั้นๆง่ายๆคล้ายตัวอย่างในบทที่แล้ว) ซึ่งได้สร้างคลาสที่รับทอดคลาส Scene ไว้อันเดียว
import manimlib as mnm
class Kumodesuga(mnm.Scene):
def construct(self):
text = mnm.Text('แมงมุมแล้วไง\n\nข้องใจเหรอคะ?',size=3.2,color='#55ff77')
self.play(mnm.Write(text),run_time=1.6)
จากนั้นเปิดคอมมานด์ไลน์ ไปที่โฟลเดอร์ที่ไฟล์อยู่แล้วรันคำสั่ง manimgl ตามด้วยชื่อไฟล์
manimgl kumo.py
แล้วก็จะปรากฏหน้าต่างแสดงภาพเคลื่อนไหวซึ่งตัวหนังสือค่อยๆถูกเขียนขึ้นแบบนี้
กรณีมี class Scene หลายอัน
ตัวอย่างที่แล้วเป็นกรณีที่มีการสร้างสร้างคลาสที่รับทอดคลาส Scene ไว้แค่อันเดียว แต่หากมีมากกว่า ๑ อันเมื่อรันแล้วจะมีให้เลือกว่าจะเปิดอันไหน
ตัวอย่าง ลองสร้างไฟล์ใหม่ amu.py ซึ่งมีสร้างคลาสของ Scene ไว้ ๒ อัน ดังนี้
import manimlib as mnm
class Arifureta(mnm.Scene):
def construct(self):
text = mnm.Text('อาชีพกระจอก\n\nแล้วทําไม\n\nยังไงข้าก็เทพ',size=1.6,color='#db266e')
self.play(mnm.Write(text),run_time=2.5)
class Mushoku(mnm.Scene):
def construct(self):
text = mnm.Text('เกิดชาตินี้พี่ต้องเทพ',size=2.2,color='#317b8d')
self.play(mnm.Write(text),run_time=1.8)
จากนั้นลองรันไฟล์
manimgl amu.py
ก็จะขึ้นมาแบบนี้
1: Arifureta
2: Mushoku
จากนั้นให้พิมพ์เลข 1 หรือ 2 หรือชื่อเต็มของคลาสลงไปก็จะเป็นการเลือกเปิดอันนั้น
แต่หากไม่ต้องการที่จะต้องพิมพ์ภายหลัง ก็ใส่ชื่อ Scene ตามหลังชื่อไฟล์ไปได้เลย ก็จะเป็นการเลือกเปิดฉากนั้นทันที
manimgl amu.py Arifureta
การแสดงภาพเต็มจอ (-f)
หากต้องการหน้าต่างใหญ่ขนาดเต็มจอก็เติม -f ลงไป
manimgl kumo.py -f
ก็จะแสดงผลออกมาเต็มหน้าจอ
การแสดงเฉพาะภาพสุดท้าย (-s)
หากไม่ได้ต้องการเห็นภาพเคลื่อนไหวแต่อยากดูแค่ภาพสุดท้ายที่ปรากฏแค่ภาพเดียวเลยก็ใส่ -s ลงไป
manimgl kumo.py -s
การเปลี่ยนสีฉากหลัง (-c)
ฉากหลังของภาพนั้นโดยค่าตั้งต้นแล้วจะเป็นสีดำสนิท แต่หากต้องการเปลี่ยนฉากหลังให้เป็นสีอื่นก็ทำได้โดยใส่ -c ตามด้วยรหัสสี
เช่น
manimgl amu.py Mushoku -c #FFAAAA
ก็จะออกมาเป็นแบบนี้
หรือจะใส่เป็นชื่อสีก็ได้
manimgl amu.py Arifureta -c cyan
การเขียนภาพลงไฟล์ (-w -o)
หากรันแบบปกติจะแค่ขึ้นหน้าต่างมาแสดงภาพ แต่ไม่ได้มีการบันทึกภาพลงไฟล์ แต่หากต้องการบันทึกเป็นไฟล์ .mp4 ก็ให้ใส่ตัวเลือกเสริม -w ลงไป
เช่น
manimgl kumo.py -w
แล้วภาพจะถูกบันทึกลงในโฟลเดอร์ชื่อ videos โดยจะเป็นชื่อไฟล์จะตรงกับชื่อคลาส ในที่นี้คือ Kumodesuga.mp4
หากต้องการให้ทั้งเขียนไฟล์แล้วเมื่อสร้างไฟล์ขึ้นมาเสร็จก็เปิดไฟล์นั้นขึ้นมาด้วยก็เติม -o แทน -w
manimgl kumo.py -o
การให้บันทึกทั้งหมด ในกรณีที่มีหลาย class Scene (-a)
กรณีที่ในไฟล์ .py นั้นมีใส่คลาสของ Scene ไว้มากกว่า ๑ อัน เมื่อรัน manimgl ก็จะมีให้เลือกว่าจะเอา Scene ไหน รวมถึงกรณีเมื่อใส่ -w หรือ -o เพื่อเขียนไฟล์ด้วย ก็จะมีให้เลือกว่าจะเขียน Scene ไหน
แต่หากใส่ -a ลงไปด้วยก็จะเป็นการสร้างไฟล์ของทุก Scene ที่มีทั้งหมด
manimgl amu.py -wa
ถ้าใช้ -o ก็จะเปิดแต่ละไฟล์ขึ้นมาทันทีที่สร้างเสร็จ
manimgl amu.py -oa
การระบุชื่อไฟล์ที่จะบันทึก (--file_name)
ปกติชื่อไฟล์ที่ได้จะเป็นไปตามชื่อคลาส แต่หากต้องการกำหนดชื่อไฟล์ขึ้นเองก็ทำได้โดยใส่ --file_name ตามด้วยชื่อไฟล์ที่ต้องการ เช่น
manimgl kumo.py -w --file_name kumo.mp4
แบบนี้ก็จะได้ไฟล์ชื่อ kumo.mp4
ปรับคุณภาพของภาพ (-m -l --uhd)
ปกติโดยค่าตั้งต้นแล้วถ้าไม่ได้ใส่ตัวเลือกเสริมใดๆเพิ่มเติมเราจะได้ภาพที่มีคุณภาพค่อนข้างสูง ซึ่งโดยค่าตั้งต้นแล้วจะเป็นวีดีโอขนาด 1920×1080 เฟรมเรต 30
แต่บางครั้งอาจต้องการประหยัดเวลาหรือพื้นที่เก็บไฟล์ กรณีแบบนั้นก็อาจทำการปรับลดคุณภาพของภาพลงได้
หากต้องการได้ภาพคุณภาพต่ำก็ทำได้โดยใส่ -l จะได้ภาพขนาด 854×480 เฟรมเรต 15
manimgl kumo.py -wl
ลองเทียบไฟล์ที่ได้ออกมา จะเห็นว่าขนาดไฟล์เล็กลง
ภาพคุณภาพปานกลางให้ใส่ -m จะได้ภาพขนาด 1280×720 เฟรมเรต 30
manimgl kumo.py -wm
ในทางกลับกันถ้าหากต้องการภาพคุณภาพสูงเป็นพิเศษก็ใส่ --uhd
manimgl kumo.py -w --uhd
ก็จะได้ภาพคุณภาพสูงมาก ขนาด 3840×2160 เฟรมเรต 60 แต่ขนาดไฟล์ก็ใหญ่มากเป็นพิเศษ
นอกจากนี้ยังกำหนดความละเอียดภาพและเฟรมเรตให้เป็นไปตามที่ต้องการได้โดยเติม -r และ --frame_rate
ปรับแต่งความละเอียดภาพ (-r)
สามารถระบุเลือกขนาดความละเอียดของภาพที่จะเขียนออกมาได้โดยใส่ -r แล้วตามด้วยความกว้างและสูงโดยใส่ค่าเป็น กว้างxยาว
ตัวอย่างเช่น
manimgl kumo.py -wr 400x500
แบบนี้ก็จะได้วีดีโอขนาด 400×500
การปรับเฟรมเรต (--frame_rate)
สามารถกำหนดเฟรมเรต (จำนวนภาพต่อวินาที) ของวีดีโอที่ได้ โดยใส่ --frame_rate ตามด้วยเลขจำนวนเต็มที่แสดงจำนวนภาพต่อวินาที
ตัวอย่างเช่น
manimgl kumo.py -w --frame_rate 5
แบบนี้ก็จะได้วีดีโอที่แสดง ๕ ภาพต่อวินาที
การบันทึกเป็น gif (-i)
หากใส่ -w ก็จะเป็นการทำไฟล์วีดีโอ .mp4 แต่นอกจากนั้นแล้วหากต้องการทำเป็นไฟล์ภาพ .gif ก็ทำได้ โดยเติม -i แทน เพียงแต่ขนาดภาพที่ได้จะค่อนข้างใหญ่เมื่อเทียบกับ .mp4 และคุณภาพของภาพอาจดูไม่ค่อยดีนัก
ตัวอย่างเช่นทำภาพ gif ขนาด 300×100 เฟรมเรต 5
manimgl kumo.py -i --frame_rate 5 -r 300x100
ผลที่ได้ก็จะเป็นภาพ gif แบบนี้
ข้อมูลเพิ่มเติม (-h --help)
นอกเหนือจากที่กล่าวมาแล้วนั้น manim ยังมีรายละเอียดที่ไม่ได้เขียนถึงอีกมาก รวมทั้งอาจมีการเปลี่ยนแปลงในอนาคต
หากต้องการอ่านดูรายละเอียดเพิ่มเติมทำได้โดยพิมพ์ -h
manimgl -h
หรือ --help
manimgl --help
อ่านบทถัดไป >>
บทที่ ๓