3b1b/manim快速入门指南:从零开始创建数学动画

3b1b/manim快速入门指南:从零开始创建数学动画

manim Animation engine for explanatory math videos manim 项目地址: 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)

这段代码做了以下几件事:

  1. 导入manim库的所有必要组件
  2. 创建一个继承自Scene的类SquareToCircle
  3. 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()

这段代码新增了以下功能:

  1. 创建一个正方形对象
  2. 使用ShowCreation动画展示正方形的绘制过程
  3. 等待1秒
  4. 使用ReplacementTransform动画将正方形变形为圆形
  5. 再次等待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的几个核心概念:

  1. 场景(Scene): 每个动画都是一个继承自Scene的类
  2. 构造方法(construct): 定义动画内容的主要方法
  3. 图形对象(Mobjects): 如CircleSquare等基本图形
  4. 动画(Animations): 如ShowCreationReplacementTransform
  5. 交互模式: 通过embed()方法进入实时交互

下一步学习建议

掌握了这些基础知识后,你可以:

  1. 探索更多内置图形对象和动画类型
  2. 学习使用LaTeX渲染数学公式
  3. 了解如何自定义图形样式和动画效果
  4. 研究3D场景的创建方法

manim提供了丰富的功能和灵活的扩展性,是制作数学可视化内容的强大工具。希望这篇快速入门能帮助你顺利开始manim之旅!

manim Animation engine for explanatory math videos manim 项目地址: https://gitcode.com/gh_mirrors/ma/manim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

班磊闯Andrea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值