Loading... # 用 Manim(3b1b 的版本)做数学动画:我的初探与心得 最近在折腾数学动画 / 科普视频的时候,偶然又回到了 **3b1b/manim** 这个库(即最初由 3Blue1Brown 用于自己视频的那个版本)。这是我记录探索过程、也想跟大家分享的笔记。 --- ## 什么是这个版本的 Manim * 这个仓库最初是 3Blue1Brown 自用的动画引擎,也就是 “原始版” 的 Manim。 [GitHub](https://github.com/3b1b/manim) * 它后来有一个社区版(Community Edition),更稳定、文档更完善、生态更活跃。 [GitHub](https://github.com/3b1b/manim) * 要注意:这个 “原始版” 在安装/使用上会和社区版产生冲突,包名、API 可能不同。 [GitHub](https://github.com/3b1b/manim) --- ## 安装与环境依赖 以下是我在本地跑通它时踩的一些坑/总结: <pre class="overflow-visible!" data-start="516" data-end="575"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash"><span><span># 安装这个仓库对应的包(注意包名是 manimgl)</span><span> pip install manimgl </span></span></code></div></div></pre> ### 依赖要求 * Python ≥ 3.7 [GitHub](https://github.com/3b1b/manim) * **FFmpeg** (用于视频/帧处理) [GitHub](https://github.com/3b1b/manim) * **OpenGL** 支持 [GitHub](https://github.com/3b1b/manim) * **LaTeX** (可选,如果你要在动画里渲染数学公式) [GitHub](https://github.com/3b1b/manim) * 在 Linux 上还可能需要 `Pango` 等文本渲染库及其开发头文件 [GitHub](https://github.com/3b1b/manim) > 提醒一句:如果你的系统里已有其他版本的 Manim(比如社区版),要谨慎隔离环境(用 virtualenv / conda),避免包冲突。 --- ## 一个最简单的示例 下面是我写的一个最低限度的脚本,演示在这个版本下怎么生成一个简单场景: <pre class="overflow-visible!" data-start="1040" data-end="1212"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python"><span><span>from</span><span> manimlib </span><span>import</span><span> Scene, Circle, ShowCreation </span><span>class</span><span></span><span>MySimpleScene</span><span>(</span><span>Scene</span><span>): </span><span>def</span><span></span><span>construct</span><span>(</span><span>self</span><span>): c = Circle() self.play(ShowCreation(c)) </span></span></code></div></div></pre> 然后在命令行里运行(假设该脚本保存为 `myscene.py`): <pre class="overflow-visible!" data-start="1249" data-end="1293"><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash"><span><span>manimgl myscene.py MySimpleScene </span></span></code></div></div></pre> 执行后会弹出窗口显示动画(如果你在支持图形的环境里)。如果要导出为视频/文件,可以加上参数 `-w`、`-o` 等标志。 [GitHub](https://github.com/3b1b/manim) --- ## 优点与局限(我的主观观察) | 优点 | 局限 / 注意点 | | --------------------------------------------- | ------------------------------------------------ | | 核心设计简洁、靠近 3b1b 自己视频所用引擎 | 文档相对零散、例子不如社区版丰富 | | 适合想复刻一些 3Blue1Brown 风格视觉效果的人 | 社区支持、插件与扩展性不如社区版 | | 可直接在代码里精细控制动画、逐帧操作 | 若系统环境配置不当容易出错(GL、字体、依赖等) | 一句话总结:这个版本适合作为学习、探索“原版思路”的入口;但若你要做生产级、稳定、跨平台的动画,社区版可能是更现实选择。 --- ## 我接下来打算做的几件事(也给你一些思路) 1. **梳理 API 差异** 从社区版切换过来的时候,很多类名、方法名、参数签名都可能不同。我要做一个对照表。 2. **把一个真实的小动画跑通** 比如做一个几何/代数可视化(向量场、曲线演化之类的)作为 demo。 3. **包装脚本 + 自动化流程** 比如写脚本一键生成多个动画、批量导出视频、自动上传等。 4. **记录坑与解决方案** 当遇到错误/环境问题,把错误日志 + 解决方案写进博客,这对后来者最有帮助。 最后修改:2025 年 10 月 01 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