高频关键帧卡顿根源是时间点、插值、枢轴三者毫秒级错位,而非数量过多;须停用自动吸附、手动输入精确时间值、统一Bezier插值、固定枢轴参考系、禁用物理模拟并关闭实时阴影。

高频关键帧不是“太多”,而是“没对齐”
高频关键帧卡顿的根源从来不是数量,而是时间点、插值、枢轴三者在毫秒级尺度上错位。比如气缸伸缩动画设了 60fps,但关键帧实际落在 1.998s 和 2.003s,Composer 就会在这两个点之间强行做贝塞尔插值——结果不是平滑,是跳变。
清理高频关键帧的第一步,永远是停用自动吸附:
时间轴右键 → 取消勾选 Snap to Frame(或按 Ctrl+Shift+S)
然后双击每个关键帧下方的时间数值,手动输入精确值,如 0.0、0.0167(对应 60fps 的单帧间隔)、2.0,回车确认。
- 不要拖动关键帧,拖动会引入浮点误差
- 复制粘贴前,先拖时间滑块到空白区域再执行
Ctrl+V,否则可能覆盖或落进不可见区 - 若总循环时长是 3 秒 × 3 次,导出前必须确认时间轴终点 ≥
9.0s,否则末段被截断,播放器硬跳回第 0 帧
Bezier 手柄调节不是“拉得顺眼就行”
Composer 的 Bezier 插值不接受 cubic-bezier(0.42, 0, 0.58, 1) 这类 CSS 式参数输入,所有控制都靠手柄拖拽完成,而 UI 对 x 值做了 [0,1] 限制,但 y 值可以且应该超出该范围来实现超调(overshoot)。
双击关键帧打开属性面板后:
左侧手柄往左上拉(x 减小、y 增大)增强缓入;
右侧手柄往下拉(y > 1,如 1.3)增强缓出并产生自然回弹。
- 避免手柄
x值超出 [0,1]——UI 会自动钳位,失去控制精度 -
y值设为1.2或1.3是合法常用操作,不是错误 - 整段循环区间(如
0s–3s和3s–6s)必须右键 →Interpolation→ 统一设为Bezier,混用Linear或Hold会导致交界处速度突变
枢轴点偏移比关键帧多还致命
多个部件联动时,只要有一个模型的枢轴点在循环中途被意外移动,位移起点就变了。比如夹具松开工件那一帧,枢轴偏移 2px,结果就是交接点位置跳变——人眼直接感知为“顿挫”,跟关键帧数量完全无关。
所有参与循环的模型必须基于同一参考系:
先选主控模型 → 右键 → 设置枢轴 → 在边界框中心固定
其余模型依次选中 → 变换 → 对齐 → 枢轴对齐 → 点击主控模型的枢轴点
- 对齐后若调过缩放,务必右键 →
重置变换,否则枢轴偏移会被放大 - 调试时按住
Ctrl拖动时间滑块逐帧看,重点盯交接点是否连续 - 禁用物理模拟——它会干扰状态连续性,让本该平滑的过渡突然“弹”一下
导出前必须关掉实时阴影
产线动画中,实时阴影几乎不可见,却极大拖慢渲染。预览阶段可用线框或隐藏线可见模式加速拖动时间轴;但导出前必须切回平滑渲染(带轮廓),同时关闭 实时阴影,否则关键帧计算和光照采样耦合,高频动作仍会卡顿。
另外,WSL2 或 Docker 中编辑的关键帧若出现时间漂移,不是 Composer bug,而是系统时间不同步所致:
WSL2 中运行 sudo hwclock --hctosys
Docker 启动时挂载时区:volumes: - /etc/localtime:/etc/localtime:ro
真正难处理的,是那些看起来时间对、插值同、枢轴稳,却依然卡顿的情况——这时要检查模型层级绑定是否在循环中被脚本动态修改,或者材质参数是否在某帧触发了未预期的 shader 重编译。











