ManimCommunity/manim
多媒体与设计用 Python 代码精确渲染数学讲解动画的框架,适合教师、学生和技术内容创作者。
项目介绍
Manim 是一个用 Python 编写数学讲解动画的引擎。场景中的图形、文字、变换和镜头运动都写成代码,再渲染成视频文件,因此动画精确且可复现,不需要在时间线上手工拼装。它适合需要把数学概念可视化的教师、学生、研究者和技术内容创作者。
这里介绍的是社区维护版 ManimCE,它从 Grant Sanderson 的 3b1b/manim 分叉而来并独立开发。README 推荐使用这个版本,理由是持续开发、文档完善和社区维护更活跃;如果想研究 3Blue1Brown 视频的制作方式,则指向原仓库。
快速使用
前提是安装 Python 以及 Manim 依赖的系统工具(例如 LaTeX 和 FFmpeg),具体软件包因操作系统而异。想先试用,可以直接打开在线 Jupyter 环境;本地安装请按所在平台参照安装文档。
把下面的场景保存为 example.py:
from manim import *
class SquareToCircle(Scene):
def construct(self):
circle = Circle()
square = Square()
square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
circle.set_fill(PINK, opacity=0.5)
self.play(Create(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))
然后以低画质渲染并预览:
manim -p -ql example.py SquareToCircle
-p 表示渲染完成后自动打开视频,-ql 表示用较低分辨率加快渲染。运行后应弹出播放器,播放正方形变成圆形的动画。更多简单示例见示例场景目录,进阶效果见官方画廊。
在 JupyterLab 或经典 Jupyter 中,可以用内置的 %%manim IPython 魔法命令直接在笔记本里渲染,参见 IPython 魔法命令文档和 Binder 笔记本。
命令行基础
基本形式是 manim [参数] <文件> <场景类名>。除 -p 和 -ql 外,常用参数还有 -s(只渲染最后一帧)、-n <数字>(跳到场景中第 n 个动画)和 -f(在文件浏览器中打开输出)。完整参数见配置指南。
使用约束
- Manim 与原始 3b1b/manim 的安装说明不同,混用会导致问题;安装前先确定使用哪个版本(见安装 FAQ)。
- 渲染数学动画依赖 LaTeX、FFmpeg 等外部工具;低画质预览比最终画质导出快得多。
- 项目维护 Docker 镜像
manimcommunity/manim,容器化使用见 Docker 说明。 - 项目正处于大规模重构阶段,期间一般不再接受新功能贡献;提交前建议先在 Discord 讨论(见贡献指南)。
- 软件采用 MIT 双许可,版权分别归 3blue1brown LLC 和 Manim Community Developers。
HotRepo 点评
Manim 的社区版在 2021 年 Hacker News 讨论中获得 576 分、67 条评论(讨论),评论者把它视为 3Blue1Brown 动画库中维护更活跃的分叉版本(评论)。该讨论中也有意见认为两个版本的关系表述不够清晰(评论);当前 README 已用醒目的版本选择提示直接回应这一点。HotRepo 记录的 2026-11-15 Python 日榜快照中,项目单日新增 73 Star,在该榜位列第 13,这只是单日观测,不足以判断趋势。对于想用代码而非时间线编辑器制作数学可视化的读者,它是一个成熟且文档完整的起点。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。