发布时间:2026/8/29 4:21:48
Manim数学动画实战指南:版本对比、环境安装与核心概念解析 Manim 是一个用 Python 写数学动画的开源项目GitHub 仓库名是 3b1b/manim。它由 3Blue1Brown 的作者 Grant Sanderson 开发目的是把数学解释视频里的图形、公式和运动编排变成可复现的代码。很多人第一次接触 manim是在 3Blue1Brown 的线性代数系列、微积分系列或神经网络视频里被那些平滑缩放、连续变换的画面吸引于是想去了解这个动画引擎本身。这也是“manim 官网”这类搜索词持续出现的原因人们需要先找到正确的项目入口再决定是看默认视频、读 README还是动手安装。这篇文章会围绕 3b1b/manim 这个原始仓库展开并把它和当前更活跃的 Manim Community Edition 对比清楚。实际动手之后你应该能够完成这样几条主线弄清楚 ManimGL 与 Community 的差异并正确安装理解 Scene、Mobject、Animation 三个核心概念写出一个包含几何图形和数学公式的动画用命令行控制分辨率、帧率和输出格式遇到 LaTeX、ffmpeg、中文字体等常见问题时按可复现的顺序排查。1. Manim 是什么以及为什么适合做数学动画1.1 数学解释视频需要的不是 PPT而是“可控的运动”传统科普视频解释一个公式时常用静止的公式加旁白或者用 PPT 动画做简单的淡入淡出。但数学里很多概念本质上是动态的比如极限逼近、向量在坐标系里的旋转、函数的切线逐渐贴合曲线。把这些过程做成动画观众才更容易理解“变化”本身。Manim 解决的正是这个难题。它不是一个通用的视频剪辑软件而是一个面向“数学对象”的动画框架。开发者在代码里描述图形、公式、坐标和动作Manim 负责把每一帧渲染出来再合成视频。和逐帧手绘动画相比用代码写动画有三个明显优势精确图形坐标、颜色、旋转角度都由代码决定可以精确到像素。可修改改一个参数就能重新渲染不需要在时间轴上找关键帧反复调整。可复用一个图形对象、一组动画方法都可以封装成函数在多个视频里反复使用。理解这个定位很重要。Manim 不是用来做普通演示动画的它的强项是数学符号、几何图形和坐标变换。如果你要做的是产品宣传片或信息图轮播它并不合适如果你要解释高数、线性代数、概率论或者物理过程它几乎是量身定做的。1.2 两个版本ManimGL 和 Manim Community 怎么选搜索“manim 官网”时会发现这个项目实际上分成了两个方向。一个是原始仓库 3b1b/manim代码由 Grant Sanderson 本人维护经常被称为 ManimGL另一个是社区分支 Manim Community Edition由一群贡献者维护包名就叫manim文档站点是 manim.community。两个版本的核心思想相同但 API 细节、安装方式、更新节奏都不一样。最典型的差异是创建图形的动画方法ManimGL 里常见ShowCreationCommunity 里则叫Create。如果拿 ManimGL 的代码直接放到 Community 里跑大概率会报错。对比项ManimGL3b1b/manimManim Community维护方Grant Sanderson / 3B1B 个人工作流社区维护者团队安装方式pip install manimglpip install manim命令入口manimglmanimAPI 稳定性跟随视频制作需求变化相对稳定有发布版本文档GitHub README 为主manim.community 文档站典型步骤示例ShowCreation(square)Create(square)适用人群想复刻 3B1B 风格、研究原始实现大多数新项目和学习者这里要强调一个容易踩的坑两个包在 Python 里导入时都使用from manim import *模块名相同。如果在同一个虚拟环境里同时安装manim和manimgl导入时会出现不确定行为甚至直接覆盖。建议每个项目单独建虚拟环境不要混装。1.3 学习 manim 前需要具备什么基础使用 Manim 不需要成为 Python 高手但至少要有以下基础Python 基础语法类、方法调用、关键字参数这是写def construct(self)的前提。命令行操作在终端里进入虚拟环境、运行渲染命令。一点 LaTeX 经验渲染数学公式依赖 LaTeX至少要会写e^{i\pi}这类公式片段。了解视频和帧率的基本概念比如 30 fps 意味着每秒渲染 30 张画面。如果完全没有 Python 经验建议先花半天时间做一遍 Python 入门练习再回来写 Manim 场景。否则遇到语法错误和导入错误时容易分不清是 Python 的问题还是 Manim 的问题。2. 环境准备Python、FFmpeg、LaTeX、渲染器缺一不可2.1 系统依赖清单Manim 的渲染链路比普通 Python 库长。简单理解Python 负责描述场景Cairo/Pango 或 OpenGL 负责绘制LaTeX 负责生成公式图形FFmpeg 负责把帧序列编码为视频。任何一环缺失或版本不对都会导致运行时报错。依赖作用两种版本是否都需要Python 3运行脚本都需要FFmpeg视频编码都需要TeX 发行版TeX Live / MiKTeX / MacTeX编译数学公式需要除非完全不写公式dvisvgm把 LaTeX 输出转换为 SVGManimGL 需要Cairo / Pango文本和图形绘制Community 文本渲染需要ManimGL 编译也需要在 Ubuntu/Debian 系系统上常见安装命令如下sudo apt update sudo apt install python3-pip ffmpeg dvisvgm \ libcairo2-dev libpango1.0-devLaTeX 可以装texlive和常用宏包集合sudo apt install texlive texlive-latex-extra texlive-fonts-extra在 macOS 上如果使用 Homebrewbrew install ffmpeg dvisvgm cairo pango brew install --cask mactexWindows 用户通常选择 MiKTeX 作为 LaTeX 发行版再单独安装 FFmpeg 并把可执行文件目录加入 PATH。ManimGL 在 Windows 上安装时经常会遇到 Cairo 编译问题这也是很多开发者最终选择 Community 的原因之一。2.2 安装 ManimGL3b1b/manim 原始仓库先创建虚拟环境并激活python -m venv .venv source .venv/bin/activate # Windows 下是 .venv\Scripts\activate然后安装pip install manimgl如果 pip 安装过程中出现 cairo 相关编译错误通常是系统缺少 Cairo 开发头文件。先回到 2.1 安装系统依赖再重新执行 pip install。安装完成后检查命令manimgl --versionManimGL 的使用方式和 Community 有区别。直接运行场景会打开预览窗口需要加-w才会把视频写入文件manimgl scene.py SceneName -w -m质量参数中-l是低质量-m是中等-h是高质量--hd对应 1080p--uhd对应 4K。实际参数以你安装版本的 README 为准因为个人维护的项目改动比较随性。2.3 安装 Manim CommunityCommunity 版本的安装更简单因为它通过 PyPI 发布标准 wheel依赖处理更完善python -m venv .venv source .venv/bin/activate pip install manim验证安装manim --version如果系统缺少 Pango 或 ffmpegCommunity 在渲染文本或合成视频时会给出明确的错误提示。先按 2.1 补上系统依赖即可。2.4 三分钟环境自检进入虚拟环境后依次执行以下命令确认环境完整python --version ffmpeg -version | head -n 1 latex --version | head -n 1 dvisvgm --version manim --version # 或 manimgl --version每一条都能输出版本号说明基础环境基本可用。如果latex --version报错后面所有数学公式场景都会失败如果ffmpeg -version报错视频文件无法生成。不要等到渲染时才怀疑这些依赖。注意环境检查不能只看“命令存在”还要看版本是否匹配。ManimGL 和较新版本的 Community 对 Python 版本要求不同安装前先确认当前 Python 版本在官方文档支持范围内。3. 核心概念Scene、Mobject、Animation 构成一个动画场景3.1 Scene一个场景就是一段镜头在 Manim 里每个动画都被组织在Scene子类中。定义一个场景就是写一个继承Scene的类并实现construct方法from manim import * class MyScene(Scene): def construct(self): # 在这里描述要显示的对象和动画 passconstruct方法相当于电影的导演脚本。Manim 按顺序执行其中的add、play、wait等操作把它们转成视频帧。一个 Scene 不一定是完整视频它可以是视频里的一小段比如“从直角坐标系切换到极坐标系”。把一个大视频拆成多个 Scene每个 Scene 单独渲染方便反复修改。Scene 提供的基本操作有四个self.add(mobject)直接显示对象没有入场动画。self.remove(mobject)直接移除对象。self.play(animation)播放一个动画这是大多数场景的核心。self.wait(seconds)画面静止若干秒默认是 1 秒。理解add和play的区别很关键。add是“瞬移”对象直接出现在画面上play是按帧插值让对象从当前状态平滑过渡到目标状态。3.2 Mobject所有可视对象的基类Mobject 是 Mathematical Object 的缩写是所有可视对象的基类。圆形、方形、坐标轴、公式、文字本质上都是 Mobject。circle Circle() # 圆形 square Square() # 正方形 line Line(np.array([-3, 0, 0]), np.array([3, 0, 0])) # 线段Mobject 自带位置、大小、旋转角度、颜色、透明度等属性并提供了大量

