ManimGL 数学动画引擎:如何制作第一支可解释性数学视频(完整指南)
【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim
讲"曲线下的面积怎么算"时,一张静态图远远不够,你需要看到矩形一个个填满、面积随之逼近的过程。ManimGL 就是干这个的:它是 3Blue1Brown 团队开发的数学动画引擎,用 Python 代码把图形、公式逐帧渲染成视频,成品直接用于教学。
一句话定位:ManimGL 是代码驱动的数学动画引擎,每一帧都按精确的数学计算生成。适合三类人:数学老师做课件演示、自媒体作者做科普视频、以及想把推导过程"演出来"的学习者。
能力一览:你能拿到什么 💡
- 数学级精确的逐帧渲染:图形怎么动、曲线长什么样由你传入的函数决定,不用手工调关键帧,每一帧的计算都来自数学本身。
- 坐标系与函数图像开箱即用:
Axes.get_graph一行调用,正弦、抛物线直接画在坐标轴上,还能给曲线加标签、填充曲线下面积。 - 3D 场景与 GPU 渲染:基于 OpenGL,内置曲面、球、圆环等 3D 对象,支持光照和贴图,相机可以旋转、拉近。
从零跑通第一段动画 🎬
先装包。注意这个仓库对应的包名是manimgl,不是manim:
pip install manimgl环境要求 Python 3.10 以上,系统需装好 FFmpeg(负责编码视频)和 OpenGL;LaTeX 可后装,没装时公式对象会渲染失败。下面这个最小场景只有一个动作:把一个蓝色半透明的圆"画"出来。
from manimlib import * class MyFirst(Scene): def construct(self): circle = Circle(color=BLUE, fill_opacity=0.5) self.play(Create(circle)) self.wait(2)保存为my_scene.py,运行它:
manimgl my_scene.py MyFirst屏幕上弹出窗口,圆从空白处被画出来,停留 2 秒后窗口关闭——这就是你的第一个 Manim 数学动画。默认只播放不落盘,加-w参数会把视频写进默认目录videos/,加-o则写完自动打开。
运行逻辑:三个概念说清楚
看manimlib/的目录结构,整个引擎只围绕三类东西转:
- Scene(场景):舞台,源码在
manimlib/scene/。你的每个视频文件定义一个 Scene 子类,construct方法里按顺序写"先做什么、后做什么"。 - Mobject(数学对象):演员,源码在
manimlib/mobject/。圆、坐标系、公式、3D 曲面都是它。next_to、to_edge这类方法只负责摆位置,本身不产生运动。 - Animation(动画):走位,源码在
manimlib/animation/。self.play(Create(circle))读作"播放 circle 被画出来的过程"。同一行play里的动作并行执行,play之外的代码瞬间完成。
理解这三件之后,还有一个高频写法:.animate。circle.animate.shift(LEFT)会把"瞬间平移"变成"平滑地移过去",任何改位置、改颜色、改尺寸的方法都适用,不需要单独找动画类。
实战:用黎曼矩形解释曲线下面积 📐
目标:做一个十几秒的片段,讲"积分为什么是求和"。拆解成三步:先画坐标轴和曲线,再在曲线下方生成一组矩形——矩形就是"用直边阶梯近似曲边面积"的直观演示,正好对应仓库自带的get_riemann_rectangles方法。
class Riemann(Scene): def construct(self): axes = Axes((-1, 8, 1), (-1, 6, 1)) graph = axes.get_graph(lambda x: -0.1 * (x - 4)**2 + 5) rects = axes.get_riemann_rectangles(graph, x_range=(1, 7)) self.play(ShowCreation(axes), ShowCreation(graph)) self.play(FadeIn(rects))x_range=(1, 7)控制矩形覆盖的 x 区间,矩形数量随之变化。运行后得到:坐标轴和抛物线先被画出,随后一组矩形填充进曲线下方——"曲边用直边近似"的动画版就这么成了。想讲得更细,把FadeIn(rects)换成对每个矩形的逐个淡入即可。
四个高频坑 ⚠️
装错包名:pip install manim装到的是社区版,之后找不到manimgl命令。解法:本仓库对应pip install manimgl,README 里专门有警告,两个版本别混用。
Tex 公式报错:渲染Tex("...")时直接失败。原因是系统没装 LaTeX。解法:装一个轻量发行版(Linux 用 texlive-science 等包,Windows 用 MiKTeX);赶时间就先用Text写纯文本,公式后补。
找不到视频文件:运行完什么都没生成。因为默认只在窗口里播放,不写文件。解法:加-w落盘,或-o写完即打开;输出位置可在custom_config.yml里配置,默认是videos/。
embed 交互卡住:self.embed()之后程序"停住了"。这不是死机,是进入了 IPython 交互 shell,场景在暂停等你输入。解法:在 shell 里直接写play(...)、wait()(不用加self.前缀),输入exit()退出后场景从头重载,这正是官方推荐的边改边看流程。
进阶路线
- 入门:example_scenes.py 里有从开场演示到 3D 曲面的十几个场景,逐个用
manimgl example_scenes.py 场景名跑一遍,比读文档快。 - 系统学习:docs/ 下的 getting_started 目录按安装、配置、示例场景排好序,适合通读一遍。
- 进阶:
manimlib/shaders/是 WGSL 着色器源码,想改曲面填充、描边的渲染方式时从这里下手。
跑通manimgl example_scenes.py OpeningManimExample后,改一个颜色、换一种动画,看窗口里的反馈——这个"改一行、看一帧"的循环,就是用它做数学动画最快的路。
【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考