Manim Community v0.17.2中如何同步实现旋转与中心放大动画?
问题原因
你当前的代码存在两个关键问题:
- 初始状态错误:你创建的
txt_1初始已是font_size=76(缩放比例为1)且旋转了PI/2,但你预期的初始状态是「垂直且缩放比例为0」,实际初始状态和预期不符。 - 动画冲突:
GrowFromCenter本质是将Mobject从缩放0过渡到当前的缩放比例,它会在动画过程中持续修改Mobject的缩放属性,和Rotate动画同时作用时,会覆盖旋转的状态更新,导致只有放大效果生效。
解决方案
调整初始状态为「垂直(旋转PI/2)+ 缩放0」,然后同时播放旋转回水平和放大到目标大小的动画。用scale(0)设置初始不可见,再通过Scale动画(或animate.scale(1))实现放大,和Rotate动画同步执行即可。
修正后的代码
from manim import * class TextRotateGrowScene(Scene): def construct(self): # 设置初始状态:垂直旋转、缩放为0(不可见) txt_1 = Text("Hello World!", font_size=76).rotate(PI/2).scale(0) self.add(txt_1) # 同步播放旋转和放大动画 self.play( Rotate(txt_1, -PI/2), # 旋转回水平状态 txt_1.animate.scale(1), # 放大到font_size设定的大小 run_time=2 # 可根据需求调整动画时长 )
补充说明
- 如果你更倾向于使用
GrowFromCenter的逻辑,也可以自定义组合动画,但直接用Scale+Rotate的方式更直观且避免冲突。 - 之前使用
animate.rotate出现逐个点移动的问题,大概率是误操作了Text的子元素,上述代码对整个Text对象执行动画,会保证整体旋转效果。
内容的提问来源于stack exchange,提问作者Andrés Romero
相关产品推荐
相关产品推荐

