manim边做边学--淡入淡出
本篇介绍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. 使用示例
FadeIn和FadeOut的参数不仅名称一样,含义也类似,只是一个用于淡入,一个用于淡出。
下面通过示例中演示淡入FadeIn的参数,对于FadeOut也是一样使用,反之亦然。
2.1. 基本使用
这个示例展示了FadeIn和FadeOut的基本使用,没有使用特殊参数,仅演示了对象的淡入和淡出效果。
# 创建一个圆形
c = Circle()
# 创建一个正方形
s = Square(color=BLUE)
# 将圆形添加到场景中
self.add(c)
self.wait()
# 淡入正方形 淡出圆形
self.play(FadeIn(s), FadeOut(c))
先将圆形添加到场景中,然后同时淡入正方形并淡出圆形。

2.2. FadeIn的shift参数
此示例演示FadeIn的shift参数,通过设置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 参数
这个示例演示了FadeIn的target_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 参数
这个示例演示了FadeOut的scale参数,分别展示了对象在淡出时缩小(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)
manim边做边学--淡入淡出的更多相关文章
- jQuery基础(动画篇 animate,显示隐藏,淡入淡出,下拉切换)
1.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元 ...
- jQuery淡入淡出效果轮播图
用JavaScript做了平滑切换的焦点轮播图之后,用jQuery写了个简单的淡入淡出的轮播图,代码没有做优化,html结构稍微有一些调整,图片部分用ul替换了之前用的div. html结构如下: & ...
- Unity3D 4.61 实现淡入淡出的场景过渡方法。
还在学习过程中,如果有大大看到请指点. orz原来官方就有了更好的处理方法的教程,具体查看下面视屏. [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(五) 屏幕渐变效 ...
- [转]Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡出效果)
http://blog.csdn.net/yanzi1225627/article/details/22439119 众所周知,想要让ImageView旋转的话,可以用setRotation()让其围 ...
- 针对淡入淡出的定时轮播效果js
如果不使用jquery的fadeIn和fadeOut的接口和不适用animate情况下,如果要做用js实现淡入淡出轮播效果,我所想到的办法就是使用css3新特性transition(注意好兼容性). ...
- Unity 启动画面淡入淡出
前几天在玩我叫MT 2游戏的时候发现打开他们应用的时候发现他们Logo淡入淡出的效果做的挺好的,例如第一张是运营商腾讯的logo第二张是他们公司的游戏logo.我们也来模仿一下: 第一张图片:运营商的 ...
- js淡入淡出
示例: js淡入淡出 原理:更改css不透明数值 知识点: css不透明 filter:alpha(opacity:30); opacity:0.3;} 小技巧: 小于临界值,做加速 大于临界值,做减 ...
- ListView的淡入淡出和Activity的淡入淡出补间动画效果Animation
//=========主页面======================= package com.bw.lianxi7; import android.os.Bundle;import androi ...
- [js高手之路]匀速运动与实例实战(侧边栏,淡入淡出)
javascript中,如何让一个元素(比如div)运动起来呢? 设置基本的样式,一定要让div有定位( 当然用margin的变化也可以让元素产生运动效果 ); <style> div { ...
- jQuery-4.动画篇---淡入淡出效果
jQuery中淡出动画fadeOut 让元素在页面不可见,常用的办法就是通过设置样式的display:none.除此之外还可以一些类似的办法可以达到这个目的.这里要提一个透明度的方法,设置元素透明度为 ...
随机推荐
- Docker基本操作(端口?网络模式?)(五)
一.端口暴露 Docker 容器更多情况下是用来运行 Web 应用的,所以要如何访问到容器中的 Web 服务呢?比如我们现在运行一个 nginx 容器服务: $ docker run --name w ...
- NoC简介
一.什么是NoC NOC(Network on Chip)是一种用于片上系统(SoC, System on Chip)中的通信架构,它在芯片内为处理器.存储器.I/O 设备和其他硬件模块之间提供数据通 ...
- uprobe的使用浅析
uprobe是linux内核提供的一种trace用户态函数的机制 可以在不对二进制重新编译的情况下进行trace特定函数 本文描述了uprobe的基本使用方法 使用方法 官方的指引是这样的, 详细的可 ...
- WebAssembly C++开发环境搭建
WebAssembly 开发环境搭建 简介 WebAssembly 是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸 ...
- 墨天轮沙龙 | 清华乔嘉林:Apache IoTDB,源于清华,建设开源生态之路
在6月8日举办的[墨天轮数据库沙龙第七期-开源生态专场]中,清华大学博士,助理研究员,Apache IoTDB PMC 乔嘉林老师分享了<Apache IoTDB,源于清华,建设开源生态之路&g ...
- nestjs 和 .net DI 使用并注册的区别
核心:对象之间的关系 各种 引用 --- 方便使用各种服务 1. .net 注册服务 三种注册方式 build.Service.Addsigtel 单例 瞬时 等 .addSingtel<IU ...
- docker 靶场 笔记
docker 靶场 笔记 搜索 镜像容器 sudo docker search dvwa 查看所有镜像容器 docker ps -a 下载 指定的 镜像 并在后台启动 docker run -itd ...
- 容器虚拟化平台 KSV 1.5 发布:部署更便捷,适配更多信创需求!
报告!我们又迎来了一次重磅更新: 近日,由青云科技打造的轻量化虚拟机管理平台--KSV 容器虚拟化 1.5 版本正式发布! KSV 1.5 好在什么地方?逐个来解释 新增基于模板创建虚拟机.克隆虚拟机 ...
- 华为云云容器引擎CCE踩坑记
前几天把在公司办公区机房的一部分业务系统迁移至华为云,在华为云上现有的kubernetes集群(云容器引擎CCE)中创建了一个命名空间,并启用了命名空间的网络隔离功能,在该命名空间中创建了一些pod- ...
- RocketMQ 在小米的多场景灾备实践案例
本文作者:邓志文.王帆 01为什么要容灾? 在小米内部,我们使用 RocketMQ 来为各种在线业务提供消息队列服务,比如商城订单.短信通知甚至用来收集 IoT 设备的上报数据,可以说 RocketM ...