Smooth Mesh
Smooth a mesh without watching it deflate
- trimesh
- smoothed_mesh
- info
Every scan is noisy and every retopology is lumpy, and the answer in most mesh tools is a smoothing pass. This is the GeometryPack Smooth Mesh node, and the whole point of it is that you have a choice about how you smooth - because the naive way has a nasty habit. Plain Laplacian smoothing works by pulling each vertex toward its neighbors' average, and doing that enough times literally shrinks the mesh, like a balloon losing air. That's why the node's default backend is taubin, the shrinkage-free variant: it alternates a smoothing step with a slightly inflationary step so the shape holds its volume. The tooltip on the backend dropdown says it outright - taubin = shrinkage-free (recommended), laplacian = fast but shrinks, hc_laplacian = low shrinkage, trimesh variants = lightweight.
You feed it a TRIMESH, pick a backend, and get smoothed_mesh plus an info string. The parameters are backend-specific, so they change with your selection. The two you'll actually set on taubin/laplacian:
iterations- passes. More = smoother but slower, and eventually you're just melting the shape. 5 is a fine start.lambda_- smoothing strength per step. Higher = more aggressive per iteration.mu(taubin only) - the negative inflation factor that counteracts shrinkage. The tooltip gives you the stability rule:|mu|must be bigger thanlambda_for stability, and -0.53 is the standard pairing with a 0.5 lambda.
And cotangent_weight, which is a subtle but real quality knob: cotangent weights respect the mesh's actual geometry instead of treating every neighbor equally, which gives better results on irregular meshes - at the cost of being less stable on degenerate triangles. Default on, usually correct.
Where it fits
Smoothing is a cleanup step, and in a GeometryPack chain it belongs after repairs and before anything that bakes detail you care about - smooth before you decimate or bake, not after. The classic mistake is over-smoothing a scan to hide bad topology, then discovering you've also smoothed away the features. If the goal is de-noising a scan rather than general cleanup, keep iterations low and consider that the problem may be the mesh, not the smoothing.
Install
Standard pack install:
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
Or ComfyUI Manager → GeometryPack. Usual README caveats: experimental comfy-env/pixi install with a heavy first download, and fast-moving code where the author wants problems reported in Discussions.
The honest advice
Reach for taubin and only leave it if you have a reason. Laplacian exists for speed when shrinkage doesn't matter; taubin costs a little more compute and saves you from the deflated-balloon surprise. And if you're smoothing because the mesh is angular rather than noisy, consider that remeshing might be the better tool - smoothing rounds things off, remeshing gives you new topology with proper density. Different jobs, and this pack has both.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| backend | COMBO | Smoothing algorithm. taubin=shrinkage-free (recommended), laplacian=fast but shrinks, hc_laplacian=low shrinkage, trimesh_*=lightweight alternatives |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| smoothed_mesh | TRIMESH | — |
| info | STRING | — |