Smooth Taubin (backend)
The anti-shrink fix for Laplacian's biggest flaw
- trimesh
- smoothed_mesh
- info
Plain Laplacian smoothing has one famous flaw: it shrinks the mesh. Every pass pulls vertices toward their neighbors, corners round off, and your model quietly loses volume. Taubin smoothing is the classic answer - it interleaves the smoothing pass with an inflation pass of opposite sign, so the shrink gets cancelled before it accumulates. You get the noise reduction of Laplacian without waking up to find your sculpture lost ten percent of its volume.
It's the taubin option in the Smooth Mesh dropdown, or searchable directly as "Smooth Taubin (backend)".
How it works
Each iteration runs two steps. First, the standard Laplacian move with a positive strength lambda_ - vertices drift toward their neighbors, shrinking and rounding. Then a second pass with a negative factor mu - a "shrink, then expand" dance - pulls back against the volume loss. The trick that makes it stable is the relationship between the two: |mu| must be larger than lambda_ (the tooltip gives the classic pairing: mu = -0.53 for lambda_ = 0.5). Violate that and the correction overshoots or undershoots and the result can deform instead of smoothing.
Three inputs:
iterations(default 5, 1–200) - how many shrink/inflate pairs to run. More passes = smoother, and since the pair is self-correcting, more of them is safer than it is with plain Laplacian.lambda_(default 0.5, 0.01–1) - smoothing strength per step. Higher = more aggressive smoothing per iteration.mu(default -0.53, -1 to -0.01) - the inflation factor. Keep it negative and keep|mu| > lambda_or the whole stability argument collapses.
Inputs and outputs
trimesh plus those three. Outputs are smoothed_mesh (TRIMESH) and info (STRING). Nothing else to fiddle with.
When to use it
Reach for Taubin whenever you want to keep a mesh's overall shape and just take the roughness off - a scanned object you want to print at the same size, a surface you're going to keep as-is rather than remesh. If you only need to prep something for remeshing anyway, plain Laplacian is fine and cheaper. And if you ever wonder "why is my model smaller after smoothing," this node is the answer to that prayer.
Same install as the whole pack: ComfyUI Manager search "GeometryPack", or git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack into custom_nodes/, pip install -r requirements.txt --upgrade, python install.py, restart. The experimental comfy-env/pixi installer means the first run downloads a lot - let it finish. This is a young GPL-3.0 pack in active development, so treat any weirdness as a bug to report to the author on GitHub rather than a skill issue on your end.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| iterations | INT | 51–200 | Number of smoothing passes. More = smoother but slower. |
| lambda_ | FLOAT | 0.500.01–1 | Smoothing strength per step. Higher = more aggressive smoothing per iteration. |
| mu | FLOAT | -0.53-1–-0.01 | Inflation factor (negative). Counteracts shrinkage from lambda. Must satisfy |mu| > lambda for stability. Typical: -0.53 for lambda=0.5. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| smoothed_mesh | TRIMESH | — |
| info | STRING | — |