Nodes/ComfyUI libigl/Smooth Mesh
ComfyUI Node

Smooth Mesh

Smooth a mesh without watching it deflate

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
Smooth Mesh
  • trimesh
  • smoothed_mesh
  • info
backend

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 than lambda_ 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.

Categorygeompack/smoothing

Inputs (2)

NameTypeDefaultDescription
trimeshTRIMESH
backendCOMBOSmoothing algorithm. taubin=shrinkage-free (recommended), laplacian=fast but shrinks, hc_laplacian=low shrinkage, trimesh_*=lightweight alternatives

Outputs (2)

NameTypeDescription
smoothed_meshTRIMESH
infoSTRING