铃火 · 用 Seedance 生成骨架运动,再拟合成 rig 动作

结论:Seedance 生成的“X 光骨架”视频里,关节点一直贴在身体上,可以逐帧追踪;反解成铃火 rig 的关节角后回放,seed 11 的关节点误差中位数约 6 px(≈ 4 mm)。和现在程序化的奔跑相比,最大问题是膝关节两头弯:视频里膝只往一个方向折(前腿 −48…+2°),程序化的会翻到反关节方向(−21…+58°)。另外后腿从不收回到身体下方,身体几乎不俯仰。

1. 方法

first frame
首帧:铃火静止姿势的灰色剪影 + 从 rig 投影下来的 10 个关节点和骨线(侧视正交,960×540)。
  1. 首帧:关节点在 rig 上严格对齐(颈、尾根、头、尾尖、近侧前后腿的髋 / 膝 / 踝)。
  2. Seedance 图生视频,提示词要求点和线贴着关节、原地跳跃奔跑。生成了 seed 7 和 seed 11。
  3. 追踪:按颜色找点;子关节只在父关节一根骨长的范围内找。
  4. 拟合:脊柱线 → 躯干俯仰 / 高低;每条腿先平面几何求初值,再用铃火自己的正运动学(含脚掌放平、腿伸缩)做最小二乘,得到髋角、膝角、腿长;尾巴、头同样拟合。再平均出一个步幅周期。
  5. 回放:用拟合的关节角驱动铃火 rig,从 rig 上画出同样的点,与视频逐帧对比。
自检:拿已知角度的程序化步态渲成同样的骨架视频走一遍整条流程,关节角误差见第 6 节。

2. 原片 + 追踪 + 拟合(逐帧叠加)

3. 上下对比视频(上:Seedance;下:铃火 rig 回放)

seed 11(采用)
seed 7(弃用:视频里身体像橡皮一样拉长,髋点相对脊柱漂移,刚性骨架跟不上)

4. 带贴图:拟合的周期 vs 现在的程序化奔跑

视频拟合(seed 11 平均周期,循环 3 次)
现在运行时的 run 步态(同一相机)
3D 播放(可拖动旋转、滚轮缩放):
原地播放(身体不前进);远侧两条腿用近侧腿的曲线加 6% 周期的相位差。

5. 关节角曲线(一个步幅周期)

视频拟合 seed 11现在的程序化 run横轴:周期相位 0→1(各自对齐到前腿最靠后的时刻)

6. 误差与自检

拟合误差(关节点,像素中位数;1 px ≈ 0.63 mm)
自检:已知角度 → 骨架视频 → 追踪 → 拟合

7. 下一步可选

  1. 改关节限位:膝改成单向弯,再按视频反解的范围调程序化 run(髋角、俯仰、周期)。改动小,但走路 / 动作也用这些关节,需要全量回归。
  2. 做成奔跑动作:用视频拟合的曲线作为奔跑时腿的摆动轨迹,支撑期仍由 IK 锁脚(不打滑)。最接近视频,工作量大一些。
文件:pet/forge/mocap/(markers / mocap / track.py / selftest / site),结果在 pet/fit/mocap/。Seedance 调用 2 次。