Manim 仍是数学动画首选
如果你最近看过一批 AI 解释视频,会发现一个很稳定的现象:镜头感、氛围感和转场花样确实越来越多,但一旦内容进入公式推导、几何对象变换、坐标系旋转和严格的逐步讲解,很多视频还是会回到一类更"老派"的方法——脚本驱动动画。
这也是 Manim 到现在还没过时的原因。3Blue1Brown 用它做 YouTube 数学视频,后来大量 AI 解释类视频也在借它那套视觉语言。有人说"Sora 学不来这种数学动画质感",说的就是控制方式不同:通用视频生成擅长采样一段看起来合理的连续画面,Manim 擅长把每一个对象、每一帧和每一次变换都写死在脚本里。
做数学解释视频,这个差别很关键。很多时候你要的并不是"像",而是"对"。
ManimCommunity/manim:适合新用户的主线版本
GitHub:https://github.com/ManimCommunity/manim 官网:https://www.manim.community/ 文档:https://docs.manim.community/
ManimCommunity/manim 把自己定义成 An animation engine for explanatory math videos。这一版是社区维护的 ManimCE,从 3b1b/manim fork 而来。对新用户来说,社区版更省事:功能持续发展、文档更完整、社区维护也更活跃。
今天再提 Manim,得把两条线拆开看:
- 社区版
manim:包名就是manim,主站、文档、示例、安装说明对多数读者都更省事。 - 3Blue1Brown 自用版
manimgl:包名是manimgl,贴近 Grant Sanderson 自己的工作流和历史代码。
如果你的目标是尽快跑通一段数学动画,直接看社区版会省很多时间;如果你的目标是研究 3Blue1Brown 当年怎么做视频,再回头看 3b1b/manim 和 3b1b/videos。

