首页
/ 30分钟上手manim:零基础制作数学动画教程

30分钟上手manim:零基础制作数学动画教程

2026-02-04 05:01:22作者:滑思眉Philip

你还在为数学概念难以可视化而烦恼?想制作专业的数学教学动画却被复杂软件劝退?本文将带你30分钟入门manim(数学动画引擎),从安装到输出第一个动画,全程无需编程经验,让抽象公式动起来!

读完本文你将学会:

  • 快速搭建manim开发环境
  • 创建基础几何图形与数学公式
  • 添加平滑动画过渡效果
  • 导出高清视频与GIF动图
  • 掌握5个实用场景模板

环境准备:3步完成安装

manim支持Windows、macOS和Linux系统,推荐使用Python 3.8+环境。以下是最简安装流程:

核心依赖安装

首先安装FFmpeg(视频处理)和LaTeX(公式渲染):

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg texlive-full

# Windows (使用Chocolatey)
choco install ffmpeg

完整安装指南参见官方文档:docs/source/getting_started/installation.rst

源码获取与依赖安装

git clone https://gitcode.com/GitHub_Trending/ma/manim
cd manim
pip install -e .

验证安装

运行示例场景验证环境是否配置成功:

manimgl example_scenes.py OpeningManimExample

若看到坐标系变换动画窗口,说明安装成功!

核心概念:5分钟了解manim架构

manim动画由三个核心组件构成:

graph TD
    A[Scene 场景] --> B[Mobject 可动对象]
    A --> C[Animation 动画效果]
    B --> D[几何图形/公式/文本]
    C --> E[变换/移动/颜色变化]
  • Scene(场景):动画的舞台,所有元素都在场景中展示
  • Mobject(可动对象):可展示的基本元素,如圆形(Circle)、方形(Square)、公式(Tex)
  • Animation(动画):对象的动作效果,如创建(ShowCreation)、变换(Transform)

官方核心文档:docs/source/documentation/mobject/index.rst

实战教程:从方形到圆形的华丽变身

1. 基础场景框架

创建start.py文件,写入最基础的场景结构:

from manimlib import *

class SquareToCircle(Scene):
    def construct(self):
        # 你的动画代码将写在这里
        square = Square()  # 创建方形
        self.play(ShowCreation(square))  # 展示创建过程
        self.wait(1)  # 暂停1秒

执行命令渲染:

manimgl start.py SquareToCircle

2. 添加形状变换

修改代码,让方形平滑变换为圆形:

from manimlib import *

class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()  # 创建圆形
        circle.set_fill(BLUE, opacity=0.5)  # 填充蓝色,半透明
        circle.set_stroke(BLUE_E, width=4)  # 深蓝色边框,宽度4
        
        square = Square()  # 创建方形
        
        self.play(ShowCreation(square))  # 绘制方形
        self.wait()
        self.play(ReplacementTransform(square, circle))  # 方形变换为圆形
        self.wait()

完整示例代码:docs/example.py

3. 导出与分享

  • 导出图片:manimgl start.py SquareToCircle -s(保存至images/目录)
  • 导出视频:manimgl start.py SquareToCircle -o(保存至videos/目录)

进阶技巧:让动画更专业

交互式开发模式

在代码末尾添加self.embed()进入交互模式:

def construct(self):
    # ... 原有代码 ...
    self.embed()  # 动画结束后进入交互终端

在交互终端中可实时测试代码:

>>> play(circle.animate.stretch(4, dim=0))  # 横向拉伸4倍
>>> play(Rotate(circle, 90 * DEG))  # 旋转90度

数学公式渲染

使用Tex类添加LaTeX公式:

equation = Tex("E = mc^2")  # 创建公式
equation.scale(2)  # 放大2倍
self.play(Write(equation))  # 书写效果展示

更多公式示例:example_scenes.py

坐标系与函数图像

快速创建坐标系并绘制函数图像:

axes = Axes(x_range=(-3, 3), y_range=(-1, 5))  # 创建坐标系
graph = axes.get_graph(lambda x: x**2, color=RED)  # 二次函数图像
self.play(ShowCreation(axes), ShowCreation(graph))

场景模板:5个实用案例

应用场景 代码路径 关键类/方法
矩阵变换 example_scenes.py#L24-42 apply_matrix
复数函数可视化 example_scenes.py#L44-68 ComplexPlane
几何证明动画 example_scenes.py#L156-210 TransformMatchingStrings
3D曲面展示 example_scenes.py#L566-648 Surface
数据可视化 example_scenes.py#L420-495 Axes.get_graph

常见问题与解决方案

中文显示异常

  1. 安装中文字体(如SimHei或WenQuanYi Micro Hei)
  2. custom_config.yml中配置字体路径:
text_config:
    font: "SimHei"

配置文件路径:manimlib/default_config.yml

渲染速度慢

  • 降低分辨率:manimgl -r 800,600
  • 减少采样率:manimgl --quality low

学习资源与社区

收藏本文,关注项目更新,下一篇我们将深入讲解3D数学动画制作!如有疑问,欢迎在项目仓库提交issue交流。

登录后查看全文
热门项目推荐
相关项目推荐