用代码做数学动画:Manim 的第一行动画,10 分钟跑通

发布时间:2026/8/29 14:15:26
用代码做数学动画:Manim 的第一行动画,10 分钟跑通 用代码做数学动画Manim 的第一行动画10 分钟跑通【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manimManim 是用 Python 代码做数学动画的引擎一行代码就能让图形动起来。这篇 Manim 教程带你走完全程安装、写第一行动画、理解三个核心概念最后做出 3Blue1Brown 风格视频的画面。适合想动手做数学科普视频的人。先看懂这个画面想象这样一帧一个圆从中间长出来停住然后整张图形平滑地扭成方形边角圆滑地过渡没有一帧跳变。上图里的曲线、切线、积分柱状条都是代码画出来的。Manim 出自 3Blue1Brown 频道的 Grant Sanderson最初就是为了把那条视频里的数学画面做出来才写的工具。所以它的定位很明确你不画时间轴、不拖关键帧动画由代码驱动画面精确到像素也能无限次重渲染。看完效果装它其实很快。最短路径装好 Manim只要一步前提是你有 Python 3.7 以上pip install manimgl装完敲一下manimgl能出命令行帮助就说明就绪了。两个平台各一句Windows 用户需要先单独装 ffmpeg否则最后存不了视频macOS 可以用 brew 把 ffmpeg 和 OpenGL 环境一次带齐。环境好了直接上代码。第一个动画只需要这几行from manimlib import * class CircleToSquare(Scene): def construct(self): circle Circle(radius1, colorBLUE) square Square(side_length1.6, colorRED) self.play(ShowCreation(circle)) self.wait(0.5) self.play(Transform(circle, square)) self.wait(1)逐行拆开看from manimlib import *一次拿齐所有类写动画时基本不用再 importclass CircleToSquare(Scene)一个类就是一个场景construct方法里按顺序写镜头前两句造一个蓝色的圆、一个红色的方形此刻它们还躺在内存里屏幕上什么都没有self.play(ShowCreation(circle))让圆画出来self.play是引擎入口对象的一切变化都从这里发生self.wait(0.5)停半秒给观众反应时间Transform(circle, square)让圆形变过渡成方形这就是开头那个镜头最后wait(1)定格收尾。保存为my_first.py在项目里运行manimgl my_first.py CircleToSquare窗口里会实时播放画面存到media/目录。Scene、Mobject、Animation 怎么记记住一句话就够Scene 是舞台Mobject 是舞台上的东西Animation 是东西怎么变。概念一句话例子Scene你的场景类镜头按顺序写在 construct 里class CircleToSquare(Scene)Mobject屏幕上所有可见对象Circle()、Text(hi)Animation对象如何变化ShowCreation、Transformself.play(动画)就是执行指令给舞台上一组动画它自己把每一帧补出来。三个概念清楚了往复杂走其实只是换食材。把动画做复杂两条最常用的路你想画一条函数曲线上坐标系和绘图接口axes Axes(x_range[-2, 2, 1], y_range[-1, 4, 1]) func axes.get_graph(lambda x: x**2, colorYELLOW) label axes.get_graph_label(func, f(x) x², x_val1.2) self.play(Create(axes), Create(func), run_time2)你想让三个图形错开进场而不是同时冒出来用LaggedStart排队顺手用run_time给镜头提速self.play( LaggedStart( ShowCreation(circle), ShowCreation(square), ShowCreation(triangle), lag_ratio0.4, ), run_time3, )曲线怎么画、节奏怎么调这两个方向基本够你起步了。你大概率会踩的坑运行报 OpenGL / GLFW 相关错→ 显卡驱动或 OpenGL 版本太老 → 更新显卡驱动或换独立显卡输出。说好的视频文件呢→ 默认输出在项目根目录的media/下按场景名分子文件夹 → 去那里找而不是当前目录。对象莫名其妙消失了→ 前一个镜头用了FadeOut对象已经被移出场景 → 需要复现就copy()留一份或改用Transform让它变走。run_time0.1没写效果→ 参数名写错会被静默忽略 → 复制官方示例里的参数名别凭记忆拼。Tex里的公式渲染失败→ 本机没有可用的 LaTeX 发行版 → 换Text先顶上再补装 LaTeX。坑绕开了剩下的就是多写。接下来动手跑一遍官方示例仓库里的 example_scenes.py 有一串现成场景任选一个运行并看完比如OpeningManimExample演示了矩阵把网格整体扭过去的效果。改一个参数看效果把示例里的run_time改成 0.5 和 5各渲染一次直观感受节奏差异。卡住就去社区问先在 GitHub 仓库的 issue 区搜一下搜不到再去 Manim 的 Discord 频道提问附上报错和最小复现代码通常当天就有回应。【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考