改变速度

限定名称: manim.animation.speedmodifier.ChangeSpeed

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

基础类:Animation

修改传递动画的速度。 AnimationGroup 使用不同的 lag_ratio 也可以将多个动画组合成一个。 传递动画的 run_time 被改变以修改速度。

Parameters:
  • anim (动画 | _AnimationBuilder) – 要修改速度的动画。

  • speedinfo (dict[float, float]) – 包含节点(run_time的百分比)及其对应的速度因子。

  • rate_func (Callable[[float], float] | None) – 覆盖传递的动画的rate_func,在改变速度之前应用。

  • affects_speed_updaters (bool)

示例

示例:SpeedModifierExample

from manim import *

class SpeedModifierExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        b = Dot().shift(RIGHT * 4)
        self.add(a, b)
        self.play(
            ChangeSpeed(
                AnimationGroup(
                    a.animate(run_time=1).shift(RIGHT * 8),
                    b.animate(run_time=1).shift(LEFT * 8),
                ),
                speedinfo={0.3: 1, 0.4: 0.1, 0.6: 0.1, 1: 1},
                rate_func=linear,
            )
        )
class SpeedModifierExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        b = Dot().shift(RIGHT * 4)
        self.add(a, b)
        self.play(
            ChangeSpeed(
                AnimationGroup(
                    a.animate(run_time=1).shift(RIGHT * 8),
                    b.animate(run_time=1).shift(LEFT * 8),
                ),
                speedinfo={0.3: 1, 0.4: 0.1, 0.6: 0.1, 1: 1},
                rate_func=linear,
            )
        )

示例:SpeedModifierUpdaterExample

from manim import *

class SpeedModifierUpdaterExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.play(
            ChangeSpeed(
                Wait(2),
                speedinfo={0.4: 1, 0.5: 0.2, 0.8: 0.2, 1: 1},
                affects_speed_updaters=True,
            )
        )
class SpeedModifierUpdaterExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.play(
            ChangeSpeed(
                Wait(2),
                speedinfo={0.4: 1, 0.5: 0.2, 0.8: 0.2, 1: 1},
                affects_speed_updaters=True,
            )
        )

示例:SpeedModifierUpdaterExample2

from manim import *

class SpeedModifierUpdaterExample2(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.wait()
        self.play(
            ChangeSpeed(
                Wait(),
                speedinfo={1: 0},
                affects_speed_updaters=True,
            )
        )
class SpeedModifierUpdaterExample2(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.wait()
        self.play(
            ChangeSpeed(
                Wait(),
                speedinfo={1: 0},
                affects_speed_updaters=True,
            )
        )

方法

add_updater

此静态方法可用于对更新器应用速度变化。

begin

开始动画。

clean_up_from_scene

在完成动画后清理场景

finish

完成动画。

get_scaled_total_time

假设run_time为1时动画所花费的时间。

interpolate

设置动画进度。

setup

update_mobjects

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

属性

dt

is_changing_dt

_setup_scene(scene)[source]

在开始动画之前设置场景

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

Parameters:

场景 – 动画应该从哪个场景中清理。

Return type:

classmethod add_updater(mobject, update_function, index=None, call_updater=False)[source]

此静态方法可用于对更新器应用速度变化。

此更新器将遵循任何正在播放的ChangeSpeed动画的速度和速率函数,前提是affects_speed_updaters=True。默认情况下,通过常规的Mobject.add_updater()方法添加的更新器函数不会响应动画速度的变化。

Parameters:
  • mobject (Mobject) – 更新器应附加到的mobject。

  • update_function (更新器) – 每当渲染新帧时调用的函数。

  • index (int | None) – 函数应插入到mobject的更新器列表中的位置。

  • call_updater (bool) – 如果 True,则在将其附加到mobject时调用更新函数。

begin()[source]

开始动画。

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

Return type:

clean_up_from_scene(scene)[source]

在完成动画后清理场景

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

Parameters:

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

Return type:

finish()[source]

完成动画。

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

Return type:

get_scaled_total_time()[来源]

假设run_time为1时动画所花费的时间。

Return type:

浮点数

interpolate(alpha)[source]

设置动画进度。

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

Parameters:

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

Return type:

update_mobjects(dt)[source]

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

Parameters:

dt (float)

Return type: