首页 > 其他分享 >manim边做边学--淡入淡出

manim边做边学--淡入淡出

时间:2024-12-13 13:31:17浏览次数:3  
标签:淡入 淡入淡出 -- FadeOut self 边学 color FadeIn shift

本篇介绍Manim中的淡入和淡出动画效果。

淡入FadeIn 主要用于让对象以渐变的方式在场景中显现。

它的特点是视觉上柔和过渡,能自然地引导观众注意新出现的元素。

淡出FadeOut 则是使对象逐渐透明直至消失。

用于移除已完成展示作用的元素或者进行场景切换过渡,它渐变消失的特点避免了元素突兀地离开场景。

这两个类为创建流畅的动画展示提供了有效的工具。

1. 动画函数概要

1.1. FadeIn

FadeIn通过逐渐增加对象的透明度从完全透明(不可见)到完全不透明(正常显示),

给人一种平滑过渡的感觉,不会像突然出现的元素那样突兀。

FadeIn主要参数有:

参数名称 类型 说明
mobjects Mobject 要进行淡入操作的对象
shift 向量类型 定义对象在淡入过程中的平移向量
target_position 位置或Mobject类型 确定对象淡入时的起始位置
scale 数值类型 指定对象在淡入初始时的缩放比例

shift参数可以使对象在淡入的同时按照给定的方向和距离进行移动,增加动画的动态效果。

target_position参数如果是一个Mobject,则以该对象的中心位置作为起始位置。

scale参数使得对象会先按照此比例进行缩放,然后在淡入过程中恢复到原始大小。

FadeIn的方法有:

名称 说明
clean_up_from_scene 在动画完成后清理场景
create_target 用于创建动画的目标状态

1.2. FadeOut

当某个元素在演示过程中不再需要展示,需要以一种自然的方式从场景中移除时,FadeOut就非常有用。

FadeIn相反,它使对象的透明度从完全不透明逐渐变为完全透明,从而实现逐渐消失的视觉效果。

FadeOut的主要参数有:

参数名称 类型 说明
mobjects Mobject 要进行淡出操作的对象
shift 向量类型 定义对象在淡出过程中的平移向量
target_position 位置或Mobject类型 确定对象在淡出时移动到的目标位置
scale 数值类型 用于指定对象在淡出过程中的缩放比例

shift参数可以使对象在淡出的同时按照给定的方向和距离进行移动,增加动画的动态效果。

target_position参数如果是一个Mobject,则会将其中心位置作为目标位置。

scale参数使对象在逐渐消失的同时进行缩小或放大,为动画添加更多变化。

FadeOut的方法和FadeIn的类似,不再赘述。

2. 使用示例

FadeInFadeOut的参数不仅名称一样,含义也类似,只是一个用于淡入,一个用于淡出。

下面通过示例中演示淡入FadeIn的参数,对于FadeOut也是一样使用,反之亦然。

2.1. 基本使用

这个示例展示了FadeInFadeOut的基本使用,没有使用特殊参数,仅演示了对象的淡入和淡出效果。

# 创建一个圆形
c = Circle()
# 创建一个正方形
s = Square(color=BLUE)

# 将圆形添加到场景中
self.add(c)
self.wait()

# 淡入正方形 淡出圆形
self.play(FadeIn(s), FadeOut(c))

先将圆形添加到场景中,然后同时淡入正方形并淡出圆形。

2.2. FadeIn的shift参数

此示例演示FadeInshift参数,通过设置shift参数,使4个不同的形状在淡入时从场景的不同方向移动到其最终位置,展示了对象在淡入过程中的平移效果。

c = Circle(
    radius=0.8,
    fill_opacity=1,
    fill_color=RED_B,
)
t = Triangle(
    color=GREEN,
    fill_opacity=1,
    fill_color=GREEN_B,
)
s = Square(
    side_length=2,
    color=BLUE,
    fill_opacity=1,
    fill_color=BLUE_B,
)
r = Rectangle(
    height=2,
    width=1,
    color=YELLOW,
    fill_opacity=1,
    fill_color=YELLOW_B,
)
VGroup(c, t, s, r).arrange_in_grid(2, 2)

self.play(FadeIn(c, shift=UP * 2))
self.play(FadeIn(t, shift=DOWN * 2))
self.play(FadeIn(s, shift=LEFT * 2))
self.play(FadeIn(r, shift=RIGHT * 2))

2.3. FadeIn的target_position 参数

这个示例演示了FadeIntarget_position参数,将文本的淡入起始位置设置为点的位置,体现了对象可以从指定位置开始淡入的特点。

# 创建一个点
d1 = Dot(color=BLUE).shift(UP * 2 + LEFT * 2)
d2 = Dot(color=YELLOW).shift(UP * 2 + RIGHT * 2)
# 创建文本
t1 = Text("Hello,", color=BLUE)
t2 = Text("Manim!", color=YELLOW)
VGroup(t1, t2).arrange(RIGHT, buff=1)

# 将点添加到场景中
self.add(d1, d2)
# 等待1秒
self.wait()

# 淡入文本
self.play(FadeIn(t1, target_position=d1))
self.play(FadeIn(t2, target_position=d2))

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

2.4. FadeOut的scale 参数

