首页 > 其他分享 >【manim动画教程】--常用动画效果

【manim动画教程】--常用动画效果

时间:2023-04-12 15:11:21浏览次数:32  
标签:动画 play 效果 -- shift self color manim 动画教程

manim的主要功能就是制作动画,因此它提供了各类丰富的动画效果,
本篇主要介绍其中最常用的几种动画效果。

至于特殊的动画效果,以及自定义动画效果的方法以后再另外介绍。

1. 创建效果

展示某个元素或者文字时,一下子就全显示出来会显得比较突兀,通过创建效果的动画,让各个元素的出现更加的自然。
常用的创建效果动画主要有:CreateWriteFadeIn三个方法。

1.1 Create

Create一般用在创建图形上,绘制时图形逐步显示出来。
比如:

s = Square(side_length=2, color=BLUE)
self.play(Create(s))

运行效果:
创建效果-Create.gif

1.2 Write

Write用在文字的创建上,绘制文字时逐个显示文字。
比如:

t = Text(
    "Welcome to Manim",
    t2c={"Welcome": BLUE, "Manim": RED},
    t2f={"Manim": "STCaiyun"},
)
self.play(Write(t))

运行效果:
创建效果-Write.gif

1.3 FadeIn

FadeIn是一种逐渐由模糊到清晰的显示方式。
比如:

s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.play(FadeIn(s))

运行效果:
创建效果-FadeIn.gif

2. 销毁效果

销毁的效果一般用在移除图形和文字的场合。

2.1 Uncreate

Uncreate一般用在擦除图形。
比如:

s = Square(side_length=2, color=BLUE)
self.add(s)
self.wait(0.5)
self.play(Uncreate(s))

运行效果:
销毁效果-Uncreate.gif

2.2 Unwrite

Unwrite一般用在擦除文字。
比如:

t = Text(
    "Welcome to Manim",
    t2c={"Welcome": BLUE, "Manim": RED},
    t2f={"Manim": "STCaiyun"},
)
self.add(t)
self.wait(0.5)
self.play(Unwrite(t))

运行效果:
销毁效果-Unwrite.gif

2.3 FadeOut

FadeOut是一种逐渐消失的显示方式。
比如:

s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.add(s)
self.wait(0.5)
self.play(FadeOut(s))

运行效果:
销毁效果-FadeOut.gif

3. 移动效果

移动的动画有两个函数:

  1. shift:移动制定的距离
  2. move_to:移动到指定点

比如:

s = Square(side_length=1, color=BLUE, fill_opacity=0.6)
self.add(s)
self.play(s.animate.shift(RIGHT))  # 右移1个单位
self.play(s.animate.shift(UP))  # 上移1个单位
self.play(s.animate.shift(LEFT * 2))  # 左移2个单位
self.play(s.animate.shift(DOWN * 3))  # 下移3个单位
self.play(s.animate.move_to(ORIGIN))  # 移动到中心处

运行效果:
移动效果.gif

4. 旋转效果

旋转 Rotate,通过设置角度和旋转的中心来控制旋转效果。
比如:(原地自转)

s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.add(s)
self.play(Rotate(s, angle=2 * PI), run_time=2)  # 自旋转1周
self.wait(0.5)

运行效果:
旋转效果-自转.gif

再比如:(绕某个中心点旋转)

s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(UP)
self.add(s)
# 绕屏幕中心旋转1周
self.play(Rotate(s, angle=2 * PI, about_point=ORIGIN), run_time=2)
self.wait(0.5)

运行效果:
旋转效果-绕中心旋转.gif

5. 变换效果

变换也是使用的比较多的一种动画效果。
尤其是在数学视频中,经常遇到随着参数的变化,图形随之变形;或者反之。

5.1 图形变换

变换时既可以保留原图形(TransformFromCopy),
也可以从原图形直接变换成新的图形(ReplacementTransform)。
比如:(保留原图形)

s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(LEFT * 2)
c = Circle(radius=1, color=RED, fill_opacity=0.6).shift(RIGHT * 2)
self.add(s)
self.wait(0.5)
self.play(TransformFromCopy(s, c))

运行效果:
变换效果-保留原图形.gif

再比如:(不保留原图形)

s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(LEFT * 2)
c = Circle(radius=1, color=RED, fill_opacity=0.6).shift(RIGHT * 2)
self.add(s)
self.wait(0.5)
self.play(ReplacementTransform(s, c))

运行效果:
变换效果-不保留原图形.gif

5.2 文字变换

文字变换与图形变换类似。
比如:(保留原文字)

