2.2 初识Manim
Manim最核心的三个部分为Mobjects、Animations、Scenes,即数学对象、动画、场景。
还是以上一节的代码为例。
我们创建了文本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 Example
。manim
是必带的,-pql
表示以低画质-ql
制作视频,并在代码运行后预览-p
动画,也就是会直接跳出视频来,不用去生成的文件夹里面找。之后再跟上python文件名example.py
和你创建的类名Example
即可。