Nodes/ComfyUI libigl/Fix Normals
ComfyUI Node

Fix Normals

One node, five ways to un-flip your normals — this is the wrapper you actually place

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
Fix Normals
  • trimesh
  • fixed_mesh
  • info
backend

Flipped normals are the gremlin of mesh work: your model renders with black or blown-out faces, booleans and slicers act drunk, and nothing in the geometry "looks" wrong when you stare at the wireframe. Fix Normals is the multi-backend repair node that re-orients the faces consistently, and it's the one you'll actually place in a workflow. The individual backend nodes - Fix Normals IGL Raycast, Fix Normals IGL Signed Dist, and the rest - are what it dispatches to under the hood via ComfyUI's GraphBuilder, which is why they each get their own page but you'll rarely drop one in by hand.

The whole interface is one choice: the backend dropdown, a dynamic COMBO that lists the algorithms this pack ships for the job (trimesh, libigl BFS, libigl winding, libigl raycast, libigl signed distance). Pick one, wire in your mesh, done. The tooltip frames it as "normal fixing algorithm and backend," and that's the whole node. Everything else is default.

The inputs and outputs

  • trimesh - the mesh with the problem.
  • backend - the algorithm dropdown, and genuinely the only thing you should fiddle with.
  • fixed_mesh - the repaired TRIMESH.
  • info - a STRING report (how many faces were flipped, what it did).

Which backend? If the mesh is roughly closed and clean, raycast or signed-distance give the most robust "everything faces outward" result; the BFS/winding options are lighter and faster. The practical move is: try the default, check info, and if the report says it barely touched anything, switch backends and re-run. Different algorithms see the same mesh differently.

Installing it

Same install as the whole pack:

cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git
cd ComfyUI-GeometryPack
pip install -r requirements.txt --upgrade
python install.py

Restart ComfyUI. ComfyUI Manager works too - search "GeometryPack" or install via Git URL with https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git. The one-click installer is experimental (comfy-env, pulls in pixi); the README's manual route is the reliable one.

Where people get caught

Order of operations matters. Fix Normals re-orients faces, but it doesn't repair the topology - if your mesh is non-manifold or full of degenerate faces, normal fixing can only do so much, and some of its siblings in the repair shelf (Degenerate Faces, Fill Holes) should run first. Also, this node works on orientation consistency, not on "which side is the outside" - if your whole mesh is deliberately inside-out, it may not do what you imagine. Check the info string and, when in doubt, run Check Normals before and after to prove the fix. And as ever with this young, fast-moving pack: update it before you blame your graph for a load error.

Categorygeompack/repair

Inputs (2)

NameTypeDefaultDescription
trimeshTRIMESH
backendCOMBONormal fixing algorithm and backend

Outputs (2)

NameTypeDescription
fixed_meshTRIMESH
infoSTRING