Skip to content

非人形角色自动绑骨漏认肢体,且整幅指标看不见 #268

Description

@johnnyzhang-eng

现象

自动绑骨对非人形角色只能认出部分肢体。实测一只四足角色:重绑后肢体识别从 1 条腿提到 3 条,仍差一条(后腿被前腿遮挡)。

后果是那条肢体没有骨骼驱动,在每一帧都保持同一个姿势——序列帧里它是根柱子。

为什么它一道闸都不会红

整幅指标全部正常:motion_scale 11.08、死帧 0、loop_seam 正常、帧数时长成色全对。

因为那两个判据都是整幅的:motion_scale 是逐帧平均差,dead_frame_mask 的两条判据都是相对的。整体在动时它们看不见"一部分在动、另一部分冻着"。

已补 slicing.quality.limb_motion#192 分支):按主体包围盒切 3×2 区,报各区占总动量的归一化占比 + 最静区名。同一批数据上一眼看出某区占比只有 0.004。

只报数不判决——几何分区区分不了"该动没动"和"本来就不该动"(四足的背天然静),那需要动作语义。两个试过不成立的汇总判据已写进 docstring 免得后来者重做。

待解决

  1. 遮挡导致的肢体漏认。治根方向是换 3/4 视角母版重新生成 3D,让被遮挡的肢体在输入里可见。要验证。
  2. 绑骨参数按形态分流。人形用 rig_type=biped + spec=MIXAMO;四足不能传 MIXAMO(Mixamo 规范没有四足骨架,与 quadruped 是无效组合),要走对应的预设动作。这条已经踩过,应该固化成代码里的约束而不是口口相传。
  3. 分区动量接进验收。绑骨产物出帧后自动跑一遍,某区占比异常低且按动作语义该动 → 拦下来,别让"半边不动"的产物流到交付。

与另一条的关系

不同 provider 的适用面不同:一个的自动绑骨覆盖 biped/quadruped/鸟/昆虫,另一个是当前主力图生 3D。图生 3D 与绑骨可以来自不同 provider,产品代码里两段本来就是分开的 Protocol,不需要绑定同一家。

验收

  • 四足角色绑骨后,四条腿的分区动量都显著为正
  • 形态与绑骨参数的组合有代码级约束,无效组合在提交前就报错
  • 分区动量接进出帧后的成色上报

Refs #192

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions