BD CubePart Get Part
Pull one part out of a CubePart decomposition
- parts
- mesh
- name
CubePart is the open-vocabulary 3D decomposition tool this pack vendors in - you give it a mesh and a list of part names ("body, left wheel, right wheel, head"), and it segments the mesh into one clean mesh per part. Its BD CubePart Segment node hands back a TRIMESH_LIST of all the parts at once. Which is great until you want one part, because most downstream nodes want a single TRIMESH.
That's this node's entire job, and it does it without fuss: take the parts list, pick an index, get back that one part as a TRIMESH plus its name.
The inputs
- parts - the TRIMESH_LIST output from BD CubePart Segment. Required.
- index - which part to extract, 0-based. The node description notes it's "clamped to range," so an index past the end doesn't crash - it just gives you the last part (or an empty mesh if the list is empty, so watch it).
- part_names - optional. Wire the
part_namesoutput from BD CubePart Segment through here and the node resolves the outputnameto the actual part label (likeleft_wheel) instead of a generic string.
Outputs: mesh (TRIMESH) and name (STRING).
How you'll chain it
The typical flow after a segmentation:
[BD CubePart Segment] ──parts──→ [BD CubePart Get Part] ──mesh──→ [BD CuMesh Simplify]
(parts + names) ──part_names──↗ └──→ export / Blender / bake
One part flows into a simplification, a UV unwrap, a PBR bake, or an export - while the other parts wait untouched in the list. If you need to process several parts identically, that's several Get Part nodes (or the pack's Mesh Preview thumbnails node to eyeball the whole list first and find which index you actually want).
Installing it
Part of BizaNator/ComfyUI-BrainDead (BrainDeadGuild). ComfyUI Manager → search "BrainDead" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt
Restart; it's under 🧠BrainDead/CubePart. Heads up on the model side: CubePart Segment auto-downloads the Roblox/cubepart weights (~8.6GB DIT + ~1.3GB VAE) and a Qwen3-VL-4B text encoder on first run. That's the expensive part of the pipeline - this node is just the selector, so it costs you nothing extra.
Gotchas
The index is zero-based and the list is in the order you wrote the part names. If you wrote "body, left wheel, right wheel," then body is index 0, left wheel is 1, right wheel is 2 - and "body" being 0 trips people up more than it should. Also worth knowing: the license. CubePart's code is MIT, but the model weights carry a research-only RAIL-MS license - fine for internal and research use, but review it before shipping commercially. Finally, the pack's docs warn that names past 8 are dropped at segmentation time, so a part list longer than that means your indices may not line up with what you think you asked for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| parts | TRIMESH_LIST | parts output from BD CubePart Segment. | |
| index | INT | 00–4096 | Which part to extract (0-based). |
| part_namesopt | STRING | Optional part_names string from BD CubePart Segment, used to resolve the output name. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mesh | TRIMESH | — |
| name | STRING | — |