动画

限定名称: manim.animation.animation.Animation

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

基础:object

一个动画。

动画有一个固定的时间跨度。

Parameters:
  • mobject – 要动画化的mobject。并非所有类型的动画都需要此参数。

  • lag_ratio

    定义了动画应用于子对象的延迟时间。这个延迟是相对于动画的持续时间而言的。

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

  • run_time – 动画的持续时间,单位为秒。

  • rate_func

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

    例如 rate_func(0.5) 是在动画运行时间的一半后完成的动画比例。

Return type:

自我

reverse_rate_function

反转动画的速率函数。设置reverse_rate_functionremoverintroducer没有任何影响。如果要将引入动画转换为移除动画,反之亦然,则需要明确设置这些。

name

动画的名称。这在渲染动画时会显示。 默认为 ()。

remover

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

suspend_mobject_updating

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

注意

在当前这个类的实现中,指定的速率函数在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))

方法

begin

开始动画。

clean_up_from_scene

在完成动画后清理场景

copy

创建动画的副本。

create_starting_mobject

finish

完成动画。

get_all_families_zipped

get_all_mobjects

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

get_all_mobjects_to_update

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

get_rate_func

获取动画的速率函数。

get_run_time

获取动画的运行时间。

get_sub_alpha

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

interpolate

设置动画进度。

interpolate_mobject

根据alpha值对Animation的mobject进行插值。

interpolate_submobject

is_introducer

测试动画是否为介绍者。

is_remover

测试动画是否为移除器。

set_name

设置动画的名称。

set_rate_func

设置动画的速率函数。

set_run_time

设置动画的运行时间。

update_mobjects

更新诸如starting_mobject之类的内容,以及(对于Transforms)target_mobject。

_setup_scene(scene)[source]

在开始动画之前设置场景

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

Parameters:

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

Return type:

begin()[source]

开始动画。

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

Return type:

clean_up_from_scene(scene)[source]

在完成动画后清理场景

这包括如果动画是移除器,则移除动画的Mobject

Parameters:

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

Return type:

copy()[source]

创建动画的副本。

Returns:

self 的副本

Return type:

动画

finish()[source]

完成动画。

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

Return type:

get_all_mobjects()[source]

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

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

Returns:

mobjects的序列。

Return type:

序列[Mobject]

get_all_mobjects_to_update()[source]

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

Returns:

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

Return type:

列表[Mobject]

get_rate_func()[来源]

获取动画的速率函数。

Returns:

动画的速率函数。

Return type:

Callable[[float], float]

get_run_time()[来源]

获取动画的运行时间。

Returns:

动画所需的时间,以秒为单位。

Return type:

浮点数

get_sub_alpha(alpha, index, num_submobjects)[来源]

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

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

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

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

Returns:

子动画的进度。

Return type:

浮点数

interpolate(alpha)[source]

设置动画进度。

此方法在动画期间为每一帧调用。

Parameters:

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

Return type:

interpolate_mobject(alpha)[来源]

根据alpha值对Animation的mobject进行插值。

Parameters:

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

Return type:

is_introducer()[来源]

测试动画是否为介绍者。

Returns:

True 如果动画是引入者,False 否则。

Return type:

布尔

is_remover()[来源]

测试动画是否为移除器。

Returns:

True 如果动画是移除器,False 否则。

Return type:

布尔

set_name(name)[source]

设置动画的名称。

Parameters:

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

Returns:

self

Return type:

动画

set_rate_func(rate_func)[source]

设置动画的速率函数。

Parameters:

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

Returns:

self

Return type:

动画

set_run_time(run_time)[source]

设置动画的运行时间。

Parameters:
  • run_time (float) – 动画应该花费的新时间,单位为秒。

  • 注意: (..) – 动画的run_time在已经运行时不应更改。

Returns:

self

Return type:

动画

update_mobjects(dt)[source]

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

Parameters:

dt (float)

Return type: