Sharpen Non Iterative (backend)
The one-pass sharpen for when you don't want to babysit iterations
- trimesh
- sharpened_mesh
- info
Every other sharpening backend in the GeometryPack pack has an iterations slider, which means every other backend has a way to stall your workflow while you tune it. Sharpen Non Iterative deliberately skips all of that: it's a single-pass bilateral filter on the face normals, done in one go, no loop to converge. If your mesh is just a little soft and you want a fast, predictable sharpen without the tuning spiral, this is the node.
It's the non_iterative option in the Sharpen Mesh dropdown, or searchable directly as "Sharpen Non Iterative (backend)".
How it works
The mechanism is a bilateral filter applied to normals in one pass, built on the classic Jones et al. SIGGRAPH 2003 formulation. A bilateral filter is just a weighted average where the weights depend on two things: spatial closeness and a feature-preserving term. Here, each face normal is averaged with neighbors within a spatial neighborhood, but the contribution of each neighbor is damped by how far its plane is from the target vertex - the "projection distance." Faces close to the same plane contribute a lot; faces pulling the vertex in a different direction contribute almost nothing. One pass, edges survive, noise gets damped.
Two inputs do the whole job:
sigma_f(default 1, 0.001–10) - the spatial sigma as a multiple of average edge length. It controls the spatial extent of the filter; face neighbors are searched within a radius of 2×sigma_f. Larger = smoother over a wider area.sigma_g(default 1, 0.001–10) - the influence sigma. This one controls sensitivity to projection distance, i.e. how far a vertex is allowed to move toward each face's plane. Smaller = more feature-preserving, since only nearly-coplanar faces get to tug at the vertex.
Inputs and outputs
Just trimesh, sigma_f, and sigma_g. Outputs are sharpened_mesh (TRIMESH) and info (STRING). Not much room to go wrong, which is the point.
When to pick it
Honestly? This is the sharpen I reach for when the mesh is already decent and I just want a slight, safe lift before baking or exporting. two_step gives you stronger CAD creases, l0_minimize flattens hard, but Non Iterative is the low-commitment option. The one thing to watch: since there's no iteration to "grow" the effect, a very noisy mesh will still look noisy - this node sharpens, it doesn't reconstruct. If your input needs real cleanup, use guided_normal first.
Install is the pack standard - ComfyUI Manager search "GeometryPack", or git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack into custom_nodes/, then pip install -r requirements.txt --upgrade and python install.py. Restart ComfyUI and you're set. It's a young, WIP pack with an experimental comfy-env/pixi installer, so the first launch may be slow - that's normal, not a hang.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| sigma_f | FLOAT | 1.00.001–10 | Spatial sigma as multiple of average edge length (Jones et al. SIGGRAPH 2003). Controls spatial extent of the bilateral filter. Face neighbors are searched within radius 2*sigma_f. Larger = smoother. |
| sigma_g | FLOAT | 1.00.001–10 | Influence sigma as multiple of average edge length. Controls sensitivity to projection distance (how far the vertex moves toward each face plane). Smaller = more feature-preserving. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sharpened_mesh | TRIMESH | — |
| info | STRING | — |