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后开始播放
浙公网安备 33010602011771号