manim边做边学--淡入淡出

打印 上一主题 下一主题

主题 842|帖子 842|积分 2526

本篇介绍Manim中的淡入和淡出动画结果。
淡入FadeIn 主要用于让对象以渐变的方式在场景中显现。
它的特点是视觉上柔和过渡,能自然地引导观众注意新出现的元素。
淡出FadeOut 则是使对象逐渐透明直至消失。
用于移除已完成展示作用的元素或者进行场景切换过渡,它渐变消失的特点避免了元素突兀地脱离场景。
这两个类为创建流畅的动画展示提供了有效的工具。
1. 动画函数概要

1.1. FadeIn

FadeIn通过逐渐增加对象的透明度从完全透明(不可见)到完全不透明(正常表现),
给人一种平滑过渡的感觉,不会像忽然出现的元素那样突兀。
FadeIn主要参数有:
参数名称类型分析mobjectsMobject要进行淡入操作的对象shift向量类型定义对象在淡入过程中的平移向量target_position位置或Mobject类型确定对象淡入时的起始位置scale数值类型指定对象在淡入初始时的缩放比例shift参数可以使对象在淡入的同时按照给定的方向和距离进行移动,增加动画的动态结果。
target_position参数如果是一个Mobject,则以该对象的中央位置作为起始位置。
scale参数使得对象会先按照此比例进行缩放,然后在淡入过程中恢复到原始大小。
FadeIn的方法有:
名称分析clean_up_from_scene在动画完成后清算场景create_target用于创建动画的目标状态1.2. FadeOut

当某个元素在演示过程中不再需要展示,需要以一种自然的方式从场景中移除时,FadeOut就非常有效。
与FadeIn相反,它使对象的透明度从完全不透明逐渐变为完全透明,从而实现逐渐消失的视觉结果。
FadeOut的主要参数有:
参数名称类型分析mobjectsMobject要进行淡出操作的对象shift向量类型定义对象在淡出过程中的平移向量target_position位置或Mobject类型确定对象在淡出时移动到的目标位置scale数值类型用于指定对象在淡出过程中的缩放比例shift参数可以使对象在淡出的同时按照给定的方向和距离进行移动,增加动画的动态结果。
target_position参数如果是一个Mobject,则会将此中央位置作为目标位置。
scale参数使对象在逐渐消失的同时进行缩小或放大,为动画添加更多变化。
FadeOut的方法和FadeIn的类似,不再赘述。
2. 利用示例

FadeIn和FadeOut的参数不仅名称一样,含义也类似,只是一个用于淡入,一个用于淡出。
下面通过示例中演示淡入FadeIn的参数,对于FadeOut也是一样利用,反之亦然。
2.1. 基本利用

这个示例展示了FadeIn和FadeOut的基本利用,没有利用特殊参数,仅演示了对象的淡入和淡出结果。
  1. # 创建一个圆形
  2. c = Circle()
  3. # 创建一个正方形
  4. s = Square(color=BLUE)
  5. # 将圆形添加到场景中
  6. self.add(c)
  7. self.wait()
  8. # 淡入正方形 淡出圆形
  9. self.play(FadeIn(s), FadeOut(c))
复制代码
先将圆形添加到场景中,然后同时淡入正方形并淡出圆形。

2.2. FadeIn的shift参数

此示例演示FadeIn的shift参数,通过设置shift参数,使4个不同的形状在淡入时从场景的不同方向移动到其最终位置,展示了对象在淡入过程中的平移结果。
  1. c = Circle(
  2.     radius=0.8,
  3.     fill_opacity=1,
  4.     fill_color=RED_B,
  5. )
  6. t = Triangle(
  7.     color=GREEN,
  8.     fill_opacity=1,
  9.     fill_color=GREEN_B,
  10. )
  11. s = Square(
  12.     side_length=2,
  13.     color=BLUE,
  14.     fill_opacity=1,
  15.     fill_color=BLUE_B,
  16. )
  17. r = Rectangle(
  18.     height=2,
  19.     width=1,
  20.     color=YELLOW,
  21.     fill_opacity=1,
  22.     fill_color=YELLOW_B,
  23. )
  24. VGroup(c, t, s, r).arrange_in_grid(2, 2)
  25. self.play(FadeIn(c, shift=UP * 2))
  26. self.play(FadeIn(t, shift=DOWN * 2))
  27. self.play(FadeIn(s, shift=LEFT * 2))
  28. self.play(FadeIn(r, shift=RIGHT * 2))
复制代码

2.3. FadeIn的target_position 参数

这个示例演示了FadeIn的target_position参数,将文本的淡入起始位置设置为点的位置,表现了对象可以从指定位置开始淡入的特点。
  1. # 创建一个点
  2. d1 = Dot(color=BLUE).shift(UP * 2 + LEFT * 2)
  3. d2 = Dot(color=YELLOW).shift(UP * 2 + RIGHT * 2)
  4. # 创建文本
  5. t1 = Text("Hello,", color=BLUE)
  6. t2 = Text("Manim!", color=YELLOW)
  7. VGroup(t1, t2).arrange(RIGHT, buff=1)
  8. # 将点添加到场景中
  9. self.add(d1, d2)
  10. # 等待1秒
  11. self.wait()
  12. # 淡入文本
  13. self.play(FadeIn(t1, target_position=d1))
  14. self.play(FadeIn(t2, target_position=d2))
复制代码

如果是FadeOut利用target_position参数的话,元素会消失在上面示例中Dot的位置。
2.4. FadeOut的scale 参数

这个示例演示了FadeOut的scale参数,分别展示了对象在淡出时缩小(scale=0.5)和放大(scale=1.5)的结果,
分析了该参数对淡出时对象缩放的控制作用。
  1. s = Star(color=RED)
  2. h = RegularPolygram(6, color=YELLOW)
  3. vg = VGroup(s, h).arrange(RIGHT, buff=1)
  4. self.play(Create(vg), run_time=run_time)
  5. self.wait()
  6. # 淡出五角星 scale=0.5
  7. self.play(FadeOut(s, scale=0.5))
  8. # 淡出六边形 scale=2
  9. self.play(FadeOut(h, scale=2))
复制代码

3. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(fade.py),
下载地址: 完整代码 (访问密码: 6872)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表