Nodes/BrainDead Nodes/BD Blender Edge Marking
ComfyUI Node

BD Blender Edge Marking

Mark the edges you want to survive, before the geometry tools eat them

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Blender Edge Marking
  • mesh
  • mesh
  • edge_preview
  • edge_metadata
  • status
operationFROM_COLORS_AND_ANGLE
color_threshold0.15
angle_threshold30
mark_modeADD
mark_typeBOTH
crease_value1.0
clear_sharpfalse
clear_creasefalse
generate_previewtrue
preview_thickness0.0020
timeout120

Mesh tools have a bad habit of collapsing edges you wanted to keep. If you're doing stylized low-poly work, the fix isn't to fight the decimator - it's to tell the pipeline which edges matter before you run it. BD Blender Edge Marking does exactly that: it detects edges worth preserving - where colors change, where the surface angle changes - and marks them as sharp/seam/crease on the mesh, so downstream tools like BD Blender Merge Planes respect them.

The feature that makes it interesting for image-to-3D pipelines is color-based edge detection. A character's shirt-to-skin boundary is a color boundary, and if you mark those edges as sharp, they survive decimation and merging while flat interior regions get eaten away. That's how you get a clean low-poly character instead of a melted one.

Operations

  • FROM_COLORS_AND_ANGLE (default) - marks edges where color changes or face angle does. The combined mode and the one you'll usually want.
  • FROM_COLORS - color-change edges only. Controlled by color_threshold (0.15).
  • FROM_ANGLE - dihedral angle edges only. Controlled by angle_threshold (30°).
  • CLEAR - wipe existing sharp/crease marks.
  • SHARP_TO_CREASE / CREASE_TO_SHARP - convert between mark types (handy for different downstream tools).

Plus mark_mode (ADD vs REPLACE), mark_type, crease_value, clear_sharp/clear_crease, and a generate_preview that outputs a visible wireframe of the marked edges as its own TRIMESH (preview_thickness controls the tube size).

The warning that matters

The node's docs carry a big ⚠️ for a reason: color detection requires FACE/CORNER-domain vertex colors. That means the colors must live per-corner (per-face), not per-vertex (POINT domain) - because POINT-domain colors are shared at vertices, so two faces meeting at a vertex report the same color and there's nothing to detect. To feed this node correctly, sample colors with BD_SampleVoxelgridColors in face mode (which produces the CORNER domain). Get this wrong and FROM_COLORS silently finds nothing.

Outputs: the marked mesh, an edge_preview TRIMESH, edge_metadata (an EDGE_METADATA object you can feed to BD Blender Merge Planes or BD Combine Edge Metadata), and status.

Install

Pack install as usual:

cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt

(ComfyUI Manager → "BrainDead", restart.) It's a Blender node, so the recurring rule applies: a real Blender must be on the system (/usr/bin/blender, a sibling pack, or a bundled build you place yourself) - the README's "bundled" claim refers to scripts, not the binary. Keep ComfyUI current for the V3 API.

The typical pipeline shape: BD Planar Grouping (clean boundaries) → BD Blender Edge Marking (FROM_COLORS_AND_ANGLE) → BD Blender Merge Planes (delimit_sharp=True) - that's the pack's documented hard-edge preservation chain, and each node in it depends on the one before doing its job.

Category🧠BrainDead/Blender

Inputs (12)

NameTypeDefaultDescription
meshTRIMESH
operationCOMBOFROM_COLORS_AND_ANGLEEdge marking operation (combined mode detects both color and angle edges)
color_thresholdFLOAT0.150.01–1Color difference threshold (for FROM_COLORS)
angle_thresholdFLOAT300–180Angle threshold in degrees (for FROM_ANGLE)
mark_modeCOMBOADDADD to existing marks or REPLACE all
mark_typeCOMBOBOTHType of edge mark to apply
crease_valueFLOAT1.00–1Crease strength (for CREASE marking)
clear_sharpBOOLEANfalseClear sharp marks (for CLEAR/conversion ops)
clear_creaseBOOLEANfalseClear crease values (for CLEAR/conversion ops)
generate_previewBOOLEANtrueGenerate edge preview mesh (visible wireframe of marked edges)
preview_thicknessFLOAT0.00200.0005–0.02Thickness of preview edge tubes (mesh units)
timeoutoptINT12030–600Maximum processing time

Outputs (4)

NameTypeDescription
meshTRIMESH
edge_previewTRIMESH
edge_metadataEDGE_METADATA
statusSTRING