一、先把定位说清:它不是"Manim",是 3b1b 那个仓分叉出来的社区引擎
很多人一提 Manim 想到的是 3Blue1Brown(Grant Sanderson)那个惊艳的数学动画引擎 3b1b/manim——GitHub 上 94,711★,但它的定位是"Grant 自己出视频用",API 随他个人审美走、发版节奏随意,不适合当生产依赖。生产用的那个是 ManimCommunity/manim(ManimCE),★41,327 · 3,162 forks · MIT · 最近 push 2026-10-06(API 实查)——它是社区把 3b1b 早期开源的 Manim 0.x 拉出来重新维护、按 3b1b 新版思路重写的分支,功能更完善、API 稳定、有正式语义化版本,官方文档和社区教程都基于它。选型时"用 Manim"这句话的实际含义,99% 是"用 ManimCE"——这条区分视频口播没讲,但直接决定你 pip 装的是哪个、写的代码能不能直接跑。
二、核心能力(对照口播 6 点逐条实查)
① 代码驱动动画:不是拖时间轴,是写 Python Scene,每一个 self.play() 都是一帧动画的声明式描述,渲染引擎按帧把"移动/变形/淡入淡出"插值出来。同一份脚本出 30s 短视频或 1080p 长视频只改分辨率/帧率参数,确定性可复现——这是它和剪映/Keynote 那类时间轴软件最本质的差别。
② LaTeX 公式动态演绎:底层用 MathTex 接 LaTeX,公式不是一张静态图,是"符号逐个写出、项与项之间变形"的动画(依赖系统装 texlive + latexmk)。
③ 几何与函数可视化:Axes/NumberPlane 画坐标系,ParametricFunction 画函数曲线,Triangle/RegularPolygon/Circle 摆几何,配合 transform 让图形之间"长出对方"。
④ 三维空间变换:继承 ThreeDScene 就能画旋转的立方体、曲面、相机沿路径飞行的 3D 场景,这是 3b1b 那些"降维切球体"名场面的地基。
⑤ MIT 协议 + pip/Docker 分发:pip install manim 一条命令,仓库同时出官方 Docker 镜像,CI 里跑无需手搓环境。
⑥ 适用场景:数学科普、教学演示、技术分享里"需要精确到每一帧"的动画——凡是你口播讲不清、必须让图形替你说的那段,就是它的甜区。
三、只有真跑 0.21.0 才写得出来的坑(README 一句话没提)
我把它 pip install manim==0.21.0 真跑了一遍,踩到的全是 0.21.0 的破坏性 API 变更,网上 90% 的教程(还停在 0.17/0.18)直接抄就会 AttributeError:
Axes.get_graph()/add_graph()被删了 → 现在画函数曲线要用ParametricFunction或FunctionGraph。老教程里axes.add_graph(lambda x: x**2)这段在 0.21.0 里直接报错。Scene.begin_3d()被删了 → 3D 场景必须子类化class MyScene(ThreeDScene)(或MovingCameraScene),不能再在一个普通 Scene 里中途"切进 3D"。ThreeDCamera没有.frame属性 → 老代码里self.camera.frame那种写法删掉,改走set_camera_orientation/begin_ending_animation这套。- 构造参数改名:
Axes(width=)已废弃,坐标轴尺寸改用x_length/y_length。
这些改动 README 的 changelog 有提、但没列"老代码怎么改"——只有 clone 下来对着 manim 源码 + 跑一遍才写得准,这正是本文和纯 README 转述的区别。
四、实跑证据(ECS 真出片,不是"据说")
在一台没 GPU 的 Linux ECS(OpenCloudOS · 2C)上走完全流程:dnf 装 pango-devel/cairo-devel/python3-devel/gcc → pip install manim==0.21.0(Tsinghua 镜像)→ 写一个 2D 场景(黑底坐标系上画 x²−1 抛物线 + 2sin(x) 正弦)→ manim -qm 渲染 → ffmpeg 抽帧。产物就是下面这张真渲染帧(不是示意图,是 0.21.0 直接出的 1280×720):

一个诚实的边界:同一台没 GPU 的机器上跑 3D 场景,软件光栅化(SwiftShader)出的是 6KB 全黑帧——3D 在纯软渲染服务器上基本不可用,得回有 GPU 的机器或降回 2D。2D 才是"任何 Linux CI 都能稳定出片"的那档,这也是它当教学/科普流水线主力形态的原因。
五、Linux 安装最大的坑:pango/cairo 系统库
pip install manim 会拉 Manimpango(Pango 的 Python 绑定,负责排版文字)和 pycairo,这俩要现场编译 C 扩展——如果系统没装 pango-devel / cairo-devel / python3-devel / gcc,pip 直接 error: command 'gcc' failed / cannot find pango。正确顺序是先把系统库装齐再 pip,而且包名易踩坑:
- 是
pango-devel不是pango1-devel(写错会让整个 dnf 事务直接 abort); - CentOS/RHEL 系没有叫
mesa的独立可装项(别照着某些博客dnf install mesa,包名不存在会报错); - 头文件那套(
python3-devel)漏一个,C 扩展就编不出来。
这条视频没讲,但它是"在服务器上第一次跑 Manim"卡死 90% 新人的真因。
六、我的判断:什么时候用它、什么时候别用
用它的信号:你要做的是"精确到帧"的数学/技术内容(讲课、科普、答辩 demo),需要可复现、可版本管理(脚本进 git)、CI 里能无人值守出片——这是 ManimCE 相对剪映那类工具不可替代的护城河。别用它的信号:① 只做纯营销/快闪短视频(它不是为快设计,出片偏"慢工出细活");② 无 GPU 环境还强上 3D(会出黑帧,先降级 2D);③ 抄网上老版本教程却装 0.21.0(第三节那四条破坏性变更会全中)。
与站内 《Math-To-Manim》 的关系:那篇写的是"自然语言 → AI 帮你规划 → 自动渲染 Manim"的上层封装仓(HarleyCoops 2,7K★),本文写的是引擎本身(ManimCE 41K★)——一个教你"不手写动画代码也能出 Manim 视频",一个教你"手写时 0.21.0 到底怎么改",两篇互补不重复。