φυβλαςのβλογ
phyblas的博客



manim บทที่ ๒: คำสั่งสำหรับสร้างภาพ
เขียนเมื่อ 2021/03/12 00:02
แก้ไขล่าสุด 2021/09/28 16:42

ต่อจาก บทที่ ๑

ในบทที่แล้วได้แนะนำการติดตั้ง 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



อ่านบทถัดไป >> บทที่ ๓





-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python >> manim

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

目录

从日本来的名言
模块
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
机器学习
-- 神经网络
javascript
蒙古语
语言学
maya
概率论
与日本相关的日记
与中国相关的日记
-- 与北京相关的日记
-- 与香港相关的日记
-- 与澳门相关的日记
与台湾相关的日记
与北欧相关的日记
与其他国家相关的日记
qiita
其他日志

按类别分日志



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  查看日志

  推荐日志

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