manim官方文档 _ 快速入门板块 _ 汉化 | 辅助快速理解manim功能

news2024/11/22 23:25:34

注 : 在此之前,请按照安装中的步骤安装 Manim 并确保其正常运行。有关在 JupyterlabJupyter notebook 中使用 Manim 的信息,请参阅 IPython magic command的文档。

文章目录

      • 概述
      • 实例一 :绘制一个圆形
        • 1、启动新项目 let 's go
        • 2、绘制一个圆
        • 3、代码说明/解释
      • 实例二 :变形一个方形变成一个圆形
      • 图形定位
      • 使用 `.animate` 语法制作动画方法

概述

本快速入门指南将引导您使用 Manim 创建一个示例项目:一个用于精确编程动画的动画引擎。

首先,您将使用命令行界面创建一个场景(Scene),Manim 通过该类生成视频。在该场景中,您将制作一个圆形的动画。接下来,您将添加另一个场景,显示一个正方形转变为圆形。这将是对 Manim 动画能力的介绍。然后,您将定位多个数学对象(Mobjects)。最后,您还将学习.animate语法,这是一种强大的功能,可以将您用来修改 Mobjects 的方法动画化。

实例一 :绘制一个圆形

1、启动新项目 let 's go

首先创建一个新文件夹。在本指南中,将文件夹命名为项目。该文件夹是项目的根文件夹。它包含 Manim 运行所需的所有文件,以及项目产生的任何输出。

2、绘制一个圆
  1. 打开你的编辑器,将以下代码段复制到窗口中:
from manim import *
class CreateCircle(Scene):
    def construct(self):
        circle = Circle()  # 创造一个圆
        circle.set_fill(PINK, opacity=0.5)  # Pink 为填充颜色 , opacity不透明度
        self.play(Create(circle))  # show the circle on screen 展示创造圆的过程
  1. 将代码片段保存到项目文件夹中,名称为 scene.py。
project/
└─scene.py
  1. 打开命令行,导航至项目文件夹,然后执行以下命令:
manim -pql scene.py CreateCircle

Manim 将输出渲染信息,然后创建一个 MP4 文件。您的默认电影播放器将播放 MP4 文件,并显示以下动画.

在这里插入图片描述

如果您看到一个粉红色圆圈正在绘制的动画,那么恭喜您!您刚刚从零开始编写了第一个 Manim 场景。
如果您收到的是错误信息,看不到视频,或者视频输出与前面的动画不一样,很可能是 Manim 安装不正确。请参阅我们的常见问题部分FAQ section,以获得有关最常见问题的帮助。

3、代码说明/解释

让我们逐行查看刚才执行的脚本,看看 Manim 是如何画出这个圆的。
第一行导入了库中的所有内容:

from manim import *

这是使用 Manim 的推荐方式,因为一个脚本通常会使用 Manim 命名空间中的多个名称。在你的脚本中,你导入并使用了 Scene、Circle、PINKCreate
现在让我们看看接下来的两行:

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

大多数情况下,动画脚本的代码完全包含在场景类的 construct() 方法中。在 construct() 方法中,您可以创建对象、将其显示在屏幕上并制作动画。
接下来的两行创建了一个圆,并设置了它的颜色和不透明度:

circle = Circle()  # 创建一个圆
circle.set_fill(PINK, opacity=0.5)  #设立颜色与不透明度

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

self.play(Create(circle))  # 在屏幕上显示创建圆的过程

提示
所有动画必须位于从 Scene 派生的类的 construct() 方法中。其他代码:如辅助函数或数学函数,可以位于类之外。

实例二 :变形一个方形变成一个圆形

圆圈动画制作完成后,让我们继续制作更复杂的动画。
1.打开 scene.py,在 CreateCircle 类下面添加以下代码段:

from manim import *
class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()  # create a circle
        circle.set_fill(PINK, opacity=0.5)  # set color and transparency
        square = Square()  # create a square
        square.rotate(PI / 4)  #  旋转一定的幅度
        self.play(Create(square) , run_time = 4 )  # animate the creation of the square
        self.play(Transform(square, circle) , run_time = 4)  #把方形变成圆形
        self.play(FadeOut(square))  # fade out animation
  1. 在命令行中运行以下命令,渲染 SquareToCircle
manim -pql scene.py SquareToCircle

这个示例展示了 Manim 的主要功能之一:只需几行代码就能实现复杂的数学密集型动画(例如在两个几何图形之间进行干净利落的插值)。
在这里插入图片描述

图形定位

接下来,我们来学习一些定位 Mobjects 的基本技巧。

  1. 打开 scene.py,在 SquareToCircle 方法下面添加以下代码段:
