动画

完全限定名: manim.animation.animation.Animation

class Animation(mobject=None, *args, use_override=True, **kwargs)[source]

基类: object

一个动画。

动画具有固定的时间跨度。

参数:
  • mobject – 要进行动画处理的 Mobject。并非所有类型的动画都必需此参数。

  • lag_ratio

    定义动画应用于子对象(submobjects)的延迟。此延迟与动画的持续时间相关。

    这不影响动画的总运行时长。相反,单个动画的运行时长会被调整,以使整个动画具有定义的运行时长。

  • run_time – 动画的持续时间(秒)。

  • rate_func

    定义动画进度基于相对运行时长的函数(参见 rate_functions)。

    例如,rate_func(0.5) 表示动画运行时长过半时已完成的动画比例。

返回类型:

自身

reverse_rate_function

反转动画的速率函数。设置 reverse_rate_functionremoverintroducer 没有影响。如果引入动画(introducer-animation)需要变为移除动画(remover one),反之亦然,则需要明确设置这些参数。

name

动画的名称。在渲染动画时会显示此名称。默认为 <类名>(<Mobject 名>)。

remover

此动画结束后,给定的 mobject 是否应该从场景中移除。

suspend_mobject_updating

在动画期间是否应暂停 mobject 的更新器(updaters)。

注意

在此类的当前实现中,指定的速率函数在 Animation.interpolate_mobject() 调用中应用,作为 Animation.interpolate_submobject() 调用的一部分。对于通过重写 interpolate_mobject() 实现的 Animation 子类,速率函数必须手动应用(例如,通过传递 self.rate_func(alpha) 而不是仅仅 alpha)。

示例

示例: LagRatios

from manim import *

class LagRatios(Scene):
    def construct(self):
        ratios = [0, 0.1, 0.5, 1, 2]  # demonstrated lag_ratios

        # Create dot groups
        group = VGroup(*[Dot() for _ in range(4)]).arrange_submobjects()
        groups = VGroup(*[group.copy() for _ in ratios]).arrange_submobjects(buff=1)
        self.add(groups)

        # Label groups
        self.add(Text("lag_ratio = ", font_size=36).next_to(groups, UP, buff=1.5))
        for group, ratio in zip(groups, ratios):
            self.add(Text(str(ratio), font_size=36).next_to(group, UP))

        #Animate groups with different lag_ratios
        self.play(AnimationGroup(*[
            group.animate(lag_ratio=ratio, run_time=1.5).shift(DOWN * 2)
            for group, ratio in zip(groups, ratios)
        ]))

        # lag_ratio also works recursively on nested submobjects:
        self.play(groups.animate(run_time=1, lag_ratio=0.1).shift(UP * 2))
class LagRatios(Scene):
    def construct(self):
        ratios = [0, 0.1, 0.5, 1, 2]  # demonstrated lag_ratios

        # Create dot groups
        group = VGroup(*[Dot() for _ in range(4)]).arrange_submobjects()
        groups = VGroup(*[group.copy() for _ in ratios]).arrange_submobjects(buff=1)
        self.add(groups)

        # Label groups
        self.add(Text("lag_ratio = ", font_size=36).next_to(groups, UP, buff=1.5))
        for group, ratio in zip(groups, ratios):
            self.add(Text(str(ratio), font_size=36).next_to(group, UP))

        #Animate groups with different lag_ratios
        self.play(AnimationGroup(*[
            group.animate(lag_ratio=ratio, run_time=1.5).shift(DOWN * 2)
            for group, ratio in zip(groups, ratios)
        ]))

        # lag_ratio also works recursively on nested submobjects:
        self.play(groups.animate(run_time=1, lag_ratio=0.1).shift(UP * 2))

方法

开始

开始动画。

从场景中清理

动画完成后清理 Scene

copy

创建动画的副本。

创建起始 Mobject 对象

finish

完成动画。

get_all_families_zipped

get_all_mobjects

获取动画中涉及的所有 mobject。

get_all_mobjects_to_update

获取动画期间要更新的所有 mobject。

get_rate_func

获取动画的速率函数。

get_run_time

获取动画的运行时长。

get_sub_alpha

获取任何子对象(submobjects)子动画的动画进度。

interpolate

设置动画进度。

interpolate_mobject

根据 alpha 值插值 Animation 的 mobject。

interpolate_submobject

is_introducer

测试动画是否为引入动画(introducer)。

is_remover

测试动画是否为移除动画(remover)。

set_default

设置关键字参数的默认值。

set_name

设置动画的名称。

set_rate_func

设置动画的速率函数。

set_run_time

设置动画的运行时长。

update_mobjects

更新诸如 starting_mobject 和 (对于 Transforms) target_mobject 等内容。

