ManimCE教程(1)快速入门

概述

Manim 是一个用于精确编程动画的动画引擎。

开始一个新项目

首先创建一个新文件夹,命名为:project,此文件夹是项目的根文件夹,它包含 Manim 运行所需的所有文件,以及项目产生的所有输出。

设置圆的动画

1、打开文本编辑器,复制以下代码:

from manim import *class CreateCircle(Scene):def construct(self):circle = Circle()  # create a circlecircle.set_fill(PINK, opacity=0.5)  # set the color and transparencyself.play(Create(circle))  # show the circle on screen

2、将代码片段保存到项目文件夹中,名称为:scene.py

project/
└─scene.py

3、打开命令行,定位到项目文件夹,执行以下命令:

manim -pql scene.py CreateCircle

Manim 将输出渲染信息,并创建一个 MP4 文件。您的默认播放器将播放 MP4 文件,并显示以下动画。
在这里插入图片描述

代码解释

第一行导入库的所有内容:

from manim import *

接下来的两行为编写动画脚本的类 Scene 和方法 construct( ),在 construct( ) 中可以创建对象,在屏幕显示它们,并为它们设置动画。

class CreateCircle(Scene):def construct(self):...

接下来的两行创建一个圆并设置其颜色和不透明度:

circle = Circle()  # create a circle
circle.set_fill(PINK, opacity=0.5)  # set the color and transparency

最后一行使用动画 Create 在屏幕上显示圆:

self.play(Create(circle))  # show the circle on screen

将正方形转换为圆形

1、打开scene.py ,并在类 CreateCircle下方添加以下代码片段:

class SquareToCircle(Scene):def construct(self):circle = Circle()  # create a circlecircle.set_fill(PINK, opacity=0.5)  # set color and transparencysquare = Square()  # create a squaresquare.rotate(PI / 4)  # rotate a certain amountself.play(Create(square))  # animate the creation of the squareself.play(Transform(square, circle))  # interpolate the square into the circleself.play(FadeOut(square))  # fade out animation

2、在命令行中运行以下命令渲染 SquareToCircle

manim -pql scene.py SquareToCircle

将呈现以下动画:
在这里插入图片描述

定位

1、打开 scene.py,并在类 SquareToCircle 下方添加以下代码片段:

class SquareAndCircle(Scene):def construct(self):circle = Circle()  # create a circlecircle.set_fill(PINK, opacity=0.5)  # set the color and transparencysquare = Square()  # create a squaresquare.set_fill(BLUE, opacity=0.5)  # set the color and transparencysquare.next_to(circle, RIGHT, buff=0.5)  # set the positionself.play(Create(circle), Create(square))  # show the shapes on screen

2、在命令行中运行以下命令渲染 SquareAndCircle

manim -pql scene.py SquareAndCircle

将呈现以下动画:
在这里插入图片描述

next_to 是一种定位的方法,该方法第一个参数指定粉红色圆为正方形的参考点,第二个参数指定相对于参考点的放置方向。在本例中,我们将方向设置为 RIGHT,即将正方形定位在圆的右侧。 最后,在两个对象之间应用一个小距离缓冲区 buff=0.5

使用语法 .animate 对进行动画处理

.animate 是一种 Mobject 方法,用于为对 Mobject 所做的更改设置动画。当你在任何更改 Mobject 的方法调用前加上 .animate 时,该方法就会变成一个可以使用 self.play 播放的动画。让我们回到 SquareToCircle,看看在创建 Mobject 时使用方法与使用 .animate 为这些方法调用设置动画之间的区别。

1、打开 scene.py,并在类 SquareAndCircle下方添加以下代码片段:

class AnimatedSquareToCircle(Scene):def construct(self):circle = Circle()  # create a circlesquare = Square()  # create a squareself.play(Create(square))  # show the square on screenself.play(square.animate.rotate(PI / 4))  # rotate the squareself.play(ReplacementTransform(square, circle))  # transform the square into a circleself.play(circle.animate.set_fill(PINK, opacity=0.5))  # color the circle on screen

2、在命令行中运行以下命令渲染 AnimatedSquareToCircle

manim -pql scene.py AnimatedSquareToCircle

将呈现以下动画:
在这里插入图片描述

第一个 self.play 创建了正方形,第二个 self.play 将其旋转45度,第三个 self.play 将正方形转换为圆形,最后一个 self.play 将圆形填充粉红色。虽然最终结果与 SquareToCircle 相同,但 .animate 显示了动态应用于 Mojectrotateset_fill,而不是使用已应用的更改来创建它们。

3、打开 scene.py ,并在类 AnimatedSquareToCircle 下面添加以下代码片段:

