命令行工具
3b1b/manim avatar
3b1b/manim

ManimGL 1.7.2:为数学视频而生的动画引擎,但请先分清它和社区版

用于解释数学视频的动画引擎。使用 conda create -n manim python=3.9 创建 conda 环境。

93,930 个 Star7,714 个 ForkPythonMIT
GitHub

秒懂

它是什么?
ManimGL 是 3Blue1Brown 作者维护的动画引擎,用 Python 代码生成精确的数学动画。它和 Manim Community 版是两条不同的分支,安装包名、命令和 API 都不兼容,选择前必须明确自己的需求。
适合谁用?
ManimGL 适合两种人:一是想复刻 3Blue1Brown 视频风格、愿意阅读源码并接受不稳定 API 的创作者;二是想研究动画引擎内部实现的学习者。不适合需要稳定产出、团队协作或快速上手的用户,这类人应直接选择 Manim Community 版。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 6 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个引擎,两个分支,别装错包

Manim 的全称是 Mathematical Animation Engine,最初是 3Blue1Brown 作者 Grant Sanderson 的个人项目,用于制作 YouTube 上的数学视频。2020 年,一群开发者 fork 出了社区版,目标是更稳定、更好测试、更易上手。这个仓库本身是 ManimGL,即 3b1b 的版本。README 开头就警告:安装 ManimGL 时必须使用 pip install manimgl,而不是 manim 或 manimlib。这两个版本的 API 不兼容,混用会导致问题。对于只想快速做出动画的用户,社区版通常是更省心的选择,但如果你想完全复刻 3b1b 视频中的效果,ManimGL 是唯一的官方来源。

安装流程:从 pip 到 conda,细节决定成败

安装 ManimGL 的前提是 Python 3.10 或更高版本,以及 FFmpeg 和 OpenGL。Linux 系统还需要 Pango 及其开发头文件。最简单的安装方式是直接 pip install manimgl,然后运行 manimgl 命令。但如果你想修改源码,可以克隆仓库后执行 pip install -e .。Anaconda 用户按照 README 的步骤:conda create -n manim python=3.10,然后激活环境,再 pip install -e .。注意 README 中提供的 conda 命令是 python=3.10,而不是仓库描述里写的 3.9,后者可能已过时。安装完成后,运行 manimgl example_scenes.py OpeningManimExample 会弹出一个窗口播放简单场景。如果命令找不到,需要检查 pip 安装目录是否在 PATH 中。

核心用法:命令行驱动的场景渲染

ManimGL 的工作方式是通过命令行调用 Python 脚本,脚本中定义场景类,然后渲染成动画。基本命令是 manimgl <脚本文件> <场景类名>。例如 manimgl example_scenes.py OpeningManimExample 会渲染一个名为 OpeningManimExample 的场景。常用的命令行参数包括 -w 写入文件、-o 写入并打开、-s 只显示最后一帧、-so 保存最后一帧为图片、-n <数字> 跳到第 n 个动画、-f 全屏播放。这些参数让用户可以在渲染前预览效果,或者直接输出最终视频。配置文件 custom_config.yml 可以指定输出目录、图像和声音的查找路径,以及样式和视频质量的默认值。你可以在当前运行目录放一个同名文件来覆盖默认配置。

依赖与平台差异:LaTeX 可选,但 Pango 是硬性要求

LaTeX 是可选依赖,用于渲染数学公式,如果不安装,动画中的文本和公式将无法显示。Linux 上需要安装 texlive-science 和 texlive-fonts-extra,而不是庞大的 texlive-full。macOS 用户如果使用 ARM 处理器,必须额外安装 Cairo,命令是 arch -arm64 brew install pkg-config cairo。Windows 用户需要手动安装 FFmpeg 和 MiKTeX。这些依赖的安装过程因平台而异,README 给出了详细步骤,但如果你在 macOS 上使用 Intel 芯片,则不需要 Cairo。一个容易忽略的点是:即使你安装了 LaTeX,如果缺少特定宏包,某些公式可能仍然渲染失败,所以建议从 BasicTeX 开始,按需添加包。

与社区版的根本差异:稳定性 vs 灵活性

ManimGL 和 Manim Community 版在目标上截然不同。社区版追求稳定和易用,API 设计更友好,文档更完善,适合教学和常规动画制作。ManimGL 则保留了 3b1b 的个人风格,代码可能更贴近视频需求,但 API 变动频繁,文档仍在完善中。README 提到,3b1b/videos 仓库中的旧视频代码可能不兼容最新版本,这意味着如果你依赖旧代码,升级 ManimGL 可能导致动画无法运行。相比之下,社区版有更严格的版本控制,升级时破坏性变更较少。选择的关键在于:你更看重与 3b1b 视频效果的紧密匹配,还是长期维护的稳定性。

一个真实的限制:交互预览依赖 OpenGL 环境

ManimGL 的默认行为是弹出窗口实时播放动画,这需要 OpenGL 支持。在无头服务器或远程环境中,窗口可能无法显示,导致命令卡住或报错。虽然可以用 -w 直接写入文件,但首次运行时的窗口预览是官方文档中验证安装是否成功的方式。如果你在 CI 环境或 Docker 中运行,需要额外配置虚拟显示,例如 Xvfb,但 README 没有提供相关指导。另一个限制是 Python 版本要求:3.10 及以上,这意味着旧系统可能需要先升级 Python 环境。这些限制在社区版中可能更宽松,因为社区版支持更广泛的 Python 版本,并且可以完全离线渲染。

维护与升级成本:版本迭代快,代码可能过时

ManimGL 的最近版本是 v1.7.2,发布于 2024 年 12 月,说明项目仍在积极维护。但频繁的版本更新也意味着 API 可能变化,特别是如果你参考网上教程或旧视频代码,很可能遇到不兼容的情况。README 明确警告不要混用两个版本的安装指令,这暗示了升级时需要注意的坑。许可证是 MIT,这意味着你可以自由使用、修改和分发,但要注意,如果你分发修改后的版本,需要保留原始版权声明。对于长期项目,建议固定版本号,例如在 requirements.txt 中指定 manimgl==1.7.2,以避免意外升级导致的问题。

编辑结论

ManimGL 适合两种人:一是想复刻 3Blue1Brown 视频风格、愿意阅读源码并接受不稳定 API 的创作者;二是想研究动画引擎内部实现的学习者。不适合需要稳定产出、团队协作或快速上手的用户,这类人应直接选择 Manim Community 版。在决定使用前,务必先确认你安装的是 manimgl 包而不是 manim,并检查你的 Python 版本是否满足 3.10+ 的要求。此外,建议先运行 manimgl example_scenes.py OpeningManimExample 验证你的 OpenGL 环境是否正常,因为窗口渲染失败是常见问题。最后,请留意 3b1b/videos 仓库中旧视频代码可能无法在当前版本运行,这是版本迭代的代价。

官方来源

  1. Official README
  2. Project repository
  3. Release notes
社区笔记

社区笔记