manim边做边学--淡入淡出

news/2025/3/1 16:12:07/文章来源:https://www.cnblogs.com/wang_yb/p/18604739

本篇介绍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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851878.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js带模糊效果的隐藏滑动侧边栏插件

pushbar.js是一款带模糊效果的js隐藏滑动侧边栏插件。pushbar.js能制作上下左右四个方向的滑动侧边栏效果,并且在侧边栏菜单显示的时候,主页面会带有炫酷的模糊特效。在线演示 下载使用方法 在页面中引入pushbar.js和pushbar.css文件。<link href="dist/css/pushbar…

【python应用】命令行pdb调试python程序

首先准备一段有问题的python代码,如下: # cat test.py # 摘自:DevOps 和自动化运维实战一书 #! /usr/bin/env python s=0 n = int(s) print (10/n)使用python -m pdb 进入调试交互模式,常用指令如下l: 展示所有源码内容;n: 单步执行;p +变量名:打印变量的值;exit: 退出…

多段区间的时间滑块slider实现方式

多段区间的时间滑块slider实现方式写在前面:今天要实现一个尖峰平谷的数据配置,这可一下难倒我了,但是还好互联网上大神云集,感谢各位大神的倾情分享,现在就写下我的感悟,留给看到这篇文章的你参考链接--写在前面,希望好帖子和文章能够被更好的被发现首先就是查看功能的…

【OS】进程切换的本质是什么?

#缓冲区溢出攻击 #进程切换 我们都知道操作系统最重要的功能之一是多任务能力,也就是可以运行超过CPU数量的程序——即进程,要想实现这一功能就必须具备将有限的CPU资源在多个进程之间分配的能力,在程序员看来,我们的程序在一直运行,而在CPU看来程序其实在“走走停停”,程…

贵阳知识付费系统解决方案

随着信息技术飞速发展,教育行业正面临着前所未有的变革契机。作为数字化转型的重要一环,在线教育和知识付费逐渐成为行业内外关注的焦点。以贵阳市为代表的西部地区在近年来也积极投入教育资源整合和技术赋能,以求突破地域限制,打造更加开放和高效的知识传播体系。@www.tuz…

【日记】衣柜到了!ww(444 字)

正文终于愿意打墨水了。虽然今天上班还是一整个想死的心情。物理意义上上到有些恶心反胃。所以工作上的事情就不说了,免得倒垃圾,未来也都不想看。写这则日记时嘴里正嚼着大轩轩给的泡泡糖 w。以前没吃过大大,不过感觉跟其它泡泡糖没有多大区别。新衣柜到了!好耶!对比了一…

自定义资源支持:K8s Device Plugin 从原理到实现

本文主要分析 k8s 中的 device-plugin 机制工作原理,并通过实现一个简单的 device-plugin 来加深理解。1. 背景 默认情况下,k8s 中的 Pod 只能申请 CPU 和 Memory 这两种资源,就像下面这样: resources:requests:memory: "1024Mi"cpu: "100m"limits:mem…

Apply 类似下拉求和的那个下拉的动作 或者右拉的动作

import pandas as pd #每一列包含一科成绩 data ={Math:[80,90,70],English:[75,85,90],science:[88,92,78]} df=pd.DataFrame(data) #定义一个求差的方法 最大减去最小值的差值 def diff_max_min(col):return max(col)-min(col) #调用这个方法,axis=0按照列求 每列的差值 res…

Linux 系统中ld命令

001、Linux中ld命令是链接命令,其作用是将链接文件(经过编译和汇编后的机器码文件)和库文件整合为可执行文件或者是库文件。 ld(Link eDitor)命令是二进制工具集GNU Binutils的一员,是GNU链接器,用于将目标文件与库链接为可执行文件或库文件。002、(base) [root@PC1 tes…

面向服务的整车EE架构(SOA)设计开发咨询服务

经纬恒润多年来一直致力于为客户提供先进电子电气架构解决方案,近年来,经纬恒润在国内率先开展整车SOA架构的技术研发和业务布局,参与多款SOA架构下量产车型的研发,积累了丰富的SOA架构设计经验。概述面向服务的架构(Service Oriented Architecture, SOA)是一种从IT领域引…

axis 轴

import pandas as pddata = {col1: [1, 2, 3], col2: [4, 5, 6]}df = pd.DataFrame(data)第一种求整列的和column_sum = df.sum(axis = 0)print(column_sum)输出结果col1 6col2 15dtype: int64第二种求整行的和row_sum = df.sum(axis = 1)print(row_sum)输出结果0 5…

Latex搭建教程

1.领取免费服务器,推荐免费服务器(SanFengYun)见下图。2.安装宝塔面板,配置内网为127.0.0.1,访问外网地址。 3.可以在宝塔面板一键部署网站,输入自己的域名即可。 4.关键:安装docker,安装yum,设置github可以访问。 5.更换docker镜像,自带镜像无法访问 6.按照overleaf…