Manim 介绍
什么是 Manim?
Manim(Mathematical Animation Engine)是一个开源的 Python 动画库,专为制作数学可视化动画而设计。它最早由知名数学科普 YouTuber 3Blue1Brown 开发,用于制作其频道上的高质量动画视频。
目前有两个主要版本:
- ManimGL:3Blue1Brown 官方维护的版本,更新较快,但文档较少。
- Manim Community Edition (ManimCE):社区维护版本,文档完善,更适合初学者。
核心特性
- 🎨 矢量图形渲染:基于 Cairo 和 OpenGL,输出高质量动画
- 🔢 数学公式支持:原生支持 LaTeX 公式渲染
- 🎬 视频导出:可导出为 MP4、GIF 等格式
- 🐍 纯 Python API:使用 Python 代码描述动画逻辑
- 🔧 高度可定制:支持自定义场景、颜色、动画效果
安装
推荐使用 Manim Community Edition:
pip install manim
部分功能还需要安装以下依赖:
- FFmpeg:视频编码
- LaTeX:公式渲染(如 MiKTeX 或 TeX Live)
- Cairo:2D 图形渲染
快速上手
from manim import *
class HelloWorld(Scene):
def construct(self):
text = Text("Hello, Manim!", font_size=72)
self.play(Write(text))
self.wait(2)
运行命令:
manim -pql hello_world.py HelloWorld
参数说明:
-p:渲染完成后自动播放-q:画质(l=低,m=中,h=高,k=4K)-l:低画质,适合预览
核心概念
| 概念 | 说明 |
|---|---|
Scene | 动画场景,所有内容写在 construct 方法中 |
Mobject | 可动画对象(圆形、文字、图表等)的基类 |
Animation | 动画效果,如 Write、FadeIn、Transform |
self.play() | 播放一段动画 |
self.add() | 直接添加对象(不播放动画) |
self.wait() | 暂停指定秒数 |
常用对象
# 几何图形
circle = Circle(radius=1, color=BLUE)
square = Square(side_length=2, color=RED)
triangle = Triangle(color=GREEN)
# 文字
text = Text("Hello")
latex = MathTex(r"E = mc^2")
# 坐标轴
axes = Axes(x_range=[-3, 3], y_range=[-2, 2])
常用动画
self.play(Create(circle)) # 描绘轮廓
self.play(Write(text)) # 书写文字
self.play(FadeIn(square)) # 淡入
self.play(Transform(circle, square)) # 变形
self.play(circle.animate.shift(RIGHT * 2)) # 移动
self.play(circle.animate.scale(2)) # 缩放
参考资源
- 📖 官方文档
- 🎥 3Blue1Brown YouTube 频道
- 💻 GitHub 仓库
- 🗣️ Discord 社区