Check Normals
Your mesh's normals are probably lying — this node proves it
- trimesh
- info
A mesh's faces are one-sided. Each triangle has a front and a back, defined by the order of its vertices (winding), and "normals" are just the arrows pointing out of the front. When a scan, a generator, or a careless export leaves some faces wound the other way, you get the classic failure signs: surfaces that look black or blown out when rendered, holes that appear in weird places, booleans and slicers that misbehave. Check Normals is the diagnostic that tells you whether that's your problem - before you start fixing a mesh that's actually fine.
It's about as minimal a node as GeometryPack makes. One input (trimesh), one output (info, a STRING), zero parameters. You drop it into the graph, connect your mesh, and read the report - a verdict on whether the faces are consistently oriented and how many are flipped, plus the usual stats. Wire the info string into a text-display node or just let it land in the console; you're here for the diagnosis, not the output mesh.
Why you'd reach for it
Normals are the silent prerequisite for half of this pack. Before you boolean, before you fill holes, before you send something to a 3D printer or a game engine, you want to know the mesh is coherent. This is the "check" that pairs with the "fix": run Check Normals, and if the report comes back dirty, hand the same mesh to a Fix Normals node and re-check. Two-node loop, done in seconds, and it'll save you from chasing weird artifacts for an hour.
Installing it
Same pack install as every GeometryPack node:
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 is fine too - search "GeometryPack" or install via Git URL with https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git. The pack's one-click path uses the experimental comfy-env package and drags in pixi; the README's manual route is the one the author vouches for.
The gotcha to know about
Check Normals is a passive observer - it only reports. If the node's idea of "correct" doesn't match your intent (say, you want the normals pointing inward for a special effect, or a "closed" mesh that's actually open at the bottom), the report is still just data. Don't mistake a green report for a guarantee the mesh is watertight; that's a different analysis. And since the pack is a fast-moving, occasionally-breaking WIP (the author says so himself), if this node errors out on load, an update or a re-run of install.py usually clears it - the dependency set underneath it is still young.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| info | STRING | — |