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

Manimgl中使用self.add()与self.wait()时如何控制动画播放速度

manimgl中updater+wait模式的动画速度控制方案

你可以通过以下三种方式灵活控制这类动画的速度:

  • 调整updater内部的变化系数
    updater的入参dt是每帧的时间间隔(单位为秒),你可以在变换逻辑里乘以自定义的倍率控制速度。比如原本的匀速旋转updater是:
    lambda mob, dt: mob.rotate(TAU * dt) # 每秒转一圈
    
    要改成0.5倍速(2秒转一圈),直接修改系数即可:
    lambda mob, dt: mob.rotate(TAU * 0.5 * dt)
    
    倍率大于1就是加速,小于1就是减速,实时渲染场景下也可以把这个倍率做成可动态调整的变量,实现交互变速。
  • 调整self.wait()的入参时长
    self.wait()的第一个参数就是总等待时长(单位为秒),比如你要让updater驱动的动画总共播放5秒,直接写self.wait(5)即可。配合updater的系数调整,就能精准控制动画的总进度和播放速度。
  • 全局修改帧率缩放(适合批量调整多个updater速度)
    如果你场景里有多个updater要统一变速,不需要逐个修改系数,可以直接调整场景的时间缩放参数,manimgl中可以通过修改self.dt_scale的值实现全局变速:
    self.dt_scale = 0.5 # 全局所有updater都变成0.5倍速
    self.wait(4) # 实际真实时间过了4秒,动画进度只走了2秒
    

注:manimgl的实时渲染模式下dt取的是真实帧间隔时间,不会因为掉帧出现动画跳变,上述调整方式都是和真实时间对齐的,不需要额外做适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:45:03