相关新闻

2026/8/29 4:21:48

Python零基础学习路线:从环境搭建到第一个项目实战

Python 零基础这条路,很多人不是学不会,而是被一堆资料带偏了。市面上到处是“全100集”“五天学会”“从入门到精通”的标题,真去跟着学,反而容易卡在环境安装、语法混淆和第一个能跑起来的程序之间。这篇文章想解决的&#xff0…

2026/8/29 4:21:48

蚂蚁集团2023秋招开发岗笔试复盘:题型解析与编程题思路

2023年秋招季,我在8月底投了蚂蚁集团开发岗,9月中旬收到笔试邮件。说实话,这封邮件来得比我预想的早——我本来以为像蚂蚁这种级别的公司,简历筛选至少得卡上两周。当天晚上我就去翻了一圈往年笔试的帖子,发现信息非常…

2026/8/29 4:16:48

LLM 辅助 PCB 布线:从规则知识库到智能评审 Agent

之前在做一块带 MCU、电源、通信接口的混合信号板卡时,我反复被同一个问题卡住:关键信号线怎么走、电源回路怎么铺、晶振下面能不能走线、DDR 线长要不要等长。公司没有专职的 PCB Layout 工程师,只能靠合同工程师远程帮忙改板,来…

2026/8/29 4:41:53

