2.2 初识Manim

Manim最核心的三个部分为MobjectsAnimationsScenes,即数学对象、动画、场景。

还是以上一节的代码为例。

我们创建了文本Text、圆形Circle、正方形Square,他们都是Mobjects。同时,我们用.animate方法将Mobjects的其他方法动画化(如平移.shift()、填充.set_fill()),用FadeIn()类完成渐入的动画效果,用ReplacementTransform()类完成将圆变换为正方形的动画效果。而所有这些都得在Scenes上进行,也就是将Mobjects添加.add()到画布上,或者在画布上完成动画效果.play(),并且所有的代码都得定义在construct()方法之中,而这个方法又属于一个继承了Scene类的类(这里是Example类)中。

其余细节可以查看代码中的注释。

# example.py
from manim import *

class Example(Scene):
    def construct(self):
        # 创建文本对象
        t1=Text('你好!Manim')
        # 将文本对象添加到画布中,默认在画面中心
        self.add(t1)
        # 视频等待1s
        self.wait(1)
        # 将文本上移三个单位这一行为动画化
        self.play(t1.animate.shift(UP*3))   # UP为常量,表示向上平移一个单位,同理有DOWN、LEFT、RIGHT等

        # 创建圆形对象并设置边框颜色
        circle=Circle().set_color(BLUE)     # BLUE为常量,表示蓝色,同理有RED、GREEN等
        # 为圆形对象播放渐入动画
        self.play(FadeIn(circle))
        # 将圆形对象设置填充色这一行为动画化,不透明度为0.5,持续时间为1s
        self.play(circle.animate.set_fill(BLUE, opacity=0.5), run_time=1)
        self.wait(1)

        # 创建正方形对象,并设置边框颜色和填充色
        square=Square().set_color(RED).set_fill(RED, opacity=0.5)
        # 实现从圆形变换为正方形的动画
        # ReplacementTransform表示变换前后对象主体变为后者,即样子变了,名字也变了
        # 如果是Transform(circle, square)则表示不更改对象主体,变换后依旧是前者,即样子变了但名字不变
        self.play(ReplacementTransform(circle, square, run_time=1))
        # 由于是ReplacementTransform,则主体变为正方形,故对正方形填充颜色这一行为进行动画化
        self.play(square.animate.set_fill(RED, opacity=0))
        self.wait(1)

再来说说输出命令manim -pql example.py Examplemanim是必带的,-pql表示以低画质-ql制作视频,并在代码运行后预览-p动画,也就是会直接跳出视频来,不用去生成的文件夹里面找。之后再跟上python文件名example.py和你创建的类名Example即可。