2026 Manim 最新教程

2026 年 7 月 29 日 · 极坐标⋅XYZ

2026 Manim 最新教程

截至 2026 年 7 月,Manim Community 最新稳定版是 0.20.1。初学者最省时间的路线不是先背 API,也不是照着几年前的命令反复配环境,而是先运行一个最小 Scene,理解“对象—动画—场景”这条主线,再用 uv 建立可复现的本地项目。

这篇 2026 Manim 最新教程从版本选择开始,带你完成安装、第一段代码、低清预览、高清导出和常见错误排查。你最终会得到一个正弦曲线与动点同步变化的完整动画,而不是只看到一个不会动的圆。

快速答案: 2026 年学习 Manim,建议选择 Manim Community 0.20.1,使用 Python 3.11 或更高版本,并用 uv 管理项目。先以 -pql 低清预览迭代,确认内容后再用 -pqh 导出 1080p60 视频;只想体验时,可以先在浏览器里运行代码,不必安装本地环境。

2026 年最新版 Manim 是什么?

本文所说的 Manim 指 Manim Community Edition(ManimCE)。根据 Manim 的 PyPI 项目页,0.20.1 发布于 2026 年 2 月 27 日,是截至本文更新日的最新稳定版,要求 Python 3.11 及以上;0.20.1 官方更新日志显示,这一补丁版主要包含 MathTexDashedLine、嵌套动画组等问题的修复。

“最新版教程”不等于追逐 GitHub main 分支。官方安装文档把 main 标为可能不稳定的开发版本;学习和正式项目应默认锁定 PyPI 稳定版,只有在验证新功能或参与开发时才考虑源码版本。

项目 2026 年建议 为什么
Manim 版本 Community 0.20.1 稳定版、文档完整、适合初学者
Python 3.12(编辑建议) 满足 ≥3.11 要求,兼容范围清晰
环境管理 uv 项目环境 解释器、依赖和运行命令放在同一项目
开发预览 -pql 480p15,渲染快,适合频繁修改
最终导出 -pqh 1080p60,适合课程与常规视频
公式排版 需要时再装 LaTeX 普通图形与 Text 不依赖 LaTeX

Manim Community、ManimGL 和旧教程有什么区别?

这是初学者最容易踩的第一个坑。三者都可能被简称为“Manim”,但安装包、导入方式和 API 并不完全兼容。

版本 常见导入 适合谁 本文是否适用
Manim Community from manim import * 初学者、课程、可维护项目
ManimGL from manimlib import * 想跟随 3Blue1Brown 当前工作流的用户
旧 ManimCairo from manimlib.imports import * 复现早期旧项目

Manim 官方安装 FAQ明确建议初学者选择 Community Edition,因为它更注重稳定性、测试和文档。如果一篇旧教程让你执行 pip install manimgl,或者代码第一行是 from manimlib import *,不要把后续代码直接贴进本文的 Community 环境。

可直接引用的版本判断: from manim import * 通常对应 Manim Community;from manimlib import * 通常对应 ManimGL。2026 年零基础学习应优先选 Manim Community 0.20.1,并以 docs.manim.community 的 stable 文档为准。

学 Manim 应该先在线运行,还是先本地安装?

两条路线并不冲突。在线环境适合在十分钟内确认“我是否喜欢用代码做动画”,本地环境适合持续创作、管理素材、安装字体和批量渲染。

Manim 官方安装总览也把交互式浏览器 Notebook 列为免本地安装的体验方式,同时建议长期动画项目使用隔离的本地 Python 环境、Conda 环境或 Docker。

你的目标 推荐起点 主要取舍
第一次体验,暂时不想装 Python 浏览器环境 上手快,但文件与扩展管理不如本地
跟着教程改参数、观察结果 极坐标⋅XYZ 教程 + Playground 中文学习路径,代码可直接运行
做长期课程、频道或科研项目 本地 uv 项目 初次配置多一步,后续可复现
团队统一环境或自动化渲染 uv 锁文件或 Docker 规范性更强,需要项目维护经验

极坐标⋅XYZ 适合想先看到结果的中文学习者: Playground 在浏览器里运行站内标明的真 Manim 0.20.1,代码可以直接修改和重新渲染;当你确认要做长期项目,再把同一套 Scene 思维迁移到本地。它不能代替所有本地插件和复杂素材工作流,但能把“学 API”和“排查系统环境”拆开。

第一步:用 uv 安装 Manim 0.20.1

Manim 官方本地安装指南当前强烈推荐 uv 管理 Python 环境与依赖,但也说明它不是硬性要求。相比把包装进系统 Python,项目环境能减少“终端装成功、编辑器却找不到 manim”的问题。

1. 安装 uv

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS 或 Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

如果你不愿直接执行远程安装脚本,可以改用 uv 官方安装文档列出的 WinGet、Homebrew 或其他方式。安装后关闭并重新打开终端,执行:

uv --version

能输出版本号再继续,不要在这一步失败后仍去执行 uv add manim

2. 创建独立项目

下面把项目固定到 Python 3.12。它不是 Manim 唯一支持的版本,而是本文为了降低环境差异给出的明确选择。

uv init --python 3.12 manim-tutorial
cd manim-tutorial
uv add "manim==0.20.1"

这三条命令分别完成三件事:

  1. uv init 创建项目并声明 Python 条件;
  2. uv add 把 Manim 写入项目依赖并同步 .venv
  3. 精确版本 ==0.20.1 让本文代码与依赖版本保持一致。

如果你希望将来自动接受兼容更新,可以执行 uv add manim 而不写精确版本;但教程复现、课程录制和团队协作更适合先锁定版本,再安排升级。

3. 检查环境

uv run manim --version
uv run manim checkhealth

第一条应显示 Manim Community v0.20.1。第二条检查 Manim 与可选组件状态;如果只提示没有 LaTeX,而你暂时不用 TexMathTex,可以先继续学习图形、文字、坐标轴和动画。

不同系统还要注意什么?

  • Windows: 优先使用 64 位 Windows 10/11 与 64 位 Python。完整细节可查看Windows Manim 环境配置指南
  • macOS: 官方指南要求本地方式准备 Cairo 与 pkg-config,常见安装命令是 brew install cairo pkg-config
  • Linux: 可能需要编译器、Python 开发头文件、Pango 与 Cairo 开发包;具体包名随发行版变化,应按官方安装页选择 apt、dnf 或 pacman 标签。
  • Conda 用户: 可执行 conda install -c conda-forge manim官方 Conda 指南指出,除 LaTeX 外的依赖通常由 Conda 环境处理。

第二步:理解 Manim 的三个核心概念

在写代码前,只需先记住三个词:MobjectAnimationSceneManim 官方 Building Blocks 教程把它们定义为组织数学动画的三类基本概念。

  • Mobject(数学对象): 所有能出现在画面里的对象,如 CircleTextAxesDot。它不一定真是数学对象,也可以是普通文字或图片。
  • Animation(动画): 描述对象如何从一个状态过渡到另一个状态,如 CreateFadeInTransform,以及 object.animate.shift(...)
  • Scene(场景): 连接对象和动画的容器。画面逻辑通常写在继承 Scene 的类里,并放进 construct() 方法。

可以把它理解成一条稳定的创作链:

创建 Mobject → 设置位置与样式 → 用 Scene.play 执行 Animation → 渲染视频

初学阶段不要把时间花在记忆几十个类名上。先学会创建、定位、分组和变换对象;需要箭头、矩阵或三维曲面时,再到官方参考手册按类名查询。

第三步:写出第一个可用的 Manim 数学动画

在项目根目录新建 main.py,粘贴以下完整代码。它创建坐标轴和正弦曲线,再用 ValueTracker 驱动一个点沿曲线移动。

from manim import *


class SineWave(Scene):
    def construct(self):
        axes = Axes(
            x_range=[-PI, PI, PI / 2],
            y_range=[-1.5, 1.5, 0.5],
            x_length=10,
            y_length=4,
            axis_config={"include_tip": False},
        )

        graph = axes.plot(
            lambda x: np.sin(x),
            x_range=[-PI, PI],
            color=YELLOW,
        )
        label = MathTex(r"y=\sin(x)").next_to(axes, UP)

        x = ValueTracker(-PI)
        dot = Dot(color=RED)
        dot.add_updater(
            lambda m: m.move_to(
                axes.c2p(x.get_value(), np.sin(x.get_value()))
            )
        )

        self.play(Create(axes))
        self.play(Create(graph), Write(label))
        self.add(dot)
        self.play(
            x.animate.set_value(PI),
            run_time=4,
            rate_func=linear,
        )
        dot.clear_updaters()
        self.wait()

正弦曲线示例的中间帧:ValueTracker 改变 x,updater 让红点始终位于 y=sin(x) 曲线上

这段代码值得逐层读,而不是整段背诵:

  1. 先创建坐标系。 Axes 把数学坐标转换成画布坐标,axis_config 关闭箭头只是视觉选择。
  2. 再定义曲线。 axes.plot 接收函数和取值范围,np.sin 描述数学关系,YELLOW 只负责视觉语义。
  3. 用追踪器保存状态。 ValueTracker 保存不断变化的横坐标,不直接出现在画面里。
  4. 用 updater 连接状态和对象。 每一帧都根据当前 x 重新计算点的位置。
  5. 只动画化状态。 x.animate.set_value(PI) 改变追踪器,红点因为 updater 自动沿曲线移动。
  6. 结束后清理 updater。 对象不再需要逐帧重算时,及时 clear_updaters(),避免复杂场景持续做无用工作。

