如何在 manim 中以交错开始时间播放动画

nul*_*ser 6 python manim

我正在学习 manim,我正在尝试播放一堆开始和结束时间重叠的动画。

假设 T 是每次淡入播放所需的时间长度。我想要的是他们以交错的方式开始和结束,例如第一个动画从 0 开始,第二个从 T/10 开始,第三个从 2T/10 开始,...,第 10 个从 9T/10 开始,然后第一个以 T 结束,第二个以 11T/10 结束,第三个以 12T/10 结束,...,第 10 个以 19T/10 结束。

我知道如何像这样一个接一个或并行地播放动画,但是这些动画都没有交错开始时间:

from manim import *


class FadeInAllAtOnce(Scene):
    def construct(self):
        circles = [Circle(r / 10) for r in range(10)]
        anims = [FadeIn(c) for c in circles]
        self.play(*anims)


class FadeInOneAfterAnother(Scene):
    def construct(self):
        circles = [Circle(r / 10) for r in range(10)]
        anims = [FadeIn(c) for c in circles]
        for anim in anims:
            self.play(anim)

Run Code Online (Sandbox Code Playgroud)

nul*_*ser 3

我找到了一个可能足够好的解决方案LaggedStart (小文档),它将依次播放一堆动画,并具有由 lag_ratio (默认 = .05)参数给出的可配置延迟。

from manim import *


class FadeInStaggeredMap(Scene):
    def construct(self):
        circles = [Circle(r / 10) for r in range(10)]
        anims = [FadeIn(c) for c in circles]
        self.play(LaggedStart(*anims))

Run Code Online (Sandbox Code Playgroud)