Contents

CubePart: An Open-Vocabulary Part-Controllable 3D Generator


作者Yiheng Zhu*, Kangle Deng*, Jean-Philippe Fauconnier*, Inaki Navarro*, Daiqing Li, Ava Pun, Yinan Zhang, Peiye Zhuang, Xiaoxia Sun, Maneesh Agrawala, Kiran Bhat, Tinghui Zhou(* 同等贡献)
机构Roblox USA;Carnegie Mellon University(Ava Pun);Stanford University(Maneesh Agrawala)
发表SIGGRAPH Conference Papers 2026,洛杉矶,2026年7月19–23日
链接https://arxiv.org/abs/2605.28763  |  cubepart.github.io

现有 3D 生成模型输出整体 mesh 或任意分割结果,无法对齐游戏引擎所需的语义零件结构;CubePart 以文本 schema 为推理时控制信号,直接生成与用户定义语义一致的多零件 mesh。

CubePart Teaser
给定文本提示与零件 schema,CubePart 生成结构完整的多零件 3D mesh;也可接受已有单体 mesh 并按 schema 分解(右列)。

研究动机

核心方法

1. 整体框架 — 两阶段生成

CubePart 接受一个全局文本提示(如 "a tow truck characterized by cartoonish features")和一个零件 schema(如 {"cab", "chassis", "wheels", "roof beacon", "tow assembly"}),输出每个 schema 元素对应的独立 mesh。框架分为两个阶段:Stage 1 生成整体 mesh,Stage 2 将其分解为多零件 mesh。

Method Pipeline
两阶段框架概览:Stage 1 用 MM-DiT 生成完整 shape latent;Stage 2 以该 latent 为条件,借助 Cross-Part Attention Residual Block 输出各零件 latent。

2. Stage 1 — 单体 Mesh 生成(schema 感知)

基础网络为 MM-DiT(Multi-Modal Diffusion Transformer,借鉴 Stable Diffusion 3),结合 Qwen-VL 文本编码器,基于 vecset 潜空间(3DShape2VecSet VAE)进行 flow matching 训练。模型压缩后参数量约 1.9B。预训练数据约 4.7M mesh-text 对(745K 私有 + 4M 合成)。

Schema 感知微调:预训练模型即使接收含零件列表的 prompt 也无法保证所有零件都出现。微调时将 prompt 结构化为 "{global caption}. This object contains the following parts: {list of part labels}.",使模型学会忠实生成 schema 中的全部零件。直觉:Stage 1 的整体 mesh 为 Stage 2 建立几何先验,避免 Stage 2 从零学习基础 3D 结构。

3. Stage 2 — 多零件 Mesh 分解

Stage 2 以 Stage 1 生成的完整 shape latent(zglobal)为条件,对每个零件独立生成 part latent z_i。Part-aware prompt 结构为 "This object has the following parts: {all parts}. Target to segment: {target part name}",让模型了解其他零件的边界上下文。

朴素做法(对 pre-trained 层做全局 attention)会破坏预训练先验,导致质量下降。CubePart 引入 Cross-Part Attention Residual Block:零初始化的专用 Transformer block,插入在第 1、5、9、17 层,在不修改已有层的前提下实现跨零件信息交换。

Cross-Part Attention Block
Cross-Part Attention Residual Block:以所有零件 latent 和全局 shape latent 为输入,zero-initialized 保证初始时不干扰预训练权重。

直觉:零初始化使 Stage 2 在训练初期等价于 Stage 1,随着训练推进逐渐学习跨零件几何边界,同时保留预训练的全局几何先验。

Stage 2 在 24 张 H200 GPU 上训练约 18 小时(450 GPU-hours);推理时 Stage 1 约 2-3 秒,Stage 2 约 3-4 秒(含 VAE 解码)。

4. 最关键的一句话

用零初始化的 Cross-Part Attention block 插入预训练单体生成模型,在保留全局几何先验的同时学习跨零件边界,并以结构化文本 schema 在推理时控制开放词汇的零件语义。

数据集

现有开放词汇零件数据集规模不足(最大 PartVerse-XL 仅 40K 资产),CubePart 构建了一套全自动数据引擎,生成 462K 资产、2.02M 零件的训练集,来源涵盖 Sketchfab(270K)、商业授权库(64K)和内部游戏资产(129K)。

Dataset Comparison
同一 Objaverse 资产的零件分割对比:原始艺术家分解(7 零件)、PartVerse(17 零件,VLM caption 有 artifact)、本文方法(4 零件,简洁语义名称)。

核心流程:对每个资产渲染 14 个轨道视角,每个视角生成一对图像:带零件轮廓和编号标记的纹理渲染图 + 零件色块渲染图(Set-of-Mark 3D 适配)。以 GPT-5 同时推理所有视角对,输出零件聚类 JSON(将散碎 mesh 合并为语义单元,如将 rim/tire/hub 合并为 "front left wheel")。聚类后用 Dual Marching Cubes(512³)将每个零件转换为 watertight mesh。相比 PartVerse,本方法产出的是简洁零件名而非 VLM caption,更符合用户查询习惯且不含 "A close-up of..." 等 artifact。

主要实验结果

Varying Parts Results
同一输入 mesh 在不同 schema 下的分解结果:2 零件时车轮将挡泥板合并,4 零件时显式指定 "fenders" 即可正确区分,展示开放词汇的灵活性。
Qualitative Comparison
多零件生成定性对比:CubePart 在 schema 遵循度和几何保真度上均优于 HoloPart 两阶段 pipeline 及基于图像的方法。

应用场景

所有实验在 Roblox 游戏平台上运行,行为脚本以 Lua 直接控制各零件。

局限与展望