属性

run_time

_setup_scene(scene)[source]

在开始动画前设置 Scene

如果动画是引入动画(introducer),这包括 add() 动画的 Mobject

参数:

scene (场景) – 动画应从中清理的场景。

返回类型:

begin()[source]

开始动画。

此方法在动画播放时立即调用。应尽可能多的初始化,特别是任何 mobject 复制,都应在此方法中进行。

返回类型:

clean_up_from_scene(scene)[source]

动画完成后清理 Scene

如果动画是移除动画(remover),这包括 remove() 动画的 Mobject

参数:

scene (场景) – 动画应从中清理的场景。

返回类型:

copy()[source]

创建动画的副本。

返回:

self 的副本

返回类型:

动画

finish()[source]

完成动画。

此方法在动画结束时调用。

返回类型:

get_all_mobjects()[source]

获取动画中涉及的所有 mobject。

顺序必须与 interpolate_submobject 的参数顺序匹配

返回:

mobject 序列。

返回类型:

Sequence[Mobject]

get_all_mobjects_to_update()[source]

获取动画期间要更新的所有 mobject。

返回:

动画期间要更新的 mobject 列表。

返回类型:

List[Mobject]

get_rate_func()[source]

获取动画的速率函数。

返回:

动画的速率函数。

返回类型:

Callable[[float], float]

get_run_time()[source]

获取动画的运行时长。

返回:

动画持续的时间(秒)。

返回类型:

浮点数

get_sub_alpha(alpha, index, num_submobjects)[source]

获取任何子对象(submobjects)子动画的动画进度。

参数:
  • alpha (float) – 整体动画进度

  • index (int) – 子动画的索引。

  • num_submobjects (int) – 子动画的总数。

返回:

子动画的进度。

返回类型:

浮点数

interpolate(alpha)[source]

设置动画进度。

此方法在动画期间的每一帧都会调用。

参数:

alpha (float) – 设置动画的相对时间,0表示开始,1表示结束。

返回类型:

interpolate_mobject(alpha)[source]

根据 alpha 值插值 Animation 的 mobject。

参数:

alpha (float) – 一个介于0到1之间的浮点数,表示动画完成的比例。例如,alpha值为0、0.5和1分别对应动画完成0%、50%和100%。

返回类型:

is_introducer()[source]

测试动画是否为引入动画(introducer)。

返回:

如果动画是引入动画(introducer),则为 True,否则为 False

返回类型:

bool

is_remover()[source]

测试动画是否为移除动画(remover)。

返回:

如果动画是移除动画(remover),则为 True,否则为 False

返回类型:

bool

classmethod set_default(**kwargs)[source]

设置关键字参数的默认值。

如果此方法在没有额外关键字参数的情况下调用,则会恢复此类的初始化方法的原始默认值。

参数:

kwargs – 传递任何关键字参数将更新此类的初始化函数的关键字参数的默认值。

返回类型:

示例

示例: ChangeDefaultAnimation

from manim import *

class ChangeDefaultAnimation(Scene):
    def construct(self):
        Rotate.set_default(run_time=2, rate_func=rate_functions.linear)
        Indicate.set_default(color=None)

        S = Square(color=BLUE, fill_color=BLUE, fill_opacity=0.25)
        self.add(S)
        self.play(Rotate(S, PI))
        self.play(Indicate(S))

        Rotate.set_default()
        Indicate.set_default()
class ChangeDefaultAnimation(Scene):
    def construct(self):
        Rotate.set_default(run_time=2, rate_func=rate_functions.linear)
        Indicate.set_default(color=None)

        S = Square(color=BLUE, fill_color=BLUE, fill_opacity=0.25)
        self.add(S)
        self.play(Rotate(S, PI))
        self.play(Indicate(S))

        Rotate.set_default()
        Indicate.set_default()

set_name(name)[source]

设置动画的名称。

参数:

name (str) – 动画的新名称。

返回:

self

返回类型:

动画

set_rate_func(rate_func)[source]

设置动画的速率函数。

参数:

rate_func (Callable[[float], float]) – 定义动画进度基于相对运行时长的新函数(参见 rate_functions)。

返回:

self

返回类型:

动画

set_run_time(run_time)[source]

设置动画的运行时长。

参数:
  • run_time (float) – 动画应持续的新时间(秒)。

  • 注意:: (..) – 动画运行时不应更改其 run_time。

返回:

self

返回类型:

动画

update_mobjects(dt)[source]

更新诸如 starting_mobject 和 (对于 Transforms) target_mobject 等内容。请注意,由于通常(总是?)在动画期间会暂停 self.mobject 的更新,因此这不会对 self.mobject 产生任何影响。

参数:

dt (float)

返回类型: