PartBloom:由零件构建的 3D 模型
PartBloom 是一个开源框架,可将单张图像转换为一个模块化 3D 模型,其中各个部件均可单独导出,并利用 LLMs 处理结构、利用 TRELLIS 呈现细节。

亮点与成果:从单张图像到独立部件
PartBloom 是一个开源框架,可将单张图像转换为包含独立部件的 3D 模型。其核心思路很简单:由 LLM 构建结构,再由 TRELLIS 添加细节。部件根据其功能和相对运动进行规划,因此车辆主体和车轮等组件可以分别导出。粗模型旨在保留开口和连接结构,使结果更易于编辑、替换和组装。
该项目展示了 14 个单图像示例、生成与分解对比,以及绑定骨骼的动画演示。下方两张图展示了整体细节和部件边界。这些定性示例体现了潜力,但并不能证明其始终优于其他方法。本文基于 README 和源代码编写;我们尚未运行生成测试。
工作原理:规划、细化与部件解码

第一阶段负责协调三种 LLM 角色。Planner 生成部件图,描述各部件的功能、边界框、父子关系、连接位置和预期运动。随后,Builder 使用多边形、画笔、移动和清除工具,在共享的 64³ 网格中编辑每个部件的二值体素掩码。就像用积木搭建一样,这些操作会创建实际的粗略几何体。Reviewer 将参考图像与代理模型的四个视角进行比较,检查比例、缺失部件、连接结构和开口。它最多可以触发两轮修复。
第二阶段重新使用经过预训练的 TRELLIS 权重。粗模型的组合表面支持坐标沿六个面邻居方向各扩展一个单元格,然后由稀疏结构 VAE 将其编码为结构潜变量。该编码与高斯噪声混合后,默认情况下,流模型在 12 个步骤中从 t=0.65 采样到 t=0,并由参考图像提供引导,随后解码出细化后的结构。因此,代理模型提供了可编辑的空间先验,但细化过程仍可能移除较小的部件。
基于距离的分配和连通区域生长会将部件标签转移到细化后的结构上。随后,流水线为整个物体采样一个共享的 SLat:一组与空间坐标关联的特征。这些是不同的操作——结构潜变量从代理模型初始化,而详细的 SLat 则重新生成。在默认的部件模式下,系统根据部件标签选择特征,并将其解码为独立网格。在联合模式下,完整的 SLat 会先被解码为更高分辨率的特征,然后再提取每个部件的网格。共享的生成上下文有助于保持一致性,但不能保证接缝正确。
外观来自同一个 SLat 中每个部件对应的切片,经过高斯解码、多视角渲染和纹理烘焙生成。输出包含烘焙后的基础色,不应将其误认为完整的 PBR 材质集合。交付内容包括规划和代理模型数据、独立网格、带纹理的分部件 GLB、组装后的 assembly_textured.glb、预览图像和运行日志。它们共同支持检查、编辑和故障排除。
应用与展望:从独立部件到可用资产
潜在用途包括动画原型制作、产品爆炸图展示和装配教学。独立网格仍需要进行绑定,才能用于骨骼动画。实体打印还需要处理公差、接口和壁厚等问题。由于不可见几何体是根据单张图像推断出来的,因此不应将输出视为精确的逆向工程结果。
部署需要 LLM API、CUDA 环境、TRELLIS 和 DINOv2 权重,以及 Blender 4.5。PartBloom 仓库采用 MIT 许可证,但其 PhysX-Omni 依赖项采用 S-Lab License 1.0,该许可证限制商业使用。
官方路线图包括绑定骨骼以及迁移到 TRELLIS.2。未来研究可以探索多视角约束、连接检查和局部重新生成。对部件保留率、接缝质量、运行时间和成本进行测量,将有助于确定这种方法能否可靠地支持生产工作流。
FAQ
PartBloom 会从单张图片创建什么?
PartBloom 可将一张参考图像转换为一个各个部件均可单独编辑的 3D 模型。例如,车辆的车轮可以导出为独立网格,因此你可以旋转或替换某个车轮,同时保持车身位置不变。
PartBloom 如何判断一个部分在哪里结束、另一个部分从哪里开始?
它首先会询问每个组件的作用,以及它相对于相邻组件如何移动。语言模型利用这一计划,为每个部分构建粗略的 3D 形状。随后,TRELLIS 以参考图像为指导,进一步完善几何结构。
PartBloom 会导出哪些文件?
每个部件都会获得一个带纹理的 GLB 文件,以及一个展示完整对象的 assembly_textured.glb 文件。选择单个部件文件即可编辑一个组件,或打开 assembly 文件来检查各个部件如何组装在一起。纹理仅包含烘焙的基础色。
图片中被隐藏部分的还原有多准确?
PartBloom 从可见形状推断隐藏表面。轮子从侧面看起来可能很逼真,但其与车轴的隐藏连接仍需要调整。小部件在细化过程中也可能消失,因此在依赖装配契合度之前,请从多个角度检查模型。