3b1b/manim:理解风格源头,别和社区版混装
GitHub:https://github.com/3b1b/manim 文档:https://3b1b.github.io/manim/
3b1b/manim 也把自己定义成"用于解释型数学视频的精确程序化动画引擎"。它最早就是 Grant Sanderson 为 3Blue1Brown 视频做的个人项目。这里对应的是 manimgl,安装方式和社区版不同,不能把两边的安装说明混着用。
很多人第一次装 Manim 时卡住,常见原因是把 pip install manim 和 pip install manimgl 的资料混看了。官方已经把这件事说得很明白,照着分流走就行。
3b1b/videos:3Blue1Brown 的制作方式
GitHub:https://github.com/3b1b/videos 官网:https://www.3blue1brown.com/
3b1b/videos 是 3Blue1Brown 自己的视频代码仓库。这里放的是频道解释视频背后的场景代码,主体几乎都由 Manim 生成。不过老项目可能依赖旧版本,不一定能直接跑起来。
这个仓库的价值,不是给新手一键运行,而是让你看到一件事:数学解释视频并不是先想镜头,再找模型碰碰运气;很多时候做法就是写程序、调对象、压节奏、反复改稿。也因为这样,Manim 这种脚本工具一直有位置。
安装方式与文档入口
社区版给了一条很清楚的入口:
- 如果只是想试一下,不一定要本地折腾,官方提供了在线 Jupyter 环境:https://try.manim.community/。
- 如果要本地装,看安装页,再按操作系统选择对应步骤。
- Quickstart 会带你跑第一个示例,再继续看图库和 API 文档。
对第一次接触 Manim 的人,比较实用的顺序是:
- 确认自己用的是社区版;
- 跑通一个最小示例;
- 再碰 LaTeX、3D 和更复杂的镜头控制。
不要直接去抄大项目。Manim 的学习成本不在"命令行看起来复杂",而在于它要求你接受一个事实:你是在写动画脚本,不是在拖拽时间轴。
为什么它一直好用
1. LaTeX 公式动画
官方文档把 MathTex 单独列成对象类型,说明它本来就是 Manim 的核心能力之一。这个能力最实在的用途,是把公式当成可操作对象:可以逐段出现、局部变色、拆开移动、和图形同步出现。
做数学解释视频时,这比直接把一张公式图贴上去高效得多。你可以把某一项推到左边、把另一项淡出、再让辅助箭头和注释跟着走,整个过程能保持结构一致。
2. 几何对象变换
官方最常见的 SquareToCircle(Scene) 示例,核心就是 Transform(square, circle)。这个例子很简单,但正好说明了 Manim 的基本思路:对象先存在,再发生变化;变化可以复现,可以改参数,也可以插进更大的动画链条里。
对于几何教学、算法示意、函数图像说明,这种控制比"让模型生成一段看起来像几何变换的视频"可靠得多。你知道起点是什么,也知道终点是什么,中间怎么走由你自己决定。
3. 3D 空间动画
官方文档里有独立的 ThreeDScene。这意味着 Manim 不只是平面公式播放器,它也能处理坐标轴、曲面、旋转视角和空间关系。
这类能力适合:
- 多元函数和曲面直观展示;
- 线性代数里的向量与空间基变换;
- 物理、机器人、几何建模里需要明确视角控制的演示。
通用视频生成当然也能做出"很像 3D"的画面,但如果你要求某个坐标轴严格转到某个角度,或者要求一条曲线始终跟某个参数同步变化,Manim 这种脚本控制会稳得多。
4. 精确时间轴
有人说"every frame 都可控制",这句话不夸张。Manim 的时间轴本来就是程序的一部分。对象什么时候出现、动画持续多久、哪一步先停顿、哪一句旁白该对齐哪一帧,这些都能在脚本里明确写出来。
这对讲解视频尤其重要。你做毕业答辩动画、组会解释图或者 YouTube 科普片,真正难的常常不是画面多花,而是讲解节奏不能乱。Manim 的好处是它把节奏写进了工程,不靠手感碰运气。
5. 脚本可版本管理
有人说"所有动画版本可 Git 管理",也值得保留。Manim 项目本质上就是一组 Python 文件、资源文件和渲染输出。你可以正常提交、对比 diff、回退版本、开分支试不同讲法。
这对需要不断改稿的内容团队很有用。尤其是课程、答辩、讲座这类材料,一次改公式、一处换颜色、一句文案挪顺序,都能追踪,而不是像传统剪辑工程那样经常留下一堆难回溯的时间线状态。
它和通用视频生成的分工
很多人会把"都能做视频"当成同类替代,但 Manim 和通用视频生成在输入、控制和输出目标上是两条路。
通用视频生成:采样镜头
如果你用的是 Sora 这类通用视频生成工具,你通常给它的是 prompt、参考图、风格要求、镜头语气或结构提示。它擅长的是:
- 生成氛围镜头;
- 做概念短片;
- 快速给出一段视觉化表达;
- 处理写实材质、光影和连续运动。
故事感、情绪感和场景感很强的内容,通常会走这条路。
Manim:写一个可复现的动画程序
Manim 的输入核心是对象、变换、参数和时间。你写的是:
- 哪个公式先出现;
- 哪个圆在第几秒变成方块;
- 相机怎样旋转;
- 某条曲线随着参数怎么更新;
- 最终视频以什么分辨率和质量导出。
二者的差别不只是"一个更技术,一个更简单"。更直接的差别是:
- 通用视频生成追求一段成立的画面;
- Manim 追求一段可验证、可修改、可反复渲染的动画过程。
所以很多"数学解释视频风格"看起来像被 AI 学会了,但一旦进入严密推导和对象级讲解,制作流程还是会回到 Manim 这类工具。
使用场景
下面三个场景都很典型。
毕业答辩动画
答辩里最怕的是:图表漂亮,但老师一问"这一步怎么来的",你只能回去翻 PPT。Manim 适合把算法流程、公式演化、结构图变化做成可控动画,讲的时候更容易对齐逻辑。
组会概念解释
组会常常不是做宣传,而是把一个复杂概念讲清楚。比如损失函数怎么变、模型结构怎么走、几何直觉怎么建立。Manim 在这种地方比花哨转场更有用,因为它能把重点压在对象关系上。
YouTube 科普视频
YouTube 视频对风格有要求,但长期看,频道最值钱的还是可复用工作流。Manim 一旦把模板建好,后续换主题、改公式、扩结构都会轻松很多。这也是 3Blue1Brown 一类频道能长期保持稳定视觉语言的重要原因。
最小入门路径
如果你想今天就开始试,可以直接沿着官方 Quickstart 走。
第一步:安装社区版或使用在线环境
如果你不想装本地依赖,直接试:https://try.manim.community/。
如果你准备本地装,看安装页:https://docs.manim.community/en/stable/installation.html。
第二步:运行官方最小示例
把下面这个示例存成 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这个命令跑通,说明你的环境、渲染链路和播放器调用都基本没问题。
第三步:把几何对象换成公式
不要马上做大项目,先把 Circle() 或 Square() 换成 MathTex(...),试一次公式出现、变色和移动。这样会更快进入 Manim 的核心场景。
第四步:再加 3D、镜头和节奏
等你确认 2D 对象、公式和简单变换都顺了,再碰 ThreeDScene、相机运动、分镜节奏和更长脚本。这样学得更稳,也更容易判断自己究竟是需要社区版,还是要进一步研究 3b1b 自用工作流。
如果你的目标只是先出一段像样的解释视频,通用视频生成确实省事。
如果你要长期做数学讲解、课程动画或科研说明,Manim 依旧是稳妥选择:公式准确,对象关系清楚,节奏可控,后面改稿也不用从头来过。