这个示例演示了FadeOutscale参数,分别展示了对象在淡出时缩小(scale=0.5)和放大(scale=1.5)的效果,

说明了该参数对淡出时对象缩放的控制作用。

s = Star(color=RED)
h = RegularPolygram(6, color=YELLOW)
vg = VGroup(s, h).arrange(RIGHT, buff=1)
self.play(Create(vg), run_time=run_time)
self.wait()

# 淡出五角星 scale=0.5
self.play(FadeOut(s, scale=0.5))
# 淡出六边形 scale=2
self.play(FadeOut(h, scale=2))

3. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(fade.py),

下载地址: 完整代码 (访问密码: 6872)

标签:淡入,淡入淡出,--,FadeOut,self,边学,color,FadeIn,shift
From: https://www.cnblogs.com/wang_yb/p/18604739

相关文章

  • [kali] kali系统的下载及在虚拟机中详细安装过程(附有下载链接)
    前言kalilinux链接:https://pan.quark.cn/s/7b394681d7c6提取码:k9ES链接失效(可能被官方和谐)可评论或私信我重发下载压缩包后解压!!安装路径不要有中文下载完以后是一个7z压缩包,需要用解压工具解压成文件夹。比如安装bandizip[Bandzip]文件解压工具的下载及详细安......
  • [Burp] burp 2024.3下载及安装配置过程(附有下载链接)
     前言Burp链接:https://pan.quark.cn/s/fb5a4e8c16a9提取码:MgBnBurp是一款Java语言编写的工具。下载得到压缩文件将文件解压,不要解压到有中文的目录!!文件名jdk-21.0.2Java环境start-burp.vbs用于启动burp_pro_v2024.3.1.1.jar千万不要解压!BurpLoaderKeygen.jar千万......
  • [VMware] VMware 17.5.0 中文版带序号生成器(中文版)安装详细教程(附下载链接)
     前言VMware17.5.0链接:https://pan.quark.cn/s/d93b53f59b41提取码:YsF7VMWare WorkstationPro是一款虚拟机软件,在其中可以安装各种虚拟操作系统。解压下载的压缩包得到文件,可以看到有一个应用程序和一个序-号生成器双击文件里的应用程序看到如图所示的安装向......
  • Windows系统基础(二):本地组与本地安全策略
    本地组和本地安全策略文章目录本地组和本地安全策略1.用户与组概念基本概念:常见组类型:2、用户与组设置常见操作方式:注意事项:3、内置账户控制访问常见内置账户及其功能:账户控制访问配置:4、本地安全组策略组策略的作用:常用的本地安全策略:应用场景:1.用户与组概......
  • [Ubuntu] linux之Ubuntu18.04的下载及在虚拟机中详细安装过程(附有下载链接)
     前言ubuntu链接:https://pan.quark.cn/s/283509d0d36e提取码:dfT1链接失效(可能被官方和谐)可评论或私信我重发下载压缩包后解压!!安装路径不要有中文下载后解压得到.iso文件,不要放在有中文路径的目录下,我这里是解压放在E盘下打开虚拟机,这里使用的是VMwareWorkstat......
  • Windows系统基础(三):服务端口指南
    服务端口文章目录服务端口一、WEB服务端口二、网络服务端口三、邮件服务端口四、远程服务端口五、其它服务端口总结一、WEB服务端口80(HTTP):HTTP是网站的默认端口,用于明文传输网页内容。虽然速度快,但缺乏加密保护,容易被中间人攻击。443(HTTPS):HTTPS是基于S......
  • [x64dbg] 加密与解密-x32dbg和x64dbg的下载及详细安装过程(附有下载文件)
    前言 x64dbg、x32dbg和ollydbg的分析操作区别不大夸克网盘打开x64dbg链接:https://pan.quark.cn/s/c26c156deefb提取码:Btqc链接失效(可能会被官方和谐)可评论或私信我重发下载压缩包后解压!!安装路径不要有中文解压后得到x64dbg文件打开,点击release双击x96dbg.ex......
  • 【汇编语言】内中断(一) —— 除法错误?看内中断如何轻松化解危机
    文章目录前言1.中断1.1中断信息1.2中断的分类1.3中断的优先权2.内中断的产生2.1导致内中断的原因2.2如何识别不同中断信息来源3.中断处理程序4.中断向量表4.1什么是中断向量表?4.2中断向量表的位置4.3表项所占空间5.中断过程5.1什么是中断过程?5.2具体......
  • 第一章 时间复杂度和空间复杂度
    一 集合框架1.作用:对数据进行管理,方便高效地进行增删改查,其管理有多种数据结构来实现,在java中利用集合框架来实现不同的数据结构2.在Java中学习集合框架的要求(1)学会如何使用(2)学会其内部实现原理二 时间复杂度1.作用:用于衡量某个数据结构执行效率的时间指标,用于消除直......
  • Amazon Aurora 中的数据表同步到 Amazon S3
    在现代数据处理架构中,将数据从关系型数据库迁移到对象存储是一个常见的需求。本文将详细介绍如何使用AWSDatabaseMigrationService(DMS)将AmazonAurora中的表数据同步到AmazonS3。前提条件在开始之前,请确保你已经:创建了一个AmazonAurora数据库实例。创建......