Nodes/BrainDead Nodes/BD CuMesh Simplify
ComfyUI Node

BD CuMesh Simplify

Turn a 200k-triangle blob into something a game can eat

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD CuMesh Simplify
  • mesh
  • mesh
  • status
target_faces5000
remeshfalse
remesh_resolution512
remesh_band1.0
preserve_sharp_edges_remeshtrue
remesh_sharp_angle30
project_back0.9
fill_holestrue
fill_holes_perimeter0.030
remove_duplicate_facestrue
repair_non_manifoldtrue
remove_small_componentstrue
small_component_threshold0.0000
multi_stagetrue

Every image-to-3D model dumps out a mesh with an absurd triangle count and questionable topology - the "extremely low-quality 3d assets" problem the community keeps calling out isn't the look, it's the geometry underneath. BD CuMesh Simplify is the BrainDead node that fixes the geometry side on the GPU. Feed it the triangle soup from TRELLIS2 or Hunyuan3D, say "I want 5,000 faces," and it edge-collapses its way down to something a game engine, a 3D printer, or a Blender session will actually accept.

It's CUDA-only, using the cumesh library. That's both its superpower (fast, proper edge-collapse with BVH acceleration) and its biggest gotcha, which we'll get to.

What it actually does

target_faces is the number you care about (default 5,000). It's a simplification target, not a guarantee - the mesh will land near it. Everything else is cleanup and topology strategy:

  • remesh (default off) - optionally runs a dual-contouring remesh before simplifying, for cleaner topology. When on, remesh_resolution (voxel grid, default 512), remesh_band, preserve_sharp_edges_remesh, remesh_sharp_angle, and project_back (how much to snap remeshed vertices back to the original surface, 0.9 is a good sweet spot) all come into play. VRAM scales with resolution³, so don't just crank it.
  • Cleanup toggles: fill_holes, remove_duplicate_faces, repair_non_manifold, remove_small_components (+ a small_component_threshold). Defaults are sensible - leave them on unless a pass is destroying detail you want.
  • multi_stage (default on) - progressive simplification: 3× target → clean → 1× target → clean. Better topology than a single pass, slightly slower. Keep it on.

Outputs are just mesh (TRIMESH) and status. Wire the result into BD CuMesh Quad Remesh, a Blender node, or export.

The two gotchas that will actually bite you

1. cumesh is not in the pack's requirements.txt. The BrainDead requirements install Pixal3D's dependencies (moge, utils3d, pipeline, natten), not this. If cumesh isn't in your environment the node just returns ERROR: cumesh not installed - you need to install it yourself, and it's a compiled CUDA package, so this is where a missing CUDA toolkit or an ABI mismatch shows up. If you came from ComfyUI Manager thinking dependencies were handled, this is the exception.

2. Vertex colors are not preserved. The README flatters it as "simplification with color preservation," but the node's own docs are explicit: CuMesh operates on geometry only. If your mesh's color lives in vertex colors (very common for TRELLIS2 output), you will get a clean but colorless mesh back. When you need colors to survive, reach for BD Blender Decimate with a color_field instead - that's the intended color-aware path in this pack.

Installing and running

ComfyUI Manager → search "BrainDead" → install. Manual:

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

Then, separately, pip install cumesh (CUDA build).

The recipe the README recommends for TRELLIS2 output: enable remesh + preserve_sharp_edges_remesh for cleaner topology, keep the cleanup toggles on, target 5k–50k faces depending on the asset, and use Blender Decimate when texture/color transfer matters. For a quick win on a typical character mesh, 5–10k faces is a solid floor; you can push to 50k+ for hero assets.

Category🧠BrainDead/Mesh

Inputs (15)

NameTypeDefaultDescription
meshTRIMESH
target_facesINT5000100–1000000Target number of faces after simplification
remeshBOOLEANfalseApply dual-contouring remesh before simplification for cleaner topology
remesh_resolutionINT512128–8192Voxel grid resolution for remeshing. Higher = more detail but slower. VRAM usage scales with resolution^3.
remesh_bandFLOAT1.00.1–5Narrow band width in voxel units for remeshing
preserve_sharp_edges_remeshBOOLEANtruePreserve sharp edges during remeshing (requires CuMesh PR #19)
remesh_sharp_angleFLOAT3010–90Angle threshold (degrees) for sharp edge detection during remeshing
project_backFLOAT0.90–1How much to project remeshed vertices back to original surface (0=none, 1=full)
fill_holesBOOLEANtrueFill small holes before simplification
fill_holes_perimeterFLOAT0.0300.001–0.5Maximum hole perimeter to fill (mesh units)
remove_duplicate_facesBOOLEANtrueRemove duplicate/degenerate faces
repair_non_manifoldBOOLEANtrueRepair non-manifold edges
remove_small_componentsBOOLEANtrueRemove small disconnected mesh components
small_component_thresholdFLOAT0.00000–0.1Volume threshold for removing small components (as fraction of total)
multi_stageBOOLEANtrueProgressive simplification: 3x target → clean → 1x target → clean. Better topology than single pass.

Outputs (2)

NameTypeDescription
meshTRIMESH
statusSTRING