BD Blender Merge Planes
Dissolve flat faces into planes without killing your hard edges
- mesh
- edge_metadata
- mesh
- status
If you've got a mesh with 100,000 triangles where 90,000 are flat coplanar filler, you don't want a decimator - you want Limited Dissolve. That's the engine behind BD Blender Merge Planes: it merges coplanar faces into single large faces while preserving the hard edges between actual planes, then optionally subdivides the big regions back up proportionally so the mesh still deforms nicely. It's the "turn triangle soup into a clean low-poly" node, and it's the last step in the pack's hard-edge preservation pipeline.
The key insight is in the delimit_normal input (on by default). Blender detects planar boundaries from face normals automatically, so you don't need explicit SHARP marks wired in - the node figures out where one plane ends and the next begins. delimit_sharp (on) and delimit_seam (off) respect explicit marks when you've made them with BD Blender Edge Marking.
The inputs that matter
- delimit_normal (default true) - the "auto-detect planes" switch. This is why the node works out of the box.
- dissolve_angle (5°) - max angle between faces allowed to merge. Lower = more faithful, higher = flatter.
- faces_per_area_percent (0) - target faces per 1% of surface area for proportional subdivision. At 0, no subdivision, keeping clean NGONs - the fastest, simplest output. Raise it when the mesh needs enough geometry to deform (animation/rigging).
- min_faces_per_region (1) / max_faces_per_region (100) - guardrails on how far subdivision goes.
- output_topology -
TRI(compatible, default),QUAD(cleanest),NGON(minimal). - flatten_regions (true) - forces faces within a region coplanar. On for stylized, off if you need to preserve subtle curvature.
Optional edge_metadata input accepts marks from BD PlanarGrouping or BD Blender EdgeMarking and applies them before dissolving. Outputs: merged mesh + status.
Install and the Blender gotcha
Pack install, same as all of these:
cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt
(ComfyUI Manager → "BrainDead", restart.) V3 API → keep ComfyUI updated. And because it's a Blender node: a real Blender must be installed - the README's "bundled" line covers scripts, not the binary; the code checks lib/blender/blender-5.0.1-linux-x64, sibling packs, then /usr/bin/blender.
The recommended chain is: BD PlanarGrouping with straighten_boundaries=True (clean geometric boundaries) → BD Blender EdgeMarking FROM_COLORS_AND_ANGLE → BD BlenderMergePlanes with delimit_sharp=True. That's the pack's documented recipe for a low-poly mesh with hard edges intact. Skip the prep nodes and it still works - delimit_normal carries a lot - but the boundaries come out less clean.
One trap: flatten_regions will happily flatten a slightly-curved surface (a cheek, a barrel) into a single plane if your dissolve_angle is loose. If you're merging organic shapes, keep dissolve_angle low and leave flatten_regions on only if the flat-panel look is the goal.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh | TRIMESH | — | |
| delimit_sharp | BOOLEAN | true | Respect sharp edge marks (won't dissolve across) |
| delimit_seam | BOOLEAN | false | Respect seam edge marks |
| delimit_material | BOOLEAN | false | Respect material boundaries |
| delimit_normal | BOOLEAN | true | Respect normal direction changes (auto-detect planes). Enable this to preserve planar group boundaries without needing explicit SHARP marks. |
| dissolve_angle | FLOAT | 5.00.1–45 | Max angle between faces to allow merging (degrees) |
| min_faces_per_region | INT | 11–100 | Minimum faces to keep per region |
| faces_per_area_percent | FLOAT | 0.00–50 | Target faces per 1% of surface area (0=no subdivision, keeps clean NGONs) |
| max_faces_per_region | INT | 1001–1000 | Maximum faces per region (prevents over-subdivision) |
| output_topology | COMBO | TRI | Output face type: TRI (compatible), QUAD (clean), NGON (minimal) |
| flatten_regions | BOOLEAN | true | Ensure faces stay coplanar within each region |
| min_subdivide_area_percent | FLOAT | 3.00.1–50 | Minimum face area (% of total) to consider for subdivision. Lower = more faces subdivided. |
| edge_metadataopt | EDGE_METADATA | Edge metadata from BD_PlanarGrouping or BD_BlenderEdgeMarking. If connected, edges will be marked before dissolve. | |
| timeoutopt | INT | 30060–1800 | Maximum processing time in seconds |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mesh | TRIMESH | — |
| status | STRING | — |