You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Manim中组序列动画仅执行一次:如何按预期执行多轮动画?

Group动画仅执行一次的原因及解决办法

问题描述

我尝试同时为不同对象运行动画序列,以下是出现问题的代码片段:

group = VGroup(*tasks)
animations = [
    group.animate.shift(RIGHT),
    group.animate.shift(RIGHT),
    group.animate.shift(RIGHT)
]

self.play(*animations)

实际效果是所有元素仅向右移动一次就结束了,我遗漏了什么?

原因分析

你创建的三个动画本质上是完全相同的属性修改操作——都是让group向右移动一段RIGHT距离。当你用self.play(*animations)同时播放这三个动画时,Manim会将它们合并为一次属性更新,最终只会执行一次shift操作。

解决办法

需求1:让group连续移动三次(有分段感)

如果需要三次移动过程清晰可辨,不要一次性播放所有动画,而是按顺序执行:

# 分多次调用play
self.play(group.animate.shift(RIGHT))
self.play(group.animate.shift(RIGHT))
self.play(group.animate.shift(RIGHT))

# 或者用Succession组合动画
from manim import Succession
self.play(Succession(
    group.animate.shift(RIGHT),
    group.animate.shift(RIGHT),
    group.animate.shift(RIGHT)
))

需求2:让group一次性移动三倍距离

如果不需要分段,直接指定总位移即可:

self.play(group.animate.shift(3*RIGHT))

需求3:让不同对象同时移动(原需求)

如果你原本是想让tasks里的每个对象各自执行动画,而非同一个group重复移动,需要给每个对象单独创建动画:

animations = [
    task.animate.shift(RIGHT) for task in tasks
]
self.play(*animations)

内容的提问来源于stack exchange,提问作者Borislav Stoilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:42:18