☰
Manim 教程:从安装到跑通第一支数学动画视频的上手指南
2026/11/4 14:51:05 网站建设 项目流程

Manim 教程:从安装到跑通第一支数学动画视频的上手指南

【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim

Manim(ManimGL)是一个用 Python 编写程序化动画的引擎,专门为解释性数学视频设计,最初服务于 3Blue1Brown 频道的动画制作。你通过 Scene 类把图形、公式和运动写成代码,引擎负责渲染成视频或图片。适合数学/物理教育者、技术内容创作者,以及想用代码精确控制画面每一帧的开发者。

适合什么场景,有哪些限制

  • 适合:需要精确控制图形位置、形变和节奏的解释类动画,例如函数变换、矩阵作用、公式推导逐步演示,结果可重复、可版本化管理。
  • 适合:3D 场景——基于 OpenGL,可以直接调整相机角度、移动光源、渲染带贴图的曲面。
  • 限制:这个仓库的包名是manimgl,与 2020 年分叉出来的社区版 manim 包名、安装流程都不同,两边的说明不要混用。
  • 限制:导出视频依赖 FFmpeg;用 Tex 渲染数学公式需要另装 LaTeX(可选,不用公式可跳过);Linux 还需 Pango 及其开发头文件。

安装步骤与运行验证

环境前提:Python 3.10 及以上。用 pip 安装:

pip install manimgl

装完先跑仓库自带的示例场景做验证:

manimgl example_scenes.py OpeningManimExample

预期结果:弹出一个窗口,播放一段简单动画——先是网格被矩阵做线性变换,再切换到复平面演示 z→z² 的映射。窗口正常播放且无报错,说明环境就绪。

如果要基于源码运行(改 manimlib 本身),再执行:

git clone https://gitcode.com/GitHub_Trending/ma/manim cd manim pip install -e .

最小示例:新建一个start.py,写一个继承Scene的类:

from manimlib import * class SquareToCircle(Scene): def construct(self): circle = Circle() circle.set_fill(BLUE, opacity=0.5) self.add(circle)

运行manimgl start.py SquareToCircle,窗口弹出后还能直接操作画面:滚轮平移、按住 z 滚轮缩放、按住 s 拖动、按住 d 改变 3D 视角,按 q 退出。

要产出文件而不是只看窗口:

manimgl start.py SquareToCircle -o

渲染完成后自动打开视频(默认存到脚本同级的videos/子目录)。其他常用参数:-w只写文件不打开,-s跳到结尾只看最后一帧,-so把末帧存成图片(存到images/子目录),-n <数字>跳到第 n 个动画,-f全屏播放。

核心能力:动画是怎么写出来的

从用户视角,写动画就围绕三件事:

  1. 舞台对象(mobject)。一切画面元素都是对象:Circle、Square、Axes、Text 等,用self.add放到舞台上,再调方法改颜色、大小、位置。任何方法调用加.animate前缀就会变成插值动画,比如grid.animate.shift(LEFT)会把平移过程逐帧播出来。
  2. 动画类。通过self.play(...)播放:ShowCreation描绘轮廓、Write模拟书写、FadeIn/FadeOut淡入淡出、ReplacementTransform(A, B)把 A 变形替换为 B。多个动画可以并列传入同时播放,self.wait控制停顿时长。
  3. 逐帧绑定与公式变形。add_updater、always_redraw让对象每帧重新计算(例如括号始终贴着方形的边、数值标签始终等于当前宽度);Tex用 LaTeX 渲染公式,TransformMatchingTex按子串匹配把公式的各部分移动到新的位置——数学视频里"公式平滑变形"的效果就是它做的。

典型使用场景:输入、操作、输出

  1. 函数与变换可视化。输入:一个函数或矩阵。操作:建好Axes/NumberPlane坐标系,用get_graph画出曲线,用apply_matrix、apply_complex_function对网格施加变换。输出:一段展示坐标系随之形变的视频。仓库example_scenes.py里的OpeningManimExample、GraphExample都是可直接运行的完整样例。
  2. 公式逐步推导。输入:若干行等价变形的公式。操作:Tex创建各行,用TransformMatchingTex配合matched_keys、key_map指定各部分怎么对应(比如把+对应到-),加path_arc让片段带弧线转到位。输出:公式碎片各就各位的推导动画,TexTransformExample展示了完整流程。
  3. 3D 曲面与镜头调度。输入:Sphere、Torus等曲面,可用TexturedSurface贴两张图(受光面/背光面)。操作:在 3D 场景中设置相机欧拉角、给相机帧加持续旋转的 updater、移动light_source。输出:可环绕观察的 3D 视频,样例见SurfaceExample。

使用建议与避坑点

  1. 先选定版本再装依赖。本仓库是 3b1b 原版 ManimGL;社区版在测试、CI 和贡献响应上更活跃,README 明确提醒两套安装说明不能互相套用。想低成本入门可以先看社区版,想研究原版实现或对照 3Blue1Brown 视频代码则用这个仓库。
  2. 调试用交互模式,别反复重跑整份脚本。在场景里加一行self.embed(),动画跑完会打开 IPython shell,可以直接敲play、add、wait等命令继续做动画;或者干脆不带参数运行manimgl,直接进入可交互窗口。
  3. 输出路径和默认样式统一放在custom_config.yml管理。视频、图片写到哪里,图片和声音资源去哪里找,默认质量与风格都可以改;在运行目录下再放一个同名文件即可覆盖默认值。

生态与延伸:周边项目与文档

  • 3b1b/videos:3Blue1Brown 全部视频动画的源码仓库,是学习完整场景写法的第一手素材;注意较老视频的代码可能与新版不兼容。
  • 社区版 manim:2020 年从本仓库分叉,目标是更稳定、测试更好、更友好地接受社区贡献,目前贡献生态最集中在那里。
  • manim_sandbox:manim-kindergarten 团队整理的额外类和视频代码合集,该团队同时维护中文文档。
  • 本仓库docs/目录:包含 getting_started(安装、快速上手、配置、示例场景)与 documentation 等章节,example_scenes.py本身也是最好的参考手册。

下一步行动:从这两个动作开始

先运行manimgl example_scenes.py GraphExample看函数绑定的完整示范;再照着docs/source/getting_started/下的快速上手页,把最小示例里的 Circle 换成你想做的图形,加上第一组self.play——你的第一个场景就跑通了。

【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询