马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2022-12-6 20:17 编辑
上一节课(06)我们初步了解了 Mobject 的使用。
这节课来看 Animations 的必备玩法,也就是动画的玩法。
在 Manim 中 Animations 分为两大类:Scene.play 和 Updaters
我们从最简单的 Scene.play 说起,Updaters 稍微难一些,我们放到后续课程来说啦。
重点:
在 play() 中可以有一个或者多个动画:
def construct(self):
self.play(
Animation1(...),
Animation2(...),
...
)
而同一个 play() 中的所有动画会在同一时间运行。
对于 Animation() 类中又有几个关键参数要知道:
run_time
run_time 就是运行时长:
self.play(
Animation1(mob1,run_time=3),
Animation2(mob2,run_time=3.66),
...
)
上述就会设置 Animation1 动画时长 3 秒,Animation2 动画时长 3.66 秒。
如果不想依次设置 run_time,还可以一步到位:
self.play(
Animation1(...),
Animation2(...),
...
run_time = 7.66
)
这样所有动画总共会在 7.66 秒内执行完。
当然如果你又在 Animation 中设置 run_time,又在最后也设置了,那么 Manim 默认会优先根据 Animation 中设置时长来生效。
rate_func
rate_func 即动画速率函数,常见就下面 8 种:
- smooth
- linear
- rush_into
- rush_from
- slow_into
- dounle_smooth
- there_and_back
- lingering
- exponential_decay
详细解释,我们放到后面来说,这里知道就好。
也是直接在 Animation 中使用:
self.play(
Animation1(...,rate_func=func1),
Animation2(...,rate_func=func2),
...
)
func1 和 func2 就是上面说的 8 种速率中的一种。
Animation1 和 Animation2 就会依次使用 func1 和 func2 速率来生成动画。
也可以统一设置:
self.play(
Animation1(...,rate_func=func1),
Animation2(...),
Animation3(...),
...
rate_func = global_func,
)
Animation1 使用 func1 速率,Animation2 和 Animation3 使用 global_func 速率。
remover
remover 参数是布尔类型,默认为 False,设置为 True 表示 Mobject 在动画运行结束后从屏幕中删除。
记住这些参数的玩法,总是自定义的优先级高于全局设置。
既然是浅谈,我们只需了解知道就好,详细的可以看官方文档:
传送门
文档中分为了 7 类,其实从应用角度来说只有下面 4 种动画创建:
- 创建 Create 类动画:将内容添加到屏幕中
- 提示 Indicate 类动画:用来区分不同元素,起到提示作用
- 变形 Transform 类动画:使用两个 Mobject 修改元素形状和位置
- 去除 Un 类动画:起到清除屏幕上元素效果的动画(remove 参数设置为 True)
好了,本节课就到这里,即将正式开始我们的 Manim 教程!
|