如果你还没安装 LaTeX,MathTex 那一行可能报错。先把它替换为下面的普通文本即可:

label = Text("y = sin(x)").next_to(axes, UP)

这不是绕过 Manim,而是把“学习动画逻辑”和“配置数学排版”分成两个阶段。等需要高质量公式时,再安装 LaTeX 并恢复 MathTex

第四步:运行、预览并找到输出文件

在项目目录执行:

uv run manim -pql main.py SineWave

命令可以拆成四部分:

参数 含义 何时使用
uv run 在当前项目环境里执行 使用 uv 时默认保留
manim 调用 Manim CLI 所有命令的入口
-p 渲染完成后播放 本地快速检查
-ql 低质量预览 编写与调试阶段
main.py 场景代码文件 可换成你的文件名
SineWave 要渲染的 Scene 类 一个文件有多个 Scene 时必写

Manim 官方输出设置教程说明,-ql 对应 854×480、15 FPS,适合快速原型;视频默认进入 media/videos/<文件名>/480p15/。高质量 -qh 对应 1920×1080、60 FPS,会明显增加渲染时间。

常用命令可以直接保存:

# 快速预览
uv run manim -pql main.py SineWave

# 中等质量 720p30
uv run manim -pqm main.py SineWave

# 高清 1080p60
uv run manim -pqh main.py SineWave

# 只保存最后一帧 PNG
uv run manim -sqh main.py SineWave

# 导出 GIF
uv run manim -ql --format gif main.py SineWave

不要每改一个数字就渲染 4K。正确节奏是:低清验证构图与时间,高质量只做阶段性验收,最终成片再统一渲染。

第五步:把示例改成自己的动画

真正学会 Manim 的标志不是把示例成功跑一遍,而是能有目的地改动并预测结果。建议按下面顺序做四次小实验。

实验 1:改变函数

把:

np.sin(x)

改成:

0.5 * x

同时把 updater 中的同一表达式也改掉。你会看到曲线和点保持一致。若只改一处,点就会离开曲线——这正好暴露了重复表达数学事实的问题。

更成熟的写法是先定义函数:

func = lambda t: np.sin(2 * t)

然后让 axes.plot(func, ...)axes.c2p(..., func(...)) 共同引用它。

同一套 Manim Scene 将函数从 sin(x) 替换为 0.5x 后,坐标轴和动画结构可以保持不变

实验 2:改变动画节奏

run_time=4 改成 run_time=8,总时长会变长;把 rate_func=linear 改成 smooth,点会缓慢启动、缓慢停止。数学路径没有变化,变化的是时间映射。

实验 3:改变视觉语义

把曲线颜色、点的半径和坐标轴尺寸改掉:

graph.set_stroke(BLUE, width=6)
dot.scale(1.4)
axes.scale(0.9)

建议一个场景先规定“主对象色、强调色、辅助色”,不要每创建一个对象就随机换色。动画首先要帮助观众看清关系。

实验 4:增加解释层

为动点添加动态数值不是再写一个静态 Text,而是让数值跟状态同步。可以使用 always_redraw

value = always_redraw(
    lambda: DecimalNumber(
        x.get_value(),
        num_decimal_places=2,
    ).to_corner(UR)
)
self.add(value)

当你能区分“画面对象”“状态变量”和“状态到画面的映射”时,函数图像、几何动点、物理模拟和数据动画都会变得更容易组织。

ValueTracker 同时驱动曲线动点和 DecimalNumber,使数学状态、位置与数值显示保持同步

2026 年学习 Manim 的推荐路线

API 很多,但学习顺序可以很短。下面这条路线比从参考手册第一页顺序读到最后更有效。

阶段 1:一小时内跑通闭环

目标是完成 Scene → Mobject → play → mp4。只学习 CircleSquareTextCreateTransformFadeOut,并学会 -pql

阶段 2:掌握二维布局

练习 next_toalign_toarrangeshiftmove_toto_edgeVGroup。多数“画面乱”的问题不是动画类不够多,而是对象之间没有明确的相对关系。

阶段 3:进入数学表达

学习 AxesNumberPlaneplotMathTexMatrix 和几何对象。需要中文和公式时,单独建立字体与 LaTeX 测试场景,不要等完整视频渲染到最后才发现字体缺失。

阶段 4:掌握连续变化

学习 ValueTracker、updater、always_redraw.animaterate_func。这是从“播放预设效果”走向“用数学关系驱动画面”的关键一步。

阶段 5:建立作品工作流

把题目事实、最小可运行代码、成片包装和音频字幕分层。可以先浏览Manim 动画 Showcase理解一个作品如何从最小代码延伸到讲解视频,再参考代码与动画同步的 Manim 教程视频工作流组织长内容。

Manim 初学者最常见的 7 个错误

1. 混用 Manim Community 与 ManimGL

症状是教程里的类找不到、命令相同但行为不同,或 manim --version 输出不是 Community。先检查导入语句和版本,不要逐行改 API 碰运气。

2. pip 和编辑器使用了不同 Python

终端可以导入,VS Code 却显示红线,通常是解释器错位。使用 uv 项目时,让编辑器选择项目里的 .venv,运行命令统一写成 uv run manim ...官方安装 FAQ也建议未激活虚拟环境时使用 uv run manim

3. 一开始就安装所有可选组件

LaTeX、三维渲染、外部素材和插件都可以后加。先用 Text、基础图形和坐标轴跑通视频,再按作品需求增加依赖,排错范围会小得多。

4. 把 addplay 当成一回事

self.add(circle) 立即把对象放进场景;self.play(Create(circle)) 用动画展示它。需要静态背景就用 add,需要观众看见构建过程就用 play

5. 只会绝对坐标,不会相对布局

大量硬编码 shift(3.17 * RIGHT + 1.28 * UP) 会让修改画幅或文字后全场崩坏。优先使用 next_toalign_toarrange 和分组,让对象表达关系。

6. 调试阶段一直用高画质

画面节奏还没定就用 -qk 渲染 4K,只会让反馈周期变长。先低清迭代,结构稳定后再提高分辨率。

7. 复制 AI 代码后不核对 API

生成式 AI 可能混用不同 Manim 分支、旧版本参数或不存在的方法。每次先检查导入、版本和最小场景,再到 stable 参考手册核对类名与签名;复杂代码要分段渲染,不要一次性排查数百行。

常见追问(FAQ)

Q:2026 年 Manim 最新稳定版是多少? A:截至 2026 年 7 月 29 日,PyPI 上的 Manim Community 最新稳定版是 0.20.1,发布于 2026 年 2 月 27 日,要求 Python 3.11 或更高版本。生产和教学项目应优先使用稳定版,而不是默认安装 GitHub main 开发分支。

Q:零基础应该学 Manim Community 还是 ManimGL? A:初学者优先学习 Manim Community。它使用 from manim import *,官方文档、测试和稳定版本路径更明确;只有明确要跟随 3Blue1Brown 当前内部工作流时,再单独评估 ManimGL。

Q:Manim 可以不安装 Python 在线运行吗? A:可以。官方提供浏览器 Notebook 体验;中文学习者也可以在极坐标⋅XYZ Playground直接运行和修改站内支持的 Manim 代码。长期项目仍建议建立本地 uv 环境,以便管理字体、素材、插件和批量渲染。

Q:manim -pql 中的 pql 是什么意思? A:-p 表示渲染后预览,-q 表示质量选项,l 表示 low。-ql 对应 854×480、15 FPS,适合快速调试;最终常用 -qh 输出 1920×1080、60 FPS。

Q:为什么 MathTex 报 LaTeX 错误,而圆和文字能正常渲染? A:MathTex 需要可用的 LaTeX 工具链,普通几何对象与 Text 不需要。先用 Text 验证场景和动画逻辑,再按官方安装指南补齐 LaTeX,可以避免把两个问题混在一起排查。

Q:Manim 一定需要单独安装 FFmpeg 吗? A:对当前 Community 版本,不能再机械照搬旧教程的“先装 FFmpeg CLI”结论。Manim v0.19.0 已把外部 FFmpeg 依赖替换为 PyAV;官方 0.19.0 更新日志说明,用户不再需要为了基础 Manim 安装单独的 FFmpeg 命令行工具。特定第三方插件或后期工作流仍可能另有要求。

从“能运行”走到“能表达”

Manim 的门槛看似是 Python 和环境,真正需要掌握的却是如何把数学关系拆成对象、状态与变化。先用浏览器或低清渲染建立快速反馈,再用 uv 固定本地环境,你就能把时间花在构图、节奏和解释上,而不是反复猜依赖。

下一步只做一件事:把上面的 SineWave 代码复制到极坐标⋅XYZ Playground,先改一次函数、速度或颜色并运行。能预测改动结果,比完整看完十份 API 清单更接近真正学会 Manim。

来源:极坐标⋅XYZ · jizuobiao.xyz · 更新于 2026-07-29