3b1b/manim快速入门指南:从零开始创建数学动画
manim Animation engine for explanatory math videos 项目地址: https://gitcode.com/gh_mirrors/ma/manim
前言
3b1b/manim是一个强大的数学动画引擎,由Grant Sanderson(3Blue1Brown频道的创建者)开发。它能够帮助用户创建精美的数学可视化内容,特别适合制作数学教学视频。本文将带你快速上手这个工具,从安装后的第一个动画开始,逐步深入理解其核心概念和基本操作。
环境准备
在开始之前,请确保你已经按照官方文档完成了manim的安装配置。安装完成后,我们可以创建一个简单的Python文件来编写我们的第一个动画场景。
创建第一个场景
项目结构
建议按照以下目录结构组织你的manim项目:
manim/
├── manimlib/
│ ├── animation/
│ ├── ...
│ ├── default_config.yml
│ └── window.py
├── custom_config.yml
└── start.py
其中start.py
是我们将要创建的动画脚本文件。
基础代码解析
让我们从一个最简单的圆形动画开始:
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)
self.add(circle)
这段代码做了以下几件事:
- 导入manim库的所有必要组件
- 创建一个继承自
Scene
的类SquareToCircle
- 在
construct
方法中定义场景内容:- 创建一个圆形对象
- 设置填充颜色为蓝色,透明度为0.5
- 设置边框为深蓝色,宽度为4像素
- 将圆形添加到场景中
运行与查看
使用以下命令运行这个场景:
manimgl start.py SquareToCircle
运行后会弹出一个窗口显示你的动画。窗口支持以下交互操作:
- 鼠标滚轮:上下移动视图
- Z键+滚轮:缩放视图
- S键+鼠标移动:平移视图
- D键+鼠标移动:改变3D视角
- Q键:退出程序
如果想直接生成图片而不显示窗口,可以添加-os
参数:
manimgl start.py SquareToCircle -os
生成的图片会保存在images/
目录下。
添加动画效果
静态图像只是开始,让我们添加一些动画效果:
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)
square = Square()
self.play(ShowCreation(square))
self.wait()
self.play(ReplacementTransform(square, circle))
self.wait()
这段代码新增了以下功能:
- 创建一个正方形对象
- 使用
ShowCreation
动画展示正方形的绘制过程 - 等待1秒
- 使用
ReplacementTransform
动画将正方形变形为圆形 - 再次等待1秒
要生成视频文件,可以使用-o
参数:
manimgl start.py SquareToCircle -o
视频文件会保存在videos/
目录下。
交互模式
manim还提供了强大的交互模式,可以在动画播放后继续操作场景中的对象:
self.embed()
添加这行代码后运行场景,动画播放完毕后会进入IPython交互终端。在这个模式下,你可以实时输入命令操作场景中的对象,例如:
# 垂直方向拉伸4倍
play(circle.animate.stretch(4, dim=0))
# 旋转90度
play(Rotate(circle, TAU / 4))
# 向右移动并缩小
play(circle.animate.shift(2 * RIGHT), circle.animate.scale(0.25))
# 应用复数函数变换
play(circle.animate.apply_complex_function(lambda z: z**2))
核心概念总结
通过这个快速入门教程,我们了解了manim的几个核心概念:
- 场景(Scene): 每个动画都是一个继承自
Scene
的类 - 构造方法(construct): 定义动画内容的主要方法
- 图形对象(Mobjects): 如
Circle
、Square
等基本图形 - 动画(Animations): 如
ShowCreation
、ReplacementTransform
等 - 交互模式: 通过
embed()
方法进入实时交互
下一步学习建议
掌握了这些基础知识后,你可以:
- 探索更多内置图形对象和动画类型
- 学习使用LaTeX渲染数学公式
- 了解如何自定义图形样式和动画效果
- 研究3D场景的创建方法
manim提供了丰富的功能和灵活的扩展性,是制作数学可视化内容的强大工具。希望这篇快速入门能帮助你顺利开始manim之旅!
manim Animation engine for explanatory math videos 项目地址: https://gitcode.com/gh_mirrors/ma/manim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考