我们经常能看到例如这样的数学动画,想着手制作但苦于没有方法。其实,这种动画是用 Manim 库做的,它是 Python 的一个第三方库,可以帮助做数学动画。

当然这个视频是我自己做的,呼应了 这篇文章 ,也请三连支持一下

Manim 介绍

Manim 最初由 Grant Sanderson (3B1B 创始人)开发,不过目前我们所用的大多是社区版,经过了很多人的完善和修复。

我也推荐大家使用社区版,因为它对新手更加友好(其实不只是新手)。

使用 Manim 需要有 Python 基础,因为它是 Python 的一个第三方库,我们全程都要在 Python 环境下使用它

使用 Manim

环境搭建及安装

首先,你需要有一个较新的 Python 版本(我用的 3.13),并安装一些基础数学运算库(为了更好的使用 Manim)例如 numpy 等

然后,在 MiKTeX 官网下载它,并将其放到环境变量中

例如,我安装在了 D:\MikTeX,就将环境变量设置为 D:\MikTex\miktex\bin\x64

可以打开命令行,用 miktex --version 验证一下是否安装并设置成功

随后使用 pip install manim 安装 Manim

同样可以使用 manim --version 判断是否安装成功

编译

首先,我们需要知道,我们写的所有代码都要在一个 class 中。其中,主函数(方法)的名称叫做 construct ,且类必须继承自 Scene

例如

from manim import *
import numpy as np

class Main(Scene):
    def construct(self):
        # 这里面会直接被执行
        pass

但是问题来了,我们怎么运行呢?

问得好,这样如果通过 py 来运行是肯定不通的,因为在解释器看来我们只是定义了一个类,并没有去调用它

所以我们要通过 manim 命令使用。

这是最常见的两条 Manim 命令:

manim -pql main.py Main # 预览用
manim -pqh main.py Main # 生成用

其中 -ql 表示低画质,生成较为快速,适合预览查看效果; -qh 表示高画质,常用于调试没问题了最终生成。 -p 则是生成完自动播放视频。main.py 是文件名, Main 是类名

写代码

那么该如何创建我们的第一个 Manim 动画呢?

以下是常见代码:

from manim import *
import numpy as np


class Main(Scene):
    def construct(self):
        title = Text("第一个Manim动画")                       # 实例化一段文字
        self.add(title)                                     # 让它直接出现
        triangle1 = Triangle()                              # 实例化一个三角形
        circle1 = Circle()                                  # 实例化一个圆形
        self.play(FadeOut(title))                           # 让title渐隐
        self.play(Create(triangle1))                        # 让三角形显示出来
        self.wait(1)                                        # 等待一秒
        self.play(ReplacementTransform(triangle1, circle1)) # 将三角形平滑的变化成圆形
        self.wait(1)
        self.play(FadeOut(circle1))
        thanks = Text("谢谢观看!").set_color(YELLOW)          # 设置颜色,调用颜色常量
        self.play(Write(thanks))                            # 让其以手写形式呈现
        self.clear()                                        # 清空屏幕

现在,你应该已经可以借助搜索引擎自主完成任何 Manim 数学动画了

任何事情不可能看了教程就永远会了,所以你还需要多加练习

订阅

那么,如果你如果对我的文章感兴趣,欢迎订阅我的博客