class SquareAndCircle(Scene):
    def construct(self):
        circle = Circle()  # create a circle
        circle.set_fill(PINK, opacity=0.5)  # set the color and transparency

        square = Square()  # create a square
        square.set_fill(BLUE, opacity=0.5)  # set the color and transparency

        square.next_to(circle, RIGHT, buff=0.5)  #设定文职
        self.play(Create(circle), Create(square))  # show the shapes on screen
  1. 在命令行中运行以下命令,渲染 SquareAndCircle:
manim -pql scene.py SquareAndCircle

在这里插入图片描述

next_to 是一种 Mobject 方法,用于定位 Mobject
我们首先通过传递圆作为方法的第一个参数,指定粉色圆圈作为正方形的参考点。第二个参数用于指定 Mobject 相对于参考点的放置方向。在本例中,我们将方向设置为 RIGHT,告诉 Manim 将正方形放置在圆的右侧。最后,buff=0.5 在两个对象之间设置了一个小的距离缓冲区。

right 改为 leftupdown,看看正方形的位置有何变化。使用定位方法,您可以渲染包含多个 Mobjects 的场景,使用坐标设置它们在场景中的位置,或将它们相对定位。

有关 next_to 和其他定位方法的更多信息,请查看我们参考手册中的 Mobject 方法列表。

使用 .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 circle
        square = Square()  # create a square

        self.play(Create(square))  # show the square on screen
        self.play(square.animate.rotate(PI / 4))  # rotate the square
        self.play(Transform(square, circle))  # transform the square into a circle
        self.play(
            square.animate.set_fill(PINK, opacity=0.5)
        )  # color the circle on screen
  1. 在命令行中运行以下命令,渲染 SquareAndCircle:
manim -pql scene.py SquareAndCircle

![[3d3dd54f-b375-4fc3-a1ba-fb937268a79d.gif]]
第一个self.play 创建正方形。
第二个self.play 将正方形旋转 45 度。
第三个动画将正方形转化为圆形,最后一个动画将圆形染成粉红色。
虽然最终结果与 SquareToCircle 相同,但 .animate 显示旋转和 set_fill 是动态应用于 Mobject 的,而不是在创建时已应用了更改。
尝试其他方法,如翻转或移位,看看会发生什么。
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()
  1. 在命令行中运行以下命令,渲染 SquareAndCircle:
manim -pql scene.py SquareAndCircle

这个场景说明了 .animate 的怪异之处。使用 .animate 时,Manim 实际上会获取 Mobject 的起始状态和结束状态,并对两者进行插值。在 AnimatedSquareToCircle 类中,当正方形旋转时,您可以观察到这一点:正方形的四角在移动到第一个正方形转化为第二个正方形所需的位置时,似乎略有收缩。
在 DifferentRotations 中,.animate 对旋转的解释与旋转方法之间的差异要明显得多。旋转 180 度的 Mobject 的起始和结束状态是相同的,因此 .animate 会尝试插值两个相同的对象,结果是左侧的正方形。如果您发现自己在使用 .animate 时产生了类似的不必要行为,请考虑使用传统的动画方法,如右边的正方形,它使用了旋转。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美股动荡,散户逆势抄底!科技股成香饽饽

最近,美股市场可不太平,各大指数纷纷下跌。面对这样的行情,不少投资者都有些慌了。但你知道吗?有一群人却在此时看到了机会,他们就是散户投资者! 逆势操作,散户“抄底” 8月份,美股…

SpringBoot整合定时任务@Scheduled

SpringBoot自带的定时任务非常简单操作,其实就是一个Scheduled注解。 第一步:创建类,定义执行定时任务的方法 package com.oracle.springboottimer.timer;import org.springframework.scheduling.annotation.Scheduled; import org.springfr…

STM32—WDG看门狗

1.WDG简介 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性 看门狗本质是一个定时…

使用 Python和 SQLite 打造一个简单的数据库浏览器

在日常开发中,我们常常需要快速查看和操作SQLite数据库中的数据。虽然有许多现成的工具可以完成这一任务,但有时你可能想要一个更为简单、可定制的解决方案。在这篇博客中,我将带你一步步构建一个简单的SQLite数据库浏览器,它可以…

怎么将文档翻译英文?多语言翻译的4个方法

当你准备将文档翻译成英文并发送给海外客户时,你可能会同时感到兴奋和焦虑。 兴奋的原因是,你的业务即将扩展到全球市场;焦虑的原因是,如果翻译出现错误,可能会造成尴尬的局面。 不过,不必过于担心。今天…

高速信号的眼图、加重、均衡

目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响,从而估计系统优劣程度,因而眼图分析是高速互连系统信号完整…

