实验定位 有效后处理原型 / 需扩大验证
A42 回答 A41 的关键问题:多出来的闭合组件是不是必要结构,还是 unsigned shell 产生的可删除外壳?做法是把 A41 mesh 拆成 connected components,并按 largest、visible-prior、balanced visible+patch 三种规则选择单组件。
结果比 A41 更好:lock_r018_patch030_b024/visible_prior 平均 components=1、watertight rate=100.0%、boundary=0、nonmanifold=0,同时 visible p95=0.03244、patch coverage@5=100.0%。这说明 A41 多组件主要是多余壳,可通过 topology-aware component routing 清理。
实验设计(Image-2 风格)
模块设计(Image-2 风格)
Component Router
- 输入:A41 visible-lock UDF mesh。
- 分解:connected components。
- 评分:visible p95、patch p95、visible coverage@5、patch coverage@5。
- 规则:largest、visible-prior、balanced visible+patch。
- 输出:单组件 watertight OBJ。
Interpretation
如果单组件选择后 patch coverage 仍接近 100%,说明 A41 的额外组件多半是无用壳;如果 patch coverage 掉得很厉害,则说明 cleanup 会丢替换结构。A42 目前支持前者,但只在两个 focus case 上验证。
实验结果(表格)
规则聚合
| rule | 水密率 | components | component Δ vs A41 | boundary | nonmanifold | faces | visible p95 | patch p95 | visible cov@5 | patch cov@5 | proxy Chamfer |
|---|---|---|---|---|---|---|---|---|---|---|---|
| low-drift visible-prior | 100.0% | 1 | -4.5 | 0 | 0 | 28460 | 0.03244 | 0.03527 | 99.8% | 100.0% | 0.02602 |
| low-drift largest | 100.0% | 1 | -4.5 | 0 | 0 | 28460 | 0.03261 | 0.03530 | 99.8% | 100.0% | 0.02591 |
| low-drift balanced | 100.0% | 1 | -4.5 | 0 | 0 | 28460 | 0.03271 | 0.03547 | 99.8% | 100.0% | 0.02603 |
| topology visible-prior | 100.0% | 1 | -2 | 0 | 0 | 18362 | 0.03694 | 0.04036 | 100.0% | 99.8% | 0.02948 |
逐 case 输出
| case | rule | 选择 | watertight | components before | components after | boundary | nonmanifold | visible p95 | patch p95 | patch cov@5 | faces | OBJ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gso_002_input4 | topology visible-prior | candidate | True | 5 | 1 | 0 | 0 | 0.03736 | 0.04261 | 99.6% | 29820 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_002_input4/mesh_lock_r020_patch035_b028_visible_prior_trellis2_raw.obj |
| gso_002_input4 | low-drift largest | candidate | True | 9 | 1 | 0 | 0 | 0.03320 | 0.03781 | 100.0% | 46644 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_002_input4/mesh_lock_r018_patch030_b024_largest_component_trellis2_raw.obj |
| gso_002_input4 | low-drift visible-prior | best | True | 9 | 1 | 0 | 0 | 0.03314 | 0.03767 | 100.0% | 46644 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_002_input4/mesh_lock_r018_patch030_b024_visible_prior_trellis2_raw.obj |
| gso_002_input4 | low-drift balanced | candidate | True | 9 | 1 | 0 | 0 | 0.03339 | 0.03812 | 100.0% | 46644 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_002_input4/mesh_lock_r018_patch030_b024_balanced_visible_patch_trellis2_raw.obj |
| gso_008_input4 | topology visible-prior | candidate | True | 1 | 1 | 0 | 0 | 0.03652 | 0.03811 | 100.0% | 6904 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_008_input4/mesh_lock_r020_patch035_b028_visible_prior_trellis2_raw.obj |
| gso_008_input4 | low-drift largest | candidate | True | 2 | 1 | 0 | 0 | 0.03202 | 0.03279 | 100.0% | 10276 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_008_input4/mesh_lock_r018_patch030_b024_largest_component_trellis2_raw.obj |
| gso_008_input4 | low-drift visible-prior | best | True | 2 | 1 | 0 | 0 | 0.03173 | 0.03287 | 100.0% | 10276 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_008_input4/mesh_lock_r018_patch030_b024_visible_prior_trellis2_raw.obj |
| gso_008_input4 | low-drift balanced | candidate | True | 2 | 1 | 0 | 0 | 0.03204 | 0.03282 | 100.0% | 10276 | /home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a42_component_aware_cleanup/gso_008_input4/mesh_lock_r018_patch030_b024_balanced_visible_patch_trellis2_raw.obj |
可视化结果


实验结论
- A42 是 A40-A41 链条中的明确正结果:component-aware cleanup 能把 A41 的多组件问题压回单组件,同时保持水密和非流形为 0。
- 低漂移配置
lock_r018_patch030_b024/visible_prior保留了 A41 的 visible-lock 收益:visible p95=0.03244,优于 A40 的约 0.0415。 - patch coverage@5 仍达到 100.0%,说明单组件选择没有明显丢掉 replacement patch。
- 但 A42 仍是后验 component routing,不是最终生成方法;它证明“component-aware topology prior”有用,下一步要把这个 prior 放进 signed/local SDF 或 generation-time guidance。
- 当前只在 2 个 focus case 上验证,必须扩展到 A34/A35 可导出的更多 case 或 100-case 子集,确认多余壳是否普遍可删。
下一步想法
- A43:把 A42 best rule 与 A40/A41/A37 做同表对比,加入 GT Chamfer/F-score 或 20-view render 指标,确认 topology gain 没有牺牲真实几何。
- 实现 signed/local SDF:把 A42 component prior 作为 post-filter,同时用法线/可见性生成 signed field,减少 shell 产生。
- 扩展到更多 case:至少从 A30/A31 的 10-case 中挑出 surface labels 可复用对象,测试 component cleanup 的稳定性。
- 把 component-aware routing 写成论文算法模块:Observable-state implicit completion = visible lock + patch support + component prior。