class DifferentRotations(Scene):def construct(self):left_square = Square(color=BLUE, fill_opacity=0.7).shift(2 * LEFT)right_square = Square(color=GREEN, fill_opacity=0.7).shift(2 * RIGHT)self.play(left_square.animate.rotate(PI), Rotate(right_square, angle=PI), run_time=2)self.wait()

4、在命令行中运行以下命令渲染 DifferentRotations

manim -pql scene.py DifferentRotations

将呈现以下动画:
在这里插入图片描述
这个场景展示了 .animate 的不同,当使用 .animate 时,Manim 实际上会获取 Moject 的开始与结束状态,并对两者进行插值。在类 AnimatedSquareToCircle 中,当正方形旋转时,您可以观察到这一点:当正方形的角移动到第一个正方形变换为第二个正方形所需的位置时,它们看起来会稍微收缩。

DifferentRotations 中,.animate 对旋转的解释与方法 Rotate 之间的差异要明显得多。旋转360度的 Moject 的开始和结束状态是相同的,因此 .animate 尝试对两个相同的对象进行插值,结果是左正方形。如果您发现自己对 .animate 的使用导致了类似的不需要的行为,请考虑使用传统的动画方法,例如使用 Rotate

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

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

相关文章

文心一言4.0API接入指南

概述 文心一言是百度打造出来的人工智能大语言模型,具备跨模态、跨语言的深度语义理解与生成能力,文心一言有五大能力,文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成,其在搜索问答、内容创作生成、智能办公等众多…

Python入门:常用模块—time datetime模块

在python中,与时间处理有关的常用模块有:time,datetime,calendar(很少用) 一、在Python中,通常有这几种方式来表示时间: 时间戳格式化的时间字符串元组(struct_time&am…

vscode 突然连接不上服务器了(2024年版本 自动更新从1.85-1.86)

vscode日志 ll192.168.103.5s password:]0;C:\WINDOWS\System32\cmd.exe [17:09:16.886] Got some output, clearing connection timeout [17:09:16.887] Showing password prompt [17:09:19.688] Got password response [17:09:19.688] "install" wrote data to te…

centos7编译安装redis

一、环境 系统:CentOS Linux release 7.9.2009 (Core) redis版本:redis 6.0.6 二、安装及部署 当前最新稳定版本是redis 6.0.6 国内网址:http://www.redis.cn redis下载列表:http://download.redis.io/releases/ 下载 wge…

肿瘤免疫分型

Elements of cancer immunity and the cancer-immune set point - PubMed (nih.gov) Daniel S Chen , Ira Mellman 人类的抗癌免疫可分为三种主要表型:免疫沙漠表型(棕色)、免疫排除表型(蓝色)和免疫炎症型&#xff0…

一般系统的请求认证授权思路【gateway网关+jwt+redis+请求头httpheader】

gateway:网关,我们都知道网关的作用就是对系统的所有请求,网关都会进行拦截,然后做一些操作(例如:设置每个请求的请求头httpHeader,身份认证等等)此时一般会使用到网关过滤器&#x…

JenkinsGitLab完成自动化构建部署

关于GitLab安装:GitLab安装-CSDN博客 Docker中安装GitLab:Docker下安装GitLab-CSDN博客 安装JenKins Jenkins官网:Jenkins 中文版:Jenkins 安装时候中文页面的war包下不来 在英文页面 记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境 我这里已经装好了 将下…

【工具】Android|Android Studio 长颈鹿版本安装下载使用详解

版本:2022.3.1.22, https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.22/android-studio-2022.3.1.22-windows.exe 前言 笔者曾多次安装并卸载Android Studio,反复被安卓模拟器劝退。现在差不多是第三次安装&#xff0c…

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析

一、案例介绍: A公司共有13个开在不同银行的帐户,分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况,查看银行在哪个月交易量频繁,需要每月汇总各个银行的帐户借方和贷方金额,并将其净收支&am…

2-1 动手学深度学习v2-Softmax回归-笔记

回归 VS 分类 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出输出的区间:自然区间 R \mathbb{R} R损失:跟真实值的区别 分类 通常多个输出(这个输出的个数是等于类别的个数)输出的第 i i i…

vue2 eCharts实现自定义节点图标 graph关系图

先展示最后效果图 在查阅eCharts官网的配置项手册会发现提供了自定义节点图标的方法&#xff1a; 代码如下&#xff0c;可直接复制&#xff1a; &#xff08;注释已标记&#xff09; <div class"container"><div class"title"><span class…

nginx+flask+Gunicorn反代理服务拿不到真实IP的解决

背景 本人在宝塔linux环境&#xff0c;要部署flask的简单后端并且用Ngnix反代理&#xff0c;用Gunicorn框架部署。&#xff08;o(╥﹏╥)o中间磕磕绊绊总算部署上去了&#xff0c;需要了解Gunicorn怎么部署的朋友&#xff0c;评论区留言&#xff0c;我加补一篇介绍&#xff09;…