AutoPartGen

AutoPartGen:先看整体,再逐个生成部件

以图片输入为例:先生成物体的整体三维形状作为参照,再看着这个整体,一件一件地生成部件。每完成一件,就更新“已经生成了什么”,直到结束。

例如输入一张椅子图片,最后得到可以分别选中、编辑的椅座、靠背和椅腿 mesh。

1. 整个过程是怎样的?

下面是没有部件掩码时的常用流程:

flowchart TD Image[输入图片] --> Whole[生成整体三维形状的潜码] Whole --> Generate[扩散生成下一个部件潜码] Image --> Generate History[历史:已经生成了什么] --> Generate Generate --> Stop{是否输出结束信号} Stop -->|是| Output[返回所有部件 mesh] Stop -->|否| Decode[解码得到一个部件 mesh] Decode --> Update[收集已生成部件并重新编码] Update --> History

图里的潜码,就是用一组数字压缩表示三维形状。模型生成潜码,再通过解码器把它变成 mesh。

所以,“先生成整体 mesh,再把整体作为条件”的理解基本正确。更准确地说,先得到整体潜码,后续直接使用它,不必先把整体解码成 mesh。

2. 每生成一个部件,模型都看什么?

条件 用椅子举例 作用
整体形状 整把椅子的形状和比例 告诉模型最终要做成什么样
已生成的历史 椅座和靠背已经做好 告诉模型目前有什么,避免重复,并让新部件与已有部件协调
原始图片 椅子的外观 提供视觉参照
可选的部件掩码 只标出图片中的一条椅腿 指定这一轮希望生成哪一块

整体条件在过程中保持固定,历史条件每一轮都会更新。

历史具体怎么更新?把已生成部件的表面采样点收集起来,重新编码成一个形状潜码。这样模型能看到“目前已经做好的整体”,历史长度也不会随着部件数不断增长。

3. “逐个生成”与“扩散”是什么关系?

它有两个循环:

  • 外层循环生成部件:这轮做椅座,下轮做靠背。
  • 内层循环反复去噪:为了做出当前部件,从一整组随机噪声开始,结合条件逐步调整,最后得到部件潜码,再解码成 mesh。

这就是“部件级自回归”:每生成一个完整部件,才进入下一轮。 后面的部件会参考前面已经生成的结果。

没有掩码时,可以把算法理解成:

整体参照 ← 根据图片生成整体潜码
已生成部件 ← 空列表
历史 ← 空

重复:
    部件潜码 ← 根据整体参照、历史和图片,从噪声逐步生成
    如果部件潜码表示“已经生成完了”:停止
    部件 mesh ← 解码部件潜码
    将部件加入已生成部件列表
    历史 ← 收集所有已生成部件的表面点,重新编码

返回已生成部件

为什么要这么做? 如果每个部件各自独立生成,模型可能重复生成椅座,或生成与椅座位置不匹配的靠背。加上历史后,模型能根据已有结果调整下一件,改善部件之间的配合。

4. 用一把椅子走一遍

下面是一种可能的生成顺序,仅作教学示例:

  1. 先建立整体参照:根据图片得到整把椅子的三维潜码。
  2. 生成椅座:历史为空,模型先生成椅座 mesh,然后记入历史。
  3. 生成靠背:模型看到“目标是一把椅子,椅座已经有了”,生成与它协调的靠背。
  4. 生成椅腿组:历史更新为“椅座+靠背”,下一轮生成支撑它们的椅腿。
  5. 结束:模型输出代表空形状的结束信号 [EoT],返回这些独立部件。

部件都在同一个物体坐标系里,所以生成时就带着相应的位置与大小,可以直接放在一起。

这些部件是重新生成的。 例如椅座与靠背接触的面,在图片或整体外壳里可能看不到,模型也可以根据经验补出来。因此它不只是把整体 mesh 切成几块。

5. 另外几个关键点

为什么这种潜码适合表示部件?

它使用 3DShape2VecSet 表示形状。作者观察到,把两个部件的潜码拼接起来,通常能近似解码出二者的组合。这说明这种表示适合处理由多个部分组成的形状;实际生成时,历史还会重新编码以保持紧凑。

怎么知道要生成几个部件?

无掩码时,模型自己决定分法,并用结束信号停止。有掩码时,逐个处理用户给出的掩码,处理完列表就结束。掩码只指定图片区域,三维深度和隐藏表面仍需要模型推测。

这种能力怎么学出来?

训练使用本来就包含部件划分的三维资产。模型学习:给定整体、已有部件和图片,怎样生成下一个部件。所谓“自动发现部件”,是指使用时可以不再提供部件标注。

如果已经有整体 mesh 呢?

直接把它编码成整体参照,再走逐部件生成流程。整体参照是论文中有帮助的附加条件,这里讲的是使用它的常用流程。

最需要注意什么?

同一把椅子可以有不同分法,四条腿也可能被当成一组生成。自动模式不能精确指定拆分粒度;补出的隐藏结构也只是模型的合理猜测,不保证等于真实内部结构。


来源:论文 · 项目页 · 官方代码

posted @ 2026-09-08 17:24  S-X-Q  阅读(7)  评论(0)    收藏  举报