Manim

该专题还在整理中。

Manim 不是 AI 产品,它是一个用 Python 写数学动画的开源引擎,真正让它在中文互联网火起来的,是 3Blue1Brown(Grant Sanderson)用它做的那些线性代数、微积分视频——如果你想让公式、坐标系、几何图形动起来,目前几乎没有比它更优雅的方案。

我先说清楚一件事:很多人搜「Manim」的时候,其实是在搜两样东西——一个是 Grant 自己写的原始版本 ManimGL(也叫 ManimCairo 时代的 Manim),另一个是社区维护、现在更主流的 Manim Community Edition(ManimCE)。这两个不是同一个仓库,安装命令、API 细节、文档都不一样,新手最容易在这里踩坑。下面我主要讲 ManimCE,因为它文档最全、更新最勤、遇到问题最容易搜到答案。

Manim 到底是什么

一句话概括:Manim 是一个「用代码画动画」的框架。你写 Python 脚本,描述某个数学对象在某一时刻应该长什么样、怎么变换,Manim 负责把它渲染成 MP4 或 GIF。

它和 After Effects、PPT 动画的根本区别在于:动画的每一帧都是被「计算」出来的,而不是被「拖拽」出来的。这意味着你可以让一条曲线精确地沿着函数图像生长,可以让矩阵乘法的每个元素同步高亮,可以让一个公式推导的每一步都严丝合缝地对齐——这些在传统动画软件里做起来极其痛苦,在 Manim 里只是几行代码。

  • 所属团队:最初由 Grant Sanderson 个人开发,2020 年前后社区 fork 出 Manim Community Edition,现在由一群志愿者维护,GitHub 上 star 数已经超过 7 万。
  • 官网 / 文档入口manim.community,文档在 docs.manim.community
  • GitHubgithub.com/ManimCommunity/manim
  • 收费情况完全免费、开源(MIT 协议)。没有任何付费墙,也没有官方云服务。你唯一要付的是自己的电费和渲染时间。

核心功能与特点

Manim 的能力可以拆成四层来看,从下往上分别是:

  1. 几何对象层(Mobjects):点、线、圆、多边形、向量场、曲面、坐标系、表格、矩阵……几乎所有你能在数学课本上见到的图形,都有现成的类。比如 CircleAxesMatrixThreeDScene
  2. 动画层(Animations)Create(画出来)、Transform(变形)、FadeInWrite(像手写一样写字)、Indicate(高亮提示)。这些可以串行、并行、组合成 AnimationGroup
  3. 场景层(Scene):一个 Scene 就是一个视频片段,你在这里写 self.play(...)self.wait(...),控制节奏。
  4. 渲染层:底层用 Cairo 做 2D 矢量渲染,用 OpenGL 做实时预览(-p 参数可以边写边看),最终输出 1080p60 甚至 4K 的 MP4。

几个我觉得最值得说的特点:

  • 数学公式原生支持:直接写 LaTeX,MathTex(r"int_0^infty e^{-x^2} dx") 就能渲染出漂亮的公式,而且可以对公式的某一部分单独做动画(比如只让指数部分变色)。这是它碾压其他工具的地方。
  • 坐标系与函数图像Axes + plot 几行就能画出函数曲线,还能让一个点沿着曲线运动、让切线跟随移动,做「导数可视化」简直是为它量身定做的。
  • 3D 场景ThreeDScene 支持摄像机旋转、曲面渲染、光照,做向量场、曲面面积、旋转体体积很直观。
  • 可复现、可版本控制:动画是代码,意味着你可以用 Git 管理、可以复用、可以参数化批量生成。这一点对做课程视频的人价值巨大。

安装与上手:别被第一步劝退

Manim 的安装是新手最大的门槛,因为它依赖 Python + FFmpeg + LaTeX 三件套。少任何一个,要么渲染报错,要么公式显示不出来。

依赖 作用 装不上会怎样
Python 3.9+ 运行 Manim 本身 根本跑不起来
FFmpeg 把帧合成视频 渲染完只有一堆 PNG 图片
LaTeX(推荐 TeX Live 或 MiKTeX) 渲染数学公式 用到 MathTex 的地方直接报错

