现象
走路序列循环播放时,末帧接回首帧的瞬间左右腿前后互换,观感突兀。
实测(2026-08-11,两个不同角色各一次,现象一致)
交付 16 帧的两脚水平跨度:
角色 A:34 23 22 29 41 52 62 62 69 70 69 68 62 62 51 39
角色 B:90 83 118 117 111 134 143 152 159 159 160 155 151 140 125 111
局部极小(两腿交叉)分别为 3 次与 3 次。一个完整步态周期应当有 2 次交叉(左腿过右腿、右腿过左腿)。当前序列装的是半个周期:并腿 → 迈开 → 并腿,然后跳回首帧,而此时在前的是另一条腿。
为什么现有守卫没拦住
slicing/loop.py 的 docstring 里已经写明了这个失败模式,并用归一化接缝在基周期的整数倍里复选。但半周期处两帧的剪影本来就高度吻合——腿的位置对称,只是身份互换。本次实测接缝分别为 1.03 / 1.18,均低于 1.2 的阈值,顺利过关。
接缝这个指标对"腿的身份换了"结构性地不敏感。
已排除的方向(2026-08-11 实测,避免重走)
试图用图像距离在 p 与 2p 之间做判别,全部失败:
| 特征 |
d(26)/d(50) |
结论 |
| 全身灰度 64×64(现用) |
0.84 |
反而偏好半周期 |
| 腿部灰度 96×96 |
0.99 |
分不出 |
| 腿部彩色 96×96 |
0.98 |
分不出 |
| 腿部彩色 192×192 |
0.98 |
分不出 |
| 腿部彩色 320×320 |
0.98 |
分不出 |
即使只取腿部区域、上到 320×320 彩色,判别力仍为 0.98——半周期处两帧确实几乎一样,信息不在像素差里,任何基于图像距离的判据都无法识破。
另试过"近腿暗/远腿亮的有符号质心差",判别力 0.96,同样失败(该角色两腿明暗接近)。
目前唯一可行的方向
数腿交叉次数:整周期 2 次、半周期 1 次。
它在对齐后的交付帧上很干净(上面两组数据都是一次判读即得),但直接用于原视频的周期检测不稳——实测 8 个滑窗只有 3 个给出正确计数,因为该段 i2v 的步幅本身在单调变大、不是规整周期。
因此可行形态是后检而非前判:正常流程选完周期后,在对齐后的帧上数交叉次数,为 1 则按 2 倍周期重取。
这条尚未实现,也未验证。 需要一段步态规整的素材做基准。
影响
循环类动作(walk / run)全部受影响。这是"能用但一眼看出不对"的品相问题,不影响流程成功。
相关
代码在 #180 范围内,本 Issue 独立跟踪。
现象
走路序列循环播放时,末帧接回首帧的瞬间左右腿前后互换,观感突兀。
实测(2026-08-11,两个不同角色各一次,现象一致)
交付 16 帧的两脚水平跨度:
局部极小(两腿交叉)分别为 3 次与 3 次。一个完整步态周期应当有 2 次交叉(左腿过右腿、右腿过左腿)。当前序列装的是半个周期:并腿 → 迈开 → 并腿,然后跳回首帧,而此时在前的是另一条腿。
为什么现有守卫没拦住
slicing/loop.py的 docstring 里已经写明了这个失败模式,并用归一化接缝在基周期的整数倍里复选。但半周期处两帧的剪影本来就高度吻合——腿的位置对称,只是身份互换。本次实测接缝分别为 1.03 / 1.18,均低于 1.2 的阈值,顺利过关。接缝这个指标对"腿的身份换了"结构性地不敏感。
已排除的方向(2026-08-11 实测,避免重走)
试图用图像距离在 p 与 2p 之间做判别,全部失败:
即使只取腿部区域、上到 320×320 彩色,判别力仍为 0.98——半周期处两帧确实几乎一样,信息不在像素差里,任何基于图像距离的判据都无法识破。
另试过"近腿暗/远腿亮的有符号质心差",判别力 0.96,同样失败(该角色两腿明暗接近)。
目前唯一可行的方向
数腿交叉次数:整周期 2 次、半周期 1 次。
它在对齐后的交付帧上很干净(上面两组数据都是一次判读即得),但直接用于原视频的周期检测不稳——实测 8 个滑窗只有 3 个给出正确计数,因为该段 i2v 的步幅本身在单调变大、不是规整周期。
因此可行形态是后检而非前判:正常流程选完周期后,在对齐后的帧上数交叉次数,为 1 则按 2 倍周期重取。
这条尚未实现,也未验证。 需要一段步态规整的素材做基准。
影响
循环类动作(walk / run)全部受影响。这是"能用但一眼看出不对"的品相问题,不影响流程成功。
相关
代码在 #180 范围内,本 Issue 独立跟踪。