Manim数学动画引擎上手指南:10分钟做出第一个讲解视频

发布时间:2026/8/29 10:29:29
Manim数学动画引擎上手指南:10分钟做出第一个讲解视频 Manim数学动画引擎上手指南10分钟做出第一个讲解视频【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim最终产物一个能直接发出去的 mp4 文件Manim 数学动画引擎manimgl渲染出来的东西是一个标准的 mp4 视频文件约 20 秒画面里一张二维网格在线性变换下实时变形角落跟着公式渲染完就能直接发进群聊。它的工作方式是你写几十行 Python 代码引擎逐帧渲染、用 FFmpeg 编码产出可播放的视频文件。这篇文章基于 ManimGL3b1b 版本这个仓库按顺序讲清安装、最小示例、一个完整小作品、内部模块结构和新手最常踩的坑。不用它的话你得多做多少手工活常见的替代做法在 PPT 里画静态图或者在绘图软件里逐帧手画再拼成视频。问题有两个。一是不精确。函数图像的形状只能差不多换个参数就全得重画重画一次结果就不一样。二是不可复现。动画录出来就定死了改一个数字要整段重录手画的帧挪动还会变形。Manim 的做法相反网格、曲线、公式全部按数学定义算出来动画是两个精确状态之间的插值。改一个参数重新渲染结果依然是精确的。这就是不手绘帧的直接收益每一帧都是算出来的放大到任何位置都不糊。只需看懂的一件事mobject 和它的动画整个引擎的核心可以压缩成一句屏幕上的一切都是 mobject动画就是让它从初始状态插值到目标状态。Mobject数学对象是公共基类Circle 是它一个 Tex 公式是它一整个坐标系也是它。它们共享同一套位置、颜色、变换方法。Animation 则是一类把一个 mobject 从状态 A 带到状态 B的过程Create 表示从虚无到成形Transform 表示从形状 A 变到形状 B而.animate加上任意方法表示把该方法的执行过程播放出来。结论你写代码时不是在画动画而是在声明对象最后应该长什么样插值交给引擎完成。self.play(Create(circle))的意思就是让这个圆从没有变成有剩下的逐帧计算引擎自己算。最短上手路径从安装到跑通第一帧环境要求Python 3.10系统需要 FFmpeg 和 OpenGLLaTeX 可选渲染公式时才用到。想直接跑仓库自带示例最短路径是git clone https://gitcode.com/GitHub_Trending/ma/manim cd manim pip install -e . manimgl example_scenes.py OpeningManimExample最后一行会弹出一个窗口播放内置示例网格先被一个矩阵剪切变形接着复平面做 z→z² 映射。窗口能弹出说明环境没问题。只想把它当依赖库用时也可以直接pip install manimgl注意包名是 manimgl不是 manim。然后写你自己的第一个场景。新建一个 Python 文件内容是from manimlib import * class FirstScene(Scene): def construct(self): circle Circle(colorBLUE, fill_opacity0.5) formula Tex(rx^2 y^2 r^2) formula.next_to(circle, DOWN) self.play(Create(circle)) self.play(Write(formula)) self.wait(2)用manimgl first_scene.py FirstScene运行一个蓝色圆和圆的方程会依次被画出来。场景的全部结构就这一件事继承 Scene把动作写进 construct。三步完整作品做一个能发给别人的线性变换动画目标产出一段矩阵如何变形平面的短视频能直接发出去。共三步。第一步拿现成场景。仓库根目录的 example_scenes.py 里有 OpeningManimExample流程是完整的先出文字再让网格做 apply_matrix最后做复映射。它本身就是一个成品直接当模板用。第二步改一个参数。在场景里找到矩阵定义[[1, 1], [0, 1]] 这个剪切矩阵换成你要讲的那个。比如 [[0, -1], [1, 1]] 是 90 度旋转其余代码一概不动。第三步导出文件。默认 manimgl 只开窗播放加-w把结果写成 mp4加-o导出后自动打开manimgl example_scenes.py OpeningManimExample -w -o产出是输出目录里的一个 mp4 文件。发给朋友问他看不出来你换了矩阵。从改参数到拿到能播的文件不到一分钟。它是怎么拼起来的仓库里四类模块的分工核心代码都在 manimlib/ 下分成四类互相配合的部分。Mobject 层manimlib/mobject/屏幕上一切东西。几何图形在 geometry.py坐标系在 coordinate_systems.py3D 对象在 three_dimensions.py公式和文字在 svg/ 子目录。Animation 层manimlib/animation/Create、Transform、Rotate、FadeIn 各占一类文件。基类 animation.py 定义插值框架进度 alpha 从 0 走到 1每帧算一次当前状态。Scene 层manimlib/scene/Scene 管屏幕上的 mobject 列表和播放时钟scene_file_writer.py 负责把帧交给 FFmpeg 编码scene_embed.py 是嵌入 IPython 的交互式终端。渲染层manimlib/renderer/ 加 manimlib/shaders/。这是 ManimGL 与社区版最大的区别它用 WebGL着色器是现写的 WGSL 文件每帧把 mobject 数据上传成 GPU 缓冲由着色器fill、stroke、surface画出画面。所以它是实时渲染的交互调试才做得到。一帧的完整链路Scene 走时钟 → Animation 按当前 alpha 算出每个 mobject 的状态 → Renderer 组装顶点数据发往 GPU → 着色器上色 → 成帧交给 FFmpeg 编码。三个进阶能力交互调试 self.embed()。在 construct 的任意行写self.embed()程序走到这里会停下来打开一个 IPython 终端场景里的 circle、self 等都在作用域内随手改参数、试动画退出后从断点继续播。仓库里就有现成的 InteractiveDevelopment 场景示范用法。开发新场景时这是最省时间的功能。任意函数变形。除了 apply_matrix 做矩阵变换mobject 还有 apply_complex_function 和 apply_function用任意复函数或 R³→R³ 的函数把整个网格掰变形上面的曲线和公式跟着一起走。3Blue1Brown 里单位圆在 z² 下变成抛物线这类画面就是这条路做出来的。3D 场景。继承 ThreeDScene 而不是 Scene用 ThreeDAxes 和 Sphere 搭场景用 set_camera_orientation 控制相机角度。manimlib/shaders/ 里的 surface.wgsl 等文件是 3D 曲面渲染的底子。边界与取舍它擅长什么不擅长什么擅长精确的 2D 数学动画——函数图像、坐标变换、公式推导、几何证明以及 3D 曲面。凡是必须精确的讲解内容都是它的主场。不擅长也不建议硬用它不是视频编辑器。没有时间线、没有拖拽轨道非线性编辑不存在任何改动都靠改代码重新渲染。它不是录屏或 UI 演示工具。想展示软件界面、鼠标操作用它完全不对口。依赖不小Python 3.10FFmpegOpenGL公式文字还要 LaTeXLinux 上另需 Pango 开发头文件。生态分叉本仓库ManimGL和社区版manim安装指令不同、不能混用官方文档仍在建设中部分 API 得直接读源码。取舍标准很清楚要讲数学选 Manim要做演示用录屏工具。常见坑与绕法新手最常踩的三个位置坑一两个版本混装。Manim 有两个版本本仓库的 ManimGL包名 manimgl和社区版 manim。两者的安装命令、参数名、命令行都不一样混装会出现很难解释的报错。结论先定一个版本只装它的依赖只读它的说明。坑二公式渲染失败。Tex 和 MathTex 依赖本机 LaTeX 环境。缺了就两种绕法要么把公式换成 Text 纯文本要么装一个轻量 LaTeX——Ubuntu 上装 texlive-science、texlive-fonts-extra、texlive-latex-extra 三个包即可不必装完整的 texlive-full。坑三每次改动都重渲整段视频。默认行为是每次从头播放整个场景。用-n 5从第 5 个动画处开始播用-s直接跳到终帧-so把终帧存成图片。调试长场景时这套组合一轮能省几分钟。深入与社区卡住时往哪里看官方文档源码docs/source/涵盖安装、场景结构、动画与 mobject 参考。示例集example_scenes.py20 多个场景覆盖几乎所有主要功能文件头就写着运行方式。测试即示例tests/ 下有 surface_order.py、bounding_box.py 这类可运行场景适合验证渲染顺序和包围盒。社区Reddit 的 r/manim 版块和官方 Discord 服务器入口见 README渲染、着色器相关问题反馈较快。今晚就能动手的挑战换掉矩阵发出去视频别光看克隆仓库打开 example_scenes.py找到 OpeningManimExample把矩阵从 [[1, 1], [0, 1]] 改成 [[0, -1], [1, 1]]——这是一个 90 度旋转。用-w导出 mp4发给一个朋友只问一句刚才那张网格做了什么如果 20 分钟内没跑起来问题多半出在依赖上回去看上一节三个坑的解法。【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考