安装方式我推荐两种:

  • pip 安装pip install manim,适合已经熟悉 Python 环境的人。装完用 manim --version 验证。
  • 官方推荐的系统级安装:Windows 用 winget install Python.Python.3.11 + winget install ffmpeg,macOS 用 Homebrew,Linux 用 apt。文档里有非常详细的 安装指南,按操作系统一步步来就行。

如果你连环境都不想配,还有个偷懒办法:用 Google Colab,一行 !pip install manim 就能在浏览器里跑,渲染完直接下载视频。缺点是 Colab 免费版渲染长视频容易超时。

一个最小可运行示例

光说没用,给你一段能直接跑的代码,感受一下 Manim 的写法:

新建 test.py,写入一个继承 Scene 的类,在 construct 里先创建 Circleself.play(Create(circle)),再用 Transform 把它变成 Square,最后写一个 MathTex 公式。然后在终端执行:

  • manim -pql test.py MyScene:低质量快速预览(-p 渲染完自动播放,-ql 是 480p15)。
  • manim -pqh test.py MyScene:高质量 1080p60,出片用这个。

第一次跑大概率会遇到 LaTeX 报错,别慌,八成是没装 TeX 或者缺宏包,装个完整版 TeX Live 基本都能解决。

ManimCE vs ManimGL:到底选哪个

对比项 Manim Community Edition ManimGL(原版)
维护状态 社区活跃维护,更新频繁 Grant 个人维护,更新较慢
文档质量 完整、有大量示例 相对简略
安装命令 pip install manim pip install manimgl
实时交互 支持(OpenGL 渲染) 支持得更好,Grant 本人用它
适合人群 绝大多数新手和课程制作者 想复刻 3B1B 视频风格、愿意啃源码的人

我的建议很直接:除非你明确要复现 3B1B 某个视频的效果,否则一律选 ManimCE。网上 90% 的中文教程、Stack Overflow 答案都是针对 CE 的。

它和 AI 有什么关系

严格说,Manim 本身不含 AI。但现在很多人用它,是因为可以让大模型帮你写 Manim 代码。比如你把需求描述给 ChatGPTClaude,让它生成一段 Manim 脚本,再自己微调参数。这条路是可行的,但要注意:

  • 模型对 ManimCE 的 API 记忆并不完美,经常混用 ManimGL 的写法,报错要自己修。
  • 复杂动画(多对象时序、3D 相机运动)还是得自己理解 playwait 的节奏。
  • 比较靠谱的用法是:让 AI 写骨架,你调细节,而不是指望它一次生成能直接出片的完整脚本。

学习路径建议

  1. 第一周:把官方 Tutorials 里的 Quickstart 和 Building Blocks 跑一遍,理解 Mobject 和 Animation 的关系。
  2. 第二周:临摹一个简单效果,比如「画一个圆,再画它的切线,让切点动起来」。
  3. 第三周:去 GitHub 搜 manim examples,找别人开源的项目读代码,这是进步最快的方式。
  4. 长期:加入 Manim 官方 Discord,遇到诡异 bug 在那里问,响应速度比 Stack Overflow 快得多。

相关问题

Q1:Manim 能用来做非数学类的动画吗?
可以,但没必要。它的强项是精确的几何与公式动画,做人物、场景、特效类的动画,用 After Effects 或 Blender 效率高得多。

Q2:渲染一个 10 分钟的视频要多久?
取决于复杂度和画质。1080p60 下,普通数学动画大概 1 分钟视频需要 3 到 10 分钟渲染,3D 场景或大量 LaTeX 公式会明显更慢。建议先用 -ql 预览,确认无误再出高清。

Q3:有没有在线的 Manim 编辑器?
官方没有。第三方有 try.manim.community 这类实验性在线环境,但功能有限,长期用还是本地装。

Q4:中文能正常显示吗?
可以,但需要指定中文字体,比如 Text("你好", font="SimHei")。默认字体不含中文,不设置会显示成方块。

Q5:学 Manim 需要多强的 Python 基础?
入门只需要会变量、函数、类的基本概念就够了。真正难的不是 Python,而是把一段数学讲解拆解成「先出现什么、再变换成什么」的分镜思维

内容由 AI 生成,产品信息请以官网为准。