manim_1

本文章是基于bilibili up:乐正垂星 的manim教学视频编写,仅为本人学习过程。

首先我们尝试一下这段代码

1
2
3
4
5
6
7
8
9
10
11
from manim import *
class Try(Scene): # 继承自Scene的类
def construct(self): # 生成动画的代码
c = Circle(fill_opacity=1) # 定义圆,内部不透明度设置为1
s = Square(color=YELLOW , fill_opacity=1) # 定义正方形,内部设置为黄色,内部不透明度为10
self.play(FadeIn(c)) # 淡入输入圆形
self.wait() # 画面等待1秒钟
self.play(ReplacementTransform(c,s)) # 把c转化为s
self.wait() # 等待1秒
self.play(FadeOut(s)) #淡出
self.wait()

这里演示的是一段基于manim生成动画的代码,由这里我们可以看到三大类

  • Scene:给动画提供一个播放的场景
  • Moject:场景中的各种物体,如:圆、正方形等
  • Animation:作用在 Moject 之上,用这些物体制作一些动画

[注]:命令行参数 manim demo.py -p,如果拥有多个 Scene 则可以把类的名字作为命令行参数,放在文件路径后面 manim demo.py Try -p ,若不想写类名则会询问渲染的 Scene 的序号

1.Scene

Scene的几种用法:

  • add :针对 Moject 从场景中添加
  • remove :针对 Moject 从场景中移除
  • play :针对 Animation 播放一个或多个动画,同时传入多个可以同时播放
  • wait :让画面等待一段时间,默认是1秒,可传入参数改变等待的秒数

2.Animation

  • FadeIn()
  • FadeOut()
  • ReplaceTransform(a, b, run_time=3, rate_func=there_and_back) 若rate_func需要在FadeOut将参数改回a

3.Moject

可以设置很多参数,比如:

  • Line(LEFT, RIGHT, path_arc=0)
  • Text(‘blue,red,yellow’, t2c={‘blue’:BLUE, ‘red’:RED, ‘yellow’:YELLOW})
  • ParametricFunction(…)
  • Circle(…)