Manim的积木
本文档解释了manim的组成部分,并将为您提供开始制作自己的视频所需的所有工具。
基本上,manim提供了三个不同的概念供您使用,您可以将它们编排在一起以生成数学动画:数学对象(简称mobject)、动画和场景。正如我们将在以下几节中看到的,这三个概念中的每一个都作为一个单独的类在manim中实现:Mobject、Animation和Scene类。
笔记
在阅读本页之前,建议您阅读教程Quickstart和Manim的输出设置。
移动对象,Mobjects
mobject是所有manim动画的基本构建块。从Mobject派生的每个类表示一个可以在屏幕上显示的对象。例如,圆Circle、箭头Arrow和矩形Rectangle等简单形状都是mobject。更复杂的结构,如轴Axes、函数图FunctionGraph或条形图BarChart也是mobject。
如果试图在屏幕上显示Mobject的实例,则只能看到一个空帧。原因是Mobject类是所有其他Mobject的抽象基类,即它没有任何可以在屏幕上显示的预定义视觉形状。它只是一个可以展示的东西的骨架。因此,您很少需要使用Mobject的普通实例;相反,您很可能会创建其派生类的实例。其中一个派生类是VMobject。V代表矢量化Mobject。本质上,vmobject是使用矢量图形vector graphics进行显示的mobject。大多数时候,您将处理vmobjects,尽管我们将继续使用术语“mobject”来指代可以在屏幕上显示的形状类别,因为它更为通用。
笔记
任何可以在屏幕上显示的对象都是mobject,即使它不一定是数学性质的。
提示
要查看从Mobject派生的类的示例,请参阅几何体geometry模块。其中大多数事实上也是从VMobject派生的。
创建和显示移动对象
如Quickstart中所述,通常manim脚本中的所有代码都放在场景类的construct()方法中。要在屏幕上显示mobject,请调用包含场景Scene的add()方法。这是在屏幕上显示未设置动画的移动对象的主要方式。要从屏幕上删除mobject,只需从包含的场景中调用remove()方法。
from manim import *
class CreatingMobjects(Scene):
def construct(self):
circle = Circle()
self.add(circle)
self.wait(1)
self.remove(circle)
self.wait(1)
放置移动对象
让我们定义一个名为Shapes的新场景Scene,并在其中添加add()一些mobject。该脚本生成一个静态图片,其中显示一个圆、一个正方形和一个三角形:
from manim import *
class Shapes(Scene):
def construct(self):
circle = Circle()
square = Square()
triangle = Triangle()
circle.shift(LEFT)
square.shift(UP)
triangle.shift(RIGHT)
self.add(circle, square, triangle)
self.wait(1)
默认情况下,首次创建移动对象时,将其放置在坐标中心或原点。它们还提供了一些默认颜色。此外,形状场景使用shift()方法放置移动对象。正方形从原点向上移动一个单位,而圆和三角形分别左移LEFT和右移RIGHT一个单位。
注意
与其他图形软件不同,manim将坐标中心放置在屏幕的中心。垂直正方向向上,水平正方向向右。另请参阅常数constants模块中定义的常数原点、上UP、下DOWN、左LEFT、右RIGHT和其他。
有许多其他可能的方法可以将mobject放置在屏幕上,例如move_to()、next_to()和align_to()。下一个场景MobjectPlacement使用了这三种方法。
from manim import *
class MobjectPlacement(Scene):
def construct(self):
circle = Circle()
square = Square()
triangle = Triangle()
# place the circle two units left from the origin
circle.move_to(LEFT * 2)
# place the square to the left of the circle
square.next_to(circle, LEFT)
# align the left border of the triangle to the left border of the circle
triangle.align_to(circle, LEFT)
self.add(circle, square, triangle)
self.wait(1)
move_to()方法使用绝对单位(相对于原点测量),而next_to()使用相对单位(从作为第一个参数传递的mobject测量)。align_to()不使用LEFT作为测量单位,而是作为确定用于对齐的边界的方法。移动对象边界的坐标是使用其周围的假想边界框确定的。
提示
manim中的许多方法可以链接在一起。例如,两条线square = Square() square.shift(LEFT)可以替换为
square = Square().shift(LEFT)从技术上讲,这是可能的,因为大多数方法调用返回修改后的mobject。
设置移动对象的样式,Styling mobjects
以下场景更改了移动对象的默认美学。
from manim import *
class MobjectStyling(Scene):
def construct(self):
circle = Circle().shift(LEFT

Manim是一个用于创建数学动画的Python库。它提供了Mobject、Animation和Scene三个核心概念,用于构建数学表达式的动态演示。Mobject是基本的可视化元素,包括各种形状和图表。Animation描述了Mobject随时间变化的过程,而Scene则负责组合这些元素和动画。通过定义自定义动画和操纵Mobject的属性,用户可以创建复杂的数学可视化。此外,坐标和变换功能允许精确控制Mobject的位置和形态变化。
最低0.47元/天 解锁文章
1842

被折叠的 条评论
为什么被折叠?



