Manim เอนจินแอนิเมชันสำหรับวิดีโออธิบายคณิตศาสตร์
(github.com/3b1b)- Manim คือ เอนจินแอนิเมชันแบบอิงการเขียนโปรแกรมที่แม่นยำ สำหรับการสร้างวิดีโออธิบายคณิตศาสตร์
- เป็นโปรเจ็กต์ที่ผู้สร้าง 3Blue1Brown พัฒนาขึ้นเพื่อใช้ทำวิดีโอการศึกษาของตนเอง
- มีเวอร์ชัน community fork แยกต่างหาก ซึ่งได้รับการพัฒนาให้ดีขึ้นในด้านการใช้งาน การมีส่วนร่วม และการทดสอบ
- ทำงานบนพื้นฐานของ Python และต้องใช้ system dependencies หลากหลาย เช่น FFmpeg, OpenGL, LaTeX
- เป็น โอเพนซอร์ส (สัญญาอนุญาต MIT) ที่ทุกคนสามารถใช้งานและร่วมพัฒนาได้อย่างอิสระ
ความสำคัญและข้อดีของโปรเจ็กต์ Manim
- Manim เป็นเอนจินแอนิเมชันโอเพนซอร์สที่พัฒนาขึ้น เพื่ออธิบายแนวคิดทางคณิตศาสตร์และวิทยาศาสตร์ด้วยภาพได้อย่างมีประสิทธิภาพ
- ต่างจากเครื่องมือวิดีโออื่น ๆ ตรงที่สามารถสร้าง แอนิเมชันแบบอิงโค้ดที่มีความละเอียดแม่นยำ จึงโดดเด่นมากในการทำภาพอธิบายแนวคิดทางคณิตศาสตร์ที่ซับซ้อนแบบเป็นลำดับขั้น
- ถูกดูแลโดย 3Blue1Brown โดยตรง และได้รับการประเมินว่าเป็นเครื่องมือเฉพาะทางที่มีเอกลักษณ์ ซึ่งสั่งสมจากประสบการณ์และความชำนาญในการผลิตวิดีโอเพื่อการศึกษา
- ยังมีเวอร์ชัน community fork ที่กำลังพัฒนาอย่างคึกคักแยกต่างหาก ทำให้เป็นโครงสร้างที่เป็นมิตรกับนักพัฒนาและสะท้อนการปรับปรุงที่หลากหลายได้อย่างรวดเร็ว
ภาพรวมของโปรเจ็กต์
- Manim คือ เอนจินแอนิเมชันแบบเขียนโปรแกรมอย่างแม่นยำ สำหรับการอธิบายคณิตศาสตร์ ซึ่งสามารถนำเสนอสมการ รูปทรง และการแตกประเด็นแนวคิดหลายมิติในวิดีโอได้อย่างอิสระ
- เดิมทีเริ่มต้นขึ้นเพื่อใช้ผลิตวิดีโอการศึกษาของ 3Blue1Brown และมีการเผยแพร่โค้ดเฉพาะที่เกี่ยวข้องไว้ในรีโพแยกต่างหาก
- ในปี 2020 ได้มีการ fork เป็นเวอร์ชันชุมชนเพื่อให้ผู้คนจำนวนมากขึ้นใช้งานได้ง่ายขึ้น ก่อให้เกิดระบบนิเวศที่กำลังพัฒนาในด้านเสถียรภาพ การมีส่วนร่วมของชุมชน และการทดสอบ
คุณลักษณะสำคัญและข้อกำหนด
- แบ่งออกเป็น ManimGL (ต้นฉบับ) และ Manim Community Edition (community fork)
- แต่ละเวอร์ชันมีวิธีติดตั้งและการใช้งานแตกต่างกัน จึงควรเลือกเวอร์ชันที่ต้องการล่วงหน้า
- หากติดตั้งผ่าน pip สามารถติดตั้งเวอร์ชันต้นฉบับได้ด้วยชื่อแพ็กเกจ manimgl
- ต้องใช้ Python 3.7 ขึ้นไป และยังต้องมี FFmpeg, OpenGL รวมถึงในบางสภาพแวดล้อมอาจต้องใช้ LaTeX และ Pango สำหรับ Linux เพิ่มเติม
คำแนะนำการใช้งาน (ตัวอย่าง)
- มีตัวอย่างที่รวมโค้ด ไฟล์ซีน และคำสั่งรันไว้ให้
- สามารถตรวจดูและนำไปใช้ต่อได้ทั้งตัวอย่างซีนหลายแบบ เอกสารประกอบ และโค้ดเฉพาะที่ใช้กับวิดีโอจริงของ 3Blue1Brown
- เมื่อรันผ่าน command line จะมีแฟลกหลากหลายให้ใช้เพื่อ
- บันทึกไฟล์ผลลัพธ์ ข้ามทั้งซีน รันแบบเต็มหน้าจอ และรองรับรูปแบบการแสดงผลกับสภาพแวดล้อมที่ปรับแต่งได้หลากหลาย
- สามารถตั้งค่ารายละเอียดของสภาพแวดล้อม เช่น สไตล์ คุณภาพ และพาธ ได้ผ่านไฟล์
custom_config.yml
เอกสารและการมีส่วนร่วม
- มีเอกสารทางการให้ใช้งานบนเว็บไซต์แยกต่างหาก และยังมีเวอร์ชันภาษาจีนกับทรัพยากร custom เพิ่มเติมให้ใช้ได้
- ตามแบบฉบับโปรเจ็กต์โอเพนซอร์ส จึง ยินดีต้อนรับ pull request และการมีส่วนร่วมจากชุมชน อย่างมาก
- เผยแพร่ภายใต้สัญญาอนุญาต MIT ทำให้ทุกคนสามารถแก้ไขและแจกจ่ายต่อได้อย่างอิสระ
ข้อมูลทางเทคนิคและสถิติ
- ประกอบด้วยภาษาหลักอย่าง Python(96.3%) และ GLSL(3.7%)
- มี ดาวบน GitHub มากกว่า 80,000 ดวง และฟอร์กมากกว่า 6,800 ครั้ง แสดงให้เห็นถึงความนิยมและการมีส่วนร่วมจากชุมชนในระดับสูง
- มีผู้มีส่วนร่วมหลากหลายมากกว่า 167 คน
สรุป
- Manim คือเอนจินแอนิเมชันแบบเขียนโปรแกรมที่ เชี่ยวชาญด้านการทำภาพคณิตศาสตร์และวิทยาศาสตร์ที่แม่นยำและละเอียด
- มีประโยชน์อย่างมากสำหรับ ผู้สร้างวิดีโอการศึกษา ผู้เชี่ยวชาญด้าน data visualization และนักพัฒนา ที่ต้องการแอนิเมชันแบบอิงโค้ด
- เส้นโค้งการเรียนรู้ที่รวดเร็ว สภาพแวดล้อมที่ปรับแต่งได้อย่างยืดหยุ่น การเปิดให้มีส่วนร่วมอย่างอิสระ และการเติบโตของชุมชน คือจุดแตกต่างสำคัญ
1 ความคิดเห็น
ความเห็นจาก Hacker News
ช่วงนี้พอใช้ร่วมกับ coding assistant แล้วรู้สึกว่ามันได้ผลมากจริง ๆ แค่พิมพ์พรอมป์ต์อย่าง “ต้องการไดอะแกรมที่สมการ X เปลี่ยนเป็น Y” ก็มักได้ผลลัพธ์ที่ต้องการตั้งแต่ครั้งแรกเสมอ น่าจะเป็นเพราะ syntax ที่เรียบง่ายและมีตัวอย่าง manim แบบโอเพนซอร์สจำนวนมากถูกนำไปใช้ในการเรียนรู้ คิดว่าเป็นตัวอย่างที่ดีมากว่า AI coding agent ช่วยประหยัดเวลาได้แค่ไหน ขอแค่วิดีโอที่ออกมาดูดีก็ไม่จำเป็นต้องสนใจรายละเอียดระหว่างทางมากนัก วิธีแบบนั้นเลยสะดวกกว่า
จำได้ว่าเคยได้ยินในพอดแคสต์ที่มี Grant Sanderson ไปออกรายการ เขาพูดถึงประสบการณ์ที่ลองให้ LLM สร้างโค้ด manim อัตโนมัติ แต่ผลลัพธ์ออกมาไม่ค่อยดี สุดท้ายผมเลยคิดว่านั่นหมายความว่าระดับความชำนาญหรือมาตรฐานเกี่ยวกับ manim ของพวกเรากับของ Grant ต่างกันมาก
สงสัยว่าถ้าเอา RAG มาผนวกกับเอกสารจะเป็นอย่างไร
เคยใช้ Manim ทำสไลด์พรีเซนต์ในชั้นเรียน และเป็นประสบการณ์ที่สนุกมาก หลายคนจำสไตล์นั้นได้ งานนำเสนอก็ได้รับคำชมด้วย แถมโชคดีที่เคยได้เจอ Grant ด้วยตัวเองเมื่อหลายปีก่อน ตอนบอกว่าใช้ Manim เขาดูดีใจอย่างจริงใจมาก เป็นภาพที่น่าประทับใจ เขาเป็นคนที่ยอดเยี่ยมและมีส่วนช่วยต่อความรู้และความเข้าใจของมนุษยชาติอย่างมาก
คิดว่า 3b1b เป็นสิ่งมหัศจรรย์อย่างแท้จริงของโลกอินเทอร์เน็ต แอนิเมชันสวยมากและคำอธิบายก็ผ่านการขัดเกลาอย่างรอบคอบจนอดทึ่งไม่ได้ แต่มีอย่างหนึ่งที่ไม่เข้าใจ คือทำไมไลบรารีเดียวถึงทำแอนิเมชันแนวคิดได้หลากหลายขนาดนั้น ดูเหมือนทุกอย่างน่าจะเป็นงานคัสตอมทั้งหมด แต่อีกมุมหนึ่งอาจเป็นเพราะ Grant ทำงานอยู่บนกรอบความคิดทางคณิตศาสตร์ที่อยู่ในระดับสูงกว่า
สำหรับคนส่วนใหญ่ คิดว่าลิงก์ไปยังเวอร์ชัน community fork น่าจะเหมาะกว่า: Manim Community GitHub
โปรเจ็กต์ที่ Grant ทำยอดเยี่ยมมาก เพราะนี่ไม่ใช่แค่กรณีของผู้ดูแลไลบรารีโอเพนซอร์สทั่วไป แต่เป็นคนที่มีทั้งความอินและความเชี่ยวชาญในโดเมนนั้นจริง ๆ ไม่มีเครื่องมือที่ตรงกับแอปพลิเคชันที่เขาต้องการ เขาเลยลงมือสร้างและดูแลมันเอง ในทางกลับกัน community fork ดูเหมือนเป็นงานของคนที่อยากสร้างโครงสร้างพื้นฐานให้รองรับ use case จำนวนมาก มากกว่าจะทำให้เหมาะกับเป้าหมายเดิม สุดท้ายเลยค่อย ๆ ห่างจากวัตถุประสงค์ตั้งต้น และประสบการณ์ผู้ใช้ก็ถูกสละไปด้วย มองว่าเป็นความต่างระหว่างการทำเครื่องมือเพื่อให้ผู้เชี่ยวชาญใช้ทำงานจริง กับการดูแลฟอร์กไว้เพื่อการบำรุงรักษาและประชาสัมพันธ์เป็นหลัก
สงสัยว่าการฟอร์กเกิดขึ้นด้วยเหตุผลที่ดีจริง ๆ หรือเป็นเพราะดราม่าเฉย ๆ ผมอ่านคำอธิบายเรื่องฟอร์กแล้ว แต่ก็ยังไม่เข้าใจเหตุผลที่แน่ชัด ทั้งที่ Grant ก็ยังดูแลต้นฉบับต่ออยู่
กำลังตามหา animation renderer แบบเขียนโค้ดที่เน้นงาน infographic/chart/motion graphics ทั่วไปมากกว่างานคณิตศาสตร์อย่างจริงจัง วิธีเดิม ๆ ก็มี After Effects, Davinci Fusion, Blender, Cavalry ฯลฯ แต่หลังจากเคยใช้ทั้ง PovRay สมัยก่อนและ Manim ในภายหลัง แนวคิดเรื่องเครื่องมือ motion graphics แบบอิงโค้ด/ข้อความก็วนอยู่ในหัวไม่หาย คิดว่าถ้าผสานกับ LLM น่าจะยิ่งโดดเด่น ช่วงหลังเริ่มมีบริการ motion graphics ที่ใช้ ChatGPT ออกมาด้วย แต่สิ่งที่ผมต้องการมากกว่าเว็บสร้างวิดีโอแบบนั้น คือเครื่องมือที่ใช้โค้ด/ภาษาเทมเพลต สามารถเรนเดอร์ซ้ำกับข้อมูลแบบใดก็ได้ รองรับทั้งออฟไลน์และงานอัตโนมัติ
ตอนเคยใช้ Manim เมื่อราว 4 ปีก่อน มันมีอาการแบบ kwargs-itus คือแทบทุกพารามิเตอร์ถูกใส่เป็น kwargs จนทำ type annotation ไม่ได้ ทำให้ใช้งานยากเกินความจำเป็น ผมเคยพยายามปรับปรุง แต่ไม่ได้รับการตอบสนองมากนัก เลยสงสัยว่าช่วงหลังมันเปลี่ยนไปอย่างไรบ้าง
โปรเจ็กต์นี้ขึ้น HN บ่อยและมักมีการถกเถียงที่ดี เลยขอแปะลิงก์ค้นหาแทนลิงก์กระทู้: ผลการค้นหา manim บน hn
สงสัยว่ามี awesome list ที่ช่วยให้เห็นภาพรวมของซอฟต์แวร์ในสาย manim ไหม ขอสรุปแหล่งข้อมูลไว้ด้านล่าง
ปกติบน HN เหมือนจะไม่อนุญาตให้ส่งลิงก์เดิมซ้ำ สงสัยว่ายังส่งซ้ำได้อยู่หรือไม่
ขอสรุปลิงก์ไปยังการถกเถียงเก่า ๆ บน HN และ Show HN ที่เกี่ยวกับ Manim
ผลงานที่ Grant สร้างด้วย 3blue1brown และ Manim น่าทึ่งจริง ๆ ด้วยคุณภาพของวิดีโอและการทำภาพให้เห็นชัด แม้หัวข้อจะเป็นนามธรรมก็ยังเข้าใจได้ง่าย README พูดถึงไว้แล้ว แต่ก็อยากแนะนำวิดีโอเดโมที่ Grant แสดงขั้นตอนการทำงานด้วย Manim ด้วยตัวเอง (ลิงก์ YouTube)
เป็นโปรเจ็กต์ที่เจ๋งมาก และพอเห็นก็ทำให้นึกถึงวิดีโอที่น่าประทับใจในอดีตอย่าง Animation vs Math ทันทีเลยกดเข้าไปดู Animation vs Math บน YouTube ผมชอบคณิตศาสตร์นะ แต่ก็รู้สึกว่าการเอากราฟขนาดมหึมาไปโชว์ไม่จำเป็นต้องเป็นวิธีที่ดีสำหรับผู้คนเสมอไป