跳到主要内容

Manim 介绍

什么是 Manim?

Manim(Mathematical Animation Engine)是一个开源的 Python 动画库,专为制作数学可视化动画而设计。它最早由知名数学科普 YouTuber 3Blue1Brown 开发,用于制作其频道上的高质量动画视频。

目前有两个主要版本:

  • ManimGL:3Blue1Brown 官方维护的版本,更新较快,但文档较少。
  • Manim Community Edition (ManimCE):社区维护版本,文档完善,更适合初学者。

核心特性

  • 🎨 矢量图形渲染:基于 Cairo 和 OpenGL,输出高质量动画
  • 🔢 数学公式支持:原生支持 LaTeX 公式渲染
  • 🎬 视频导出:可导出为 MP4、GIF 等格式
  • 🐍 纯 Python API:使用 Python 代码描述动画逻辑
  • 🔧 高度可定制:支持自定义场景、颜色、动画效果

安装

推荐使用 Manim Community Edition:

pip install manim

部分功能还需要安装以下依赖:

  • FFmpeg:视频编码
  • LaTeX:公式渲染(如 MiKTeX 或 TeX Live)
  • Cairo:2D 图形渲染

快速上手

from manim import *

class HelloWorld(Scene):
def construct(self):
text = Text("Hello, Manim!", font_size=72)
self.play(Write(text))
self.wait(2)

运行命令:

manim -pql hello_world.py HelloWorld

参数说明:

  • -p:渲染完成后自动播放
  • -q:画质(l=低, m=中, h=高, k=4K)
  • -l:低画质,适合预览

核心概念

概念说明
Scene动画场景,所有内容写在 construct 方法中
Mobject可动画对象(圆形、文字、图表等)的基类
Animation动画效果,如 WriteFadeInTransform
self.play()播放一段动画
self.add()直接添加对象(不播放动画)
self.wait()暂停指定秒数

常用对象

# 几何图形
circle = Circle(radius=1, color=BLUE)
square = Square(side_length=2, color=RED)
triangle = Triangle(color=GREEN)

# 文字
text = Text("Hello")
latex = MathTex(r"E = mc^2")

# 坐标轴
axes = Axes(x_range=[-3, 3], y_range=[-2, 2])

常用动画

self.play(Create(circle)) # 描绘轮廓
self.play(Write(text)) # 书写文字
self.play(FadeIn(square)) # 淡入
self.play(Transform(circle, square)) # 变形
self.play(circle.animate.shift(RIGHT * 2)) # 移动
self.play(circle.animate.scale(2)) # 缩放

参考资源