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

yizhihongxing

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

原文链接:https://www.cnblogs.com/wang_yb/p/17309865.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【manim动画教程】–常用动画效果 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • python爬虫模拟浏览器的两种方法实例分析

    下面是详细讲解“python爬虫模拟浏览器的两种方法实例分析”的完整攻略: 1. 介绍 在进行数据爬取时,模拟浏览器的行为是不可避免的。这样可以避免被反爬虫策略的限制,并且可以更好地控制爬取的数据信息。 本文将介绍两种使用Python爬虫模拟浏览器的方法,分别是使用Selenium和使用Requests库。 2. 方法一:使用Selenium Seleniu…

    python 2023年5月14日
    00
  • python合并多个excel的详细过程

    下面是针对Python合并多个Excel的详细过程的完整实例教程。 1. 简介 在日常工作中,我们经常需要处理多个Excel表格。如果想要把这些表格汇总到一个Excel中,使用Python来进行自动化处理是一个不错的选择。本文将介绍如何使用Python合并多个Excel的详细过程。 2. 实现过程 2.1 安装依赖包 在使用Python合并多个Excel之前…

    python 2023年5月13日
    00
  • 通过字符串导入 Python 模块的方法详解

    以下是关于“通过字符串导入 Python 模块的方法详解”的完整攻略。 什么是通过字符串导入 Python 模块 在 Python 中,我们通常使用 import 关键字导入一个已经存在的模块。但有时候,我们需要在程序运行时动态地导入一个模块,这时就需要使用通过字符串导入 Python 模块的方法。 通过字符串导入 Python 模块的方法可以让我们在程序运…

    python 2023年6月5日
    00
  • 利用python Pandas实现批量拆分Excel与合并Excel

    下面是关于利用Python Pandas实现批量拆分Excel与合并Excel的完整实例教程。 前置条件 在开始之前,请确保你已经安装了以下工具/库: Python 3 Pandas Pandas是Python中一个用来进行数据分析和处理的库,它提供了DataFrame数据结构以及很多方便使用的数据操作工具,我们将使用它来读取和操作Excel文件。 实现步骤…

    python 2023年5月13日
    00
  • 深入理解python中sort()与sorted()的区别

    深入理解python中sort()与sorted()的区别 在Python中,我们有两个方法可以对列表进行排序,分别是sort()和sorted()。虽然它们的作用是一样的,但它们之间还是有区别的,下面将进行详细讲解。 sort() sort()方法是一个列表对象的方法,调用它可以对列表进行原地排序(即不产生新的对象)。sort()方法有两个可选的参数,re…

    python 2023年5月14日
    00
  • python 列表的查询操作和切片

    针对 Python 中的列表查询操作及切片,以下是详细讲解的完整攻略: 列表查询操作 在 Python 的列表中,可以使用下标或者索引来进行数据的查找及读取。下标的范围是从0开始的,也就是说,第一个元素的下标是0,第二个元素的下标是1,依次类推。 使用下标查询列表元素可以使用[]符号,例如: # 定义一个列表 my_list = [‘apple’, ‘ban…

    python 2023年6月6日
    00
  • Python3多线程版TCP端口扫描器

    Python3 多线程版 TCP 端口扫描器是一款基于 Python3 的网络工具,主要用于快速扫描主机开启的 TCP 端口。以下是该工具的完整攻略: 1. 环境准备 首先需要在本地电脑上安装 Python3 编程环境。进入 Python3 官方网站 https://www.python.org/downloads/,下载并安装最新版本的 Python3。 …

    python 2023年6月6日
    00
  • 用Python做一个哔站小姐姐词云跳舞视频

    下面是用Python做一个哔站小姐姐词云跳舞视频的完整攻略: 准备工作 安装Python,下载地址:https://www.python.org/downloads/ 。 安装必要的库,如jieba、wordcloud、numpy等。 pip install jieba pip install wordcloud pip install numpy 步骤一:…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部