Nodes/BrainDead Nodes/BD Blender Merge Planes
ComfyUI Node

BD Blender Merge Planes

Dissolve flat faces into planes without killing your hard edges

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Blender Merge Planes
  • mesh
  • edge_metadata
  • mesh
  • status
delimit_sharptrue
delimit_seamfalse
delimit_materialfalse
delimit_normaltrue
dissolve_angle5.0
min_faces_per_region1
faces_per_area_percent0.0
max_faces_per_region100
output_topologyTRI
flatten_regionstrue
min_subdivide_area_percent3.0
timeout300

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.

Category🧠BrainDead/Blender

Inputs (14)

NameTypeDefaultDescription
meshTRIMESH
delimit_sharpBOOLEANtrueRespect sharp edge marks (won't dissolve across)
delimit_seamBOOLEANfalseRespect seam edge marks
delimit_materialBOOLEANfalseRespect material boundaries
delimit_normalBOOLEANtrueRespect normal direction changes (auto-detect planes). Enable this to preserve planar group boundaries without needing explicit SHARP marks.
dissolve_angleFLOAT5.00.1–45Max angle between faces to allow merging (degrees)
min_faces_per_regionINT11–100Minimum faces to keep per region
faces_per_area_percentFLOAT0.00–50Target faces per 1% of surface area (0=no subdivision, keeps clean NGONs)
max_faces_per_regionINT1001–1000Maximum faces per region (prevents over-subdivision)
output_topologyCOMBOTRIOutput face type: TRI (compatible), QUAD (clean), NGON (minimal)
flatten_regionsBOOLEANtrueEnsure faces stay coplanar within each region
min_subdivide_area_percentFLOAT3.00.1–50Minimum face area (% of total) to consider for subdivision. Lower = more faces subdivided.
edge_metadataoptEDGE_METADATAEdge metadata from BD_PlanarGrouping or BD_BlenderEdgeMarking. If connected, edges will be marked before dissolve.
timeoutoptINT30060–1800Maximum processing time in seconds

Outputs (2)

NameTypeDescription
meshTRIMESH
statusSTRING