t1 = Tex(r"$(a+b)^2$").shift(UP)
t2 = Tex(r"$a^2 + 2ab + b^2$")
self.add(t1)
self.wait(0.5)
self.play(TransformFromCopy(t1, t2))

运行效果:
变换效果-保留原文字.gif

再比如:(不保留原文字)

t1 = Tex(r"$(a+b)^2$").shift(UP)
t2 = Tex(r"$a^2 + 2ab + b^2$")
self.add(t1)
self.wait(0.5)
self.play(ReplacementTransform(t1, t2))

运行效果:
变换效果-不保留原文字.gif

6. 总结回顾

本篇介绍的是常用的动画,其实 manim中还提供了其他多种效果的动画,
也提供了动画的底层函数,可以用来封装自己定制的动画效果。

本篇介绍的常用的动画效果有:

  1. 创建元素时的动画效果
  2. 销毁元素时的动画效果
  3. 移动元素的动画效果
  4. 旋转元素的动画效果
  5. 不同元素之间变换的的动画效果

本文关联的微信视频号短视频:
manim-常用动画效果-视频号.png

标签:动画,play,效果,--,shift,self,color,manim,动画教程
From: https://www.cnblogs.com/wang_yb/p/17309865.html

相关文章

  • R语言:关于NA, <NA> , NaN的区别
    NA表示缺失项是数值型;表示缺失项是因子型;NaN表示缺失项为非数值型;来源:https://statisticsglobe.com/r-na/......
  • AliCrackme_1
    首先分析程序入口的Activity源码关键部分已经圈出来了,代码的逻辑如下调用getTableFromPic()和getPwdFromPic()方法获得table密码表和pw密码明文,将输入的内容使用bytesToAliSmsCode()方法进行编码判断编码后的内容是否等于pw密码因为password和pw变量的......
  • BS结构的系统通信原理(没有涉及到java小程序)
    B/S结构的系统通信原理(没有涉及到java小程序)WEB系统的访问过程第一步:打开浏览器第二步:找到地址栏第三步:输入一个合法的网址第四步:回车第五步:在浏览器上会展示相应的结果关于域名:http://www.baidu.com/(网址)www.baidu.com是一个域名在浏览器地址上输入域名,回车之后......
  • WSL启动报错WslRegisterDistribution failed with error: 0x8007019e
    Installing,thismaytakeafewminutes...WslRegisterDistributionfailedwitherror:0x8007019eTheWindowsSubsystemforLinuxoptionalcomponentisnotenabled.Pleaseenableitandtryagain.Seehttps://aka.ms/wslinstallfordetails.Pressanykeyto......
  • 决策树可视化Graphviz中文乱码
    输出svg时中文显示正常!!!fromsiximportStringIO#可视化dot_data=StringIO()tree.export_graphviz(clf,out_file=dot_data,feature_names=feature_name,class_names=target_name,filled=True,rounded=True,special_characte......
  • Sublime Text 修改文件编码和换行符
    1、SublimeText修改文件编码和换行符1.1设置项优化{"ignored_packages":["Vintage",],//设置主题"theme":"auto","color_scheme":"Mariana.sublime-color-scheme",//设置字体大小......
  • win7热点(wifi)共享配置
    1、首先用一台电脑连接有线,能够上网;2、点开电脑右下角的电脑图标显示打开网络和共享中心(如下图)3、打开网络和共享中心之后:显示如下图。4、选择设置新的连接或网络,点开之后如下图所示:5、选择最后一个创建一个临时网络,单击下一步;下一步;6、之后填入用户名,下一步7、选择共享,......
  • LeetCode #485 最大连续 1 的个数
    解题思路基础题,最后加一个特殊情况处理就好,时间复杂度O(n)代码  classSolution{public:intfindMaxConsecutiveOnes(vector<int>&nums){intcount=0;intMaxcount=0;for(inti=0;i<nums.size();i++){if(nums[i]==1){......
  • SQL Server 配置管理器打不开提示错误
    ---------------------------SQLServer配置管理器---------------------------无法连接到WMI提供程序。您没有权限或者该服务器无法访问。请注意,您只能使用SQLServer配置管理器来管理SQLServer2005和更高版本的服务器。无效类[0x80041010]解决“无法连接到WMI提供......
  • 振动
    谐振子在物理学的不同领域甚至别的学科中,出现的方程式往往是完全一样的,这导致不同领域中会有相似的现象。因此对一个领域的研究可以扩展我们对另一个领域的认识,我们从一开始就应到认识到这种扩展的可能性,才能坚定地为此付出时间和精力。学习谐振子本质上是在学习“常系数线性微......