Split By Field
Carve one mesh into many, using the labels it already has
- geometry
- geometries
- info
Ever had a mesh that's actually several parts masquerading as one? A segmented scan where every bolt is its own labeled region. A generative output grouped by primitive_type. A point cloud with per-point cluster IDs. Split By Field reads one of those per-vertex attributes - the "field" - and emits a separate mesh for every unique value. It's the node that turns a labeled blob into a parts list.
This one isn't a backend with a dropdown; it's a standalone utility in the pack's combine group.
How it works
A lot of geometry-processing upstream of this node attaches scalar or integer data to each vertex - segmentation labels, instance IDs, cluster assignments. This node just groups vertices by whatever discrete field you name and builds a separate TRIMESH from each group. One input geometry becomes a list of geometries, one per field value. If you ran a clustering or segmentation step and want to process or export each part independently, this is the split you've been missing.
Two inputs:
geometry- a TRIMESH or POINT_CLOUD that carriesvertex_attributes. Note that both types are accepted; point clouds in this pack are represented as TRIMESH internally, which is why the input list shows both.field_name(default "label") - the exact name of the discrete per-vertex attribute to split on. The tooltip names the usual suspects:label,primitive_type,cluster. If you name a field that doesn't exist, you'll get an error rather than a silent empty list - check the attribute name in the node that produced your mesh.
Outputs
geometries is a list of TRIMESH - that's the important difference from most nodes here. Downstream, you'll typically feed each element through a list-processing or iteration node to save, inspect, or transform the parts individually. info (STRING) tells you how many parts came out and what the field contained.
When to use it
This is the bridge between analysis and use: after instance segmentation of a scene, after a primitive-detection pass that labels boxes, planes, and cylinders, or after clustering a scan into components. The classic move is Split By Field → per-part export, so each object becomes its own OBJ/STL for printing or a per-part texture bake. If you've ever manually cut a mesh apart in Blender because the data said "these are different things," you already know exactly why this node exists.
Install is the pack standard: ComfyUI Manager search "GeometryPack", or git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack into custom_nodes/, then pip install -r requirements.txt --upgrade and python install.py, then restart. The pack is young and GPL-3.0-or-later with an experimental comfy-env/pixi installer - first run is slow, and the author actively wants bug reports on GitHub.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| geometry | TRIMESH,POINT_CLOUD | Input point cloud or mesh with vertex_attributes. | |
| field_name | STRING | label | Name of the discrete field to split by (e.g., 'label', 'primitive_type', 'cluster'). |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| geometries | TRIMESH | — |
| info | STRING | — |