PartBloom is an open-source agentic framework for single-image 3D generation. An LLM agent plans the object's functional parts and builds them as a coarse voxel proxy with explicit drawing tools. A diffusion model (TRELLIS) then refines the proxy and decodes every part from one shared latent, so each part comes out as its own detailed, textured mesh that fits the rest of the object. The agent stage is model-agnostic; results here use Claude Opus 5.5, GPT-6-Astra and Gemini-4-Argon.
Results
Comparison with Prior Methods
14 single-image inputs across vehicles, mecha, creatures, statues, furniture, architecture and dioramas. Click Load 3D to orbit any row. Switch between textured, parts and clay display, or pick which LLM drives PartBloom and Direct Blender. ⤢ opens the exploded view.
Parts
Native Part Decomposition
PartBloom generates parts natively. Each part is split by function and independent motion, and small fixed attachments stay with the part they belong to. For the two segmentation baselines, TRELLIS first generates a 3D asset from the input image; SegviGen or PartLLM then splits that asset into parts. We label these pipelines TRELLIS + SegviGen and TRELLIS + PartLLM (general granularity). Colors mark parts. To explore our parts in 3D, use Parts mode or the exploded view above.
Rigging
Rig-Ready Assets
Each output part is a functional, independently moving piece, so the assets can be rigged and animated directly.
Method
Framework Overview
PartBloom works in two stages: the LLM agent fixes the structure, then the diffusion model fills in the detail.
Structure first
A Planner decides the parts. A Builder constructs each one on a shared voxel canvas with drawing tools. A Reviewer compares the proxy with the image and triggers repair rounds. The agent is model-agnostic — switching providers is a config change.
Details bloom
The proxy is encoded, partially noised, and refined with image guidance. Part labels move to the refined structure, one shared latent is sampled for the whole object, and each part is decoded from its own slice — so parts come out consistent with each other. Textures come from TRELLIS's own Gaussian decoder.
Citation
BibTeX
@misc{partbloom2026,
title = {PartBloom: Structure First. Details Bloom.},
author = {Anonymous},
year = {2026},
howpublished = {\url{https://github.com/brain-labbb/PartBloom}}
}