BD Blender Planar Normals
Give a mesh that clean flat-panel look games actually want
- mesh
- mesh
- glb_path
- status
That stylized, low-poly "flat panel" look you see in polished indie and UGC games isn't just low triangle count - it's flat shading done right, where each visible plane has one consistent normal instead of noisy interpolated ones. BD Blender Planar Normals produces exactly that: it groups faces by angle threshold, assigns each group a single flat average normal as custom split normals, and marks the sharp edges between groups. What you get is a mesh that reads as crisp, faceted geometry in Unreal, Unity, or Blender.
This is the "finish" node of the pack's stylized pipeline. Where BD BlenderMergePlanes reduces geometry, this node works on the normals - so it's the right tool when you have a high-res quad mesh and want the flat-panel aesthetic without necessarily destroying the underlying geometry. The pack's docs call out that it saves a GLB with proper custom split normals, which is the part engines actually respect on import.
The input that matters
- angle_threshold (default 15°) - the one knob. Faces within this angle of each other get grouped into one flat panel. Lower = more groups, sharper facets (think crystal look). Higher = fewer groups, smoother. 15° is a sane stylized starting point; drop toward 5° for aggressive faceting.
- fill_holes (default true) - closes open boundary edges before grouping. Leave it on for generated meshes, which usually have ragged borders.
- timeout - Blender processing cap.
Outputs: the normal-fixed mesh (TRIMESH), a glb_path STRING to the saved GLB, and status.
Install and the Blender gotcha
Pack install, standard:
cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt
(Or ComfyUI Manager → "BrainDead", restart.) V3 API → update ComfyUI if the nodes don't register. Blender node → a real Blender must exist: the README's "bundled in lib/" claim is about scripts, not the binary. The code checks lib/blender/blender-5.0.1-linux-x64, sibling packs (GeometryPack/UniRig), then /usr/bin/blender. No Blender, no node.
Where people get surprised: they feed in a smooth organic mesh and the flat-panel result is much harder than they imagined - that's the point, but if you wanted subtlety, raise the angle threshold rather than blaming the node. Also, if your mesh has a baked texture you care about, this node changes normals (not UVs), so textures survive; but verify in the engine, because custom split normals can interact with some tangent-space normal maps in unexpected ways. For a pure geometry pass on organic characters you'd normally want BD BlenderRemesh or BD BlenderQuadDecimate first, then this on the result.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh | TRIMESH | — | |
| angle_threshold | FLOAT | 15.00.5–89 | Faces within this angle of each other are grouped into one flat panel. Lower = more groups / sharper facets. Higher = fewer groups / smoother look. |
| fill_holesopt | BOOLEAN | true | Fill open boundary edges before processing |
| timeoutopt | INT | 30060–1800 | Max Blender processing time in seconds |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| mesh | TRIMESH | — |
| glb_path | STRING | — |
| status | STRING | — |