电信天翼网关TEWA-1000E/G等系列光猫新版固件破解超级密码

实际操作机型TEWA-1006G,参考教程电信天翼网关TEWA-1000E/G等系列光猫破解超级密码。 之前,在同一个光猫上使用上述教程成功拿到了超级密码,但是一年之后电信远程更新了固件,该破解方法部分失效,于是我在研究之后找到了…

2024开源资产管理系统推荐 8款免费开源IT资产管理系统/软件

开源资产管理系统 开源资产管理系统是帮助企业管理、跟踪和优化其资产的强大工具。这些系统能够自动记录资产的详细信息,如采购日期、使用情况、维护记录等,从而实现资产的全生命周期管理。企业可以通过这些系统优化资产使用效率,减少资产闲…

8月15日笔记

masscan安装使用 首先需要有c编译器环境。查看是否有c编译器环境: gcc -v如果系统中已经安装了 GCC,这个命令将输出 GCC 的版本信息。如果未安装,你会看到类似于 “command not found” 的错误消息。 如果没有下载,使用如下命令…

SAP中如何导出物料的评估类清单?

接到内部产品控制同事请求,希望从系统中帮忙导出物料的评估类清单。查询到评估类对应的数据表是T025。通过SE16可以查询和输出。 输入查询条件后,在出现的清单中输出到本地文件,存储成excel文件后发给用户,任务完成。 这样就可以导…

掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

【文末送书】【文末送书】今天推荐一本网络安全领域优质书籍《内网渗透实战攻略》 文章目录 * 前言如何阅读本书目录文末送书 前言 ![在这里插入图片描述](https://img- blog.csdnimg.cn/direct/fd88c968fc5349aea8945ee5345d6881.jpeg) 当今,网络系统面临着越…

【MMdetection改进】换遍MMDET主干网络之SwinTransformer-Tiny(基于MMdetection)

OpenMMLab 2.0 体系中 MMYOLO、MMDetection、MMClassification、MMSelfsup 中的模型注册表都继承自 MMEngine 中的根注册表,允许这些 OpenMMLab 开源库直接使用彼此已经实现的模块。 因此用户可以在MMYOLO 中使用来自 MMDetection、MMClassification、MMSelfsup 的主…

AI作画提示词(Prompts)工程:技巧与最佳实践

GPT-4o (OpenAI) AI 作画提示词(prompts)工程可以极大地提高生成图像的质量和细节表现。以下是一些技巧和最佳实践,以帮助你优化提示词的使用: 一、明确的描述 1. 具体化:明确描述你想要的元素和风格。例如&#xff0…

机器视觉28

1.CPK(制程能力指数)用于衡量生产过程的稳定性和能力,评估产品规格的一致性。 2.CPK的值是根据具体的产品规格、生产过程数据以及统计分析得出。 3.CPK的值越高,表示制程能力越强,产品规格的一致性越好。 CPK与不良…

【网络】【Linux】Linux内核中连接的组织形式与全连接队列

Linux内核中连接的组织形式与全连接队列 文章目录 1.前言2.Linux内核中连接的组织形式2.1套接字和文件描述符2.2创建连接 & 获取连接 3.全连接队列3.1为什么有全连接队列?3.2全连接队列的长度 1.前言 TCP是面向连接的,TCP的各种可靠性机制实际都不…

c++中的引用()及做返回值问题

传值返回: int Count1() {int n 0;n;return n; } int main() {int& r1 Count1();return 0; } 总结:返回局部变量的引用是不安全的。 static int cab; 只有第一次定义c时才会执行 要想给变c的值应 static int c1; cab; 传值、传引用效率比较 #…

【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法

一、预准备:过滤器设置 打开fiddler后,清空内容,然后播放视频。 找到与B站视频资源相关的回应,而后在“原始(raw)”标签中查看它的host信息。 发现B站视频资源的服务器DNS地址为【*bilivideo.cn】、【*bi…

超越GPT-4 ,金融分析新突破:FinTral多模态大模型

人工智能咨询培训老师叶梓 转载标明出处 在金融领域,对大量非结构化数据的处理和分析一直是行业面临的重要挑战。为了解决这一问题,由不列颠哥伦比亚大学和Invertible AI的研究团队共同提出了一套名为FinTral的先进多模态大模型(LLMs&#xf…

云计算实训26——部署LVS负载均衡项目(上)

LVS LVS是linux virtural server的简称——免费、开源、四层负载均衡 工作原理: 通过linux达到负载均衡好和linux操作系统实现高性能高可用的linux服务集群,具有良好的可靠性、可扩展性、可操作性、可扩展性、从而实现以低廉的成本实现最优的性能。LV…