Skip to content

循环选帧取到半个步态周期,末帧接回首帧时左右腿互换(Refs #171) #197

Description

@johnnyzhang-eng

现象

走路序列循环播放时,末帧接回首帧的瞬间左右腿前后互换,观感突兀。

实测(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 独立跟踪。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions