manim 如何实现多线程动画?

1、实现同时开始,但持续时间不同的动画

以下方式是不可行的:

self.play(t1.animate.shift(2*UP).set_run_time(1), t2.animate.shift(2*DOWN).set_run_time(2))  # 持续时间为1s
self.play(AnimationGroup(t1.animate.shift(2*UP).set_run_time(1), t2.animate.shift(2*DOWN).set_run_time(2)))  # 持续时间为1s
self.play(ApplyMethod(t1.shift, 2*UP, run_time=1),t2.animate.shift(2*DOWN).set_run_time(2))  # 持续时间为1s。持续时间为ApplyMethod中的run_time,这种方法可以对较长时间的动画使用ApplyMethod

以下方法可行:

self.play(ApplyMethod(t1.shift, 2*UP, run_time=1), ApplyMethod(t2.shift, 2*DOWN, run_time=2))

发现set_run_time()方法经常失效,可以在animate中添加时间:

self.play(t1.animate(run_time=1).shift(2*UP), Transform(t2,t1,run_time=2))

 

2、实现不同时开始的动画

self.play(
            AnimationGroup(
                t1.animate(run_time=2).shift(2*UP),
                t2.animate(run_time=2).shift(2*DOWN),
                lag_ratio=0.5
            )
        )

持续时间为3s,如果将第一个动画的持续时间记作run_time1,第二个动画在第一个动画开始后的run_time1*lag_ratio后开始播放

 

posted @ 2022-06-28 22:33  树叶本子  阅读(428)  评论(0)    收藏  举报