QCustomPlot实时波形绘制性能优化实战

简介:这是一套面向Qt初学者与嵌入式/工业可视化开发者的轻量级实时波形绘制解决方案,基于Qt5与QCustomPlot深度封装,解决传统曲线控件配置复杂、刷新卡顿、多通道管理困难等痛点,适用于传感器数据监控、示波器界面原型、设备状态实…

2026/8/29 4:41:53

AI技能市场化的关键:从提示词操作到稳定交付

直接说结论:AI 技能完全可以市场化,但真正值钱的不是“会不会用 AI”,而是“能不能用 AI 稳定交付一项别人愿意付费的任务”。现在市面上大量教程都在教提示词、教工具操作,很多人学完后仍然接不到单、找不到相关岗位,…

2026/8/29 4:41:53

STM32WB5MMG模块实战:BLE与802.15.4并发设计及射频避坑指南

做低功耗无线产品选型时,很多人第一反应是“直接用芯片方案的参考设计画板子”,但等真正走到射频调试阶段,才发现天线匹配、认证、PCB叠层这些环节,每一个都可能拖慢整个项目节奏。ST 的 STM32WB5MMG 就是冲着这个痛点来的&#x…

2026/8/29 4:41:53

美团技术岗笔试通关攻略:题型拆解与算法核心考点全解析

美团春招开得早,技术岗笔试向来是筛人最狠的一关。每年都有不少同学简历光鲜、项目能聊,结果倒在笔试上,连面试官的面都没见到。我见过太多人把精力花在背八股和刷面经上,反而忽略了笔试这一关其实是可以通过短期针对性训练快速提…

2026/8/29 4:41:53

Python开发环境搭建全攻略:从安装到PyCharm配置一篇搞定

1. 为什么每次装 Python 环境都要折腾半天? 很多初学者在开始学习 Python 时,第一关就卡在了环境安装上。要么是 Python 下载缓慢,要么是安装之后命令行输入 python 没反应,要么是 PyCharm 创建项目时找不到解释器。等到终于把环…

2026/8/28 16:16:17

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 16:16:21

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 16:16:22

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/29 0:01:10

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:01:10

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:01:10

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…