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日
现有 3D 生成模型输出整体 mesh 或任意分割结果,无法对齐游戏引擎所需的语义零件结构;CubePart 以文本 schema 为推理时控制信号,直接生成与用户定义语义一致的多零件 mesh。
给定文本提示与零件 schema,CubePart 生成结构完整的多零件 3D mesh;也可接受已有单体 mesh 并按 schema 分解(右列)。
研究动机
问题难在哪 :游戏/交互应用中的 3D 资产需要语义零件分解(车轮、机械臂等)才能驱动动画 rig、物理模拟和行为脚本;但为不同游戏手动制作符合特定 schema 的 mesh 代价极高,难以规模化。
现有方法的问题 :(1)TRELLIS、Craftsman 等 3D 原生生成模型只产出整体 mesh,无零件结构;(2)PartCrafter、PartPacker 等可生成多零件但只能控制零件数量,语义身份不可控;(3)OmniPart 依赖 2D 分割 mask 输入,无法处理被遮挡的零件,且 2D 控制信号在三维空间存在歧义。
核心 insight :文本天然是开放词汇 控制接口——将全局描述与零件名称列表(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。
两阶段框架概览: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 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)。
同一 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。
主要实验结果
评测数据集 :PartObjaverse-Tiny(200 个手工标注 mesh,开放词汇零件标签)。
评测指标 :Chamfer Distance(CD,↓)和 F-score(↑),分别在零件级别和整体级别计算;形状归一化到 [−1,1],F-score 阈值 0.1。
定量对比 :CubePart 在零件级 CD(0.251)和 F-score(0.743)上全面超越 PartCrafter(0.493 / 0.290)、PartPacker(0.374 / 0.475)、HoloPart+PatchAlign3D(0.309 / 0.549)和 OmniPart(0.309 / 0.630);整体级性能亦最优(CD 0.048,F-score 0.974)。
消融实验 :去掉 Cross-Part Attention → 零件级 CD 从 0.251 劣化至 0.433,F-score 从 0.743 降至 0.398,是最关键的单一组件;换用 PartCrafter 风格 attention(修改预训练层而非插入新块)→ 性能介于两者之间;去掉 Stage 1 预训练 → 整体结构完整性下降,确认全局先验对 Stage 2 的价值;去掉 schema-aware fine-tuning → Stage 1 会遗漏或过度强调某些零件(如缺失 "Steering Wheel")。
同一输入 mesh 在不同 schema 下的分解结果:2 零件时车轮将挡泥板合并,4 零件时显式指定 "fenders" 即可正确区分,展示开放词汇的灵活性。
多零件生成定性对比:CubePart 在 schema 遵循度和几何保真度上均优于 HoloPart 两阶段 pipeline 及基于图像的方法。
应用场景
所有实验在 Roblox 游戏平台上运行,行为脚本以 Lua 直接控制各零件。
载具驾驶 :Jellyfish car 先用 5 零件(车身 + 四轮)实现基础驾驶,细化 schema 加入 headlights、exhaust pipe 后可附加视觉特效,再增加 gun 零件可添加射击行为——每次细化 schema 即可获得新功能而无需重建 mesh。
角色动画 :机器人(头部、手臂、武器独立)支持手臂伸展和动力起飞;青蛙人形角色支持激光发射和单腿旋转;巫师角色将道具(法杖)与身体分离,实现挥动和发光特效。
飞行器 :无人机的两个螺旋桨作为独立零件,实现非对称驱动(起飞、悬停、转向);起落架、壳体、灯光各自独立控制。
局限与展望
无蒙皮支持 :当前模型仅针对刚体分解,不支持有机角色 mesh 变形所需的 skinned vertex weights;未来可扩展为同时预测骨骼 rig 权重。
几何互穿 :Cross-Part Attention 显著减少零件重叠,但接触边界处仍可能出现穿插(见论文 Figure 11 的失败案例)。
空间/位置语义 :开放词汇的 "front-left" / "rear-right" 等位置标识符在 VLM 标注时存在歧义——VLM 有时混淆物体坐标系与相机视角,或对被遮挡零件漏标,导致训练数据噪声,推理时模型偶尔交换对称零件或沿轴错位。
研究趋势 :CubePart 将 3D 生成与游戏引擎工作流首次端到端打通,代表了"生成即可用"资产流水线的重要一步。后续方向包括:蒙皮 mesh 生成、纹理感知零件分解、交互式 schema 编辑,以及将 schema 控制扩展至视频/动态生成领域。