Decimate Pro (backend)
Slim down a million-face scan without wrecking the silhouette
- trimesh
- decimated_mesh
- info
Photogrammetry and scans love to hand you a two-million-triangle mesh when your target is a game engine or a slicer that will choke on it. Decimation is how you get from there to something usable, and Decimate Pro is the "give me a good result with minimal fuss" backend of the pack's Decimate family. It's the node you reach for when you want the mesh reduced but you don't want to babysit a pile of parameters - three inputs, one of them is the real knob.
target_reduction- the control. It's the fraction of faces to remove, and the tooltip is worth quoting because everyone flips it the wrong way initially: 0.5 reduces to ~50% of the original faces, 0.9 reduces to ~10%. People who think of it as "keep this fraction" get surprised. Read it as "remove this fraction."feature_angle- edges whose dihedral angle exceeds this (in degrees) are treated as features and preserved. This is how your hard edges survive the slimming. Too low and you smooth away detail; too high and the decimator chews through your creases. 15° is a sensible start.preserve_topology- keeps the mesh genus (the holes and handles) intact while decimating. Defaults on; if you're decimating for a topology cleanup, you might turn it off.
Output is decimated_mesh plus an info string - and the info is worth reading here, because it tells you the actual face count you landed on. That's your sanity check against the reduction math.
Where it fits
Decimation is a downstream step: it's what you do to a mesh you're about to ship, render at scale, or put into a game engine. In a GeometryPack chain it belongs after cleanup and remeshing, not before - decimating a broken mesh just gives you a smaller broken mesh. The classic pipeline is Load → Fix Normals → maybe remesh → Decimate → Save. And if you're decimating a quad mesh because your remesher made one, remember the packing: quad decimation isn't always face-count-faithful the way triangle decimation is.
Install
Ships with the pack; install once, get everything:
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 caveats: experimental comfy-env/pixi install with a heavy first download; fast-moving repo, and the author asks for reports in Discussions.
The honest take
Decimate Pro is the "good default" decimator, but if your mesh has big flat regions and you care about keeping them flat, the pack's Quadric Edge Collapse backend with planar_quadric on is the more surgical choice. And the eternal decimation lesson: a low-poly version is a different model, not a smaller copy of the same one. If you need it to look identical, you don't want 10% of the faces - you want a LOD chain where the highest version stays intact.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| target_reduction | FLOAT | 0.500.01–0.99 | Fraction of faces to REMOVE. 0.5 = reduce to ~50%% of original faces, 0.9 = reduce to ~10%% of original. |
| feature_angle | FLOAT | 150–180 | Feature angle threshold (degrees). Edges with dihedral angle above this are preserved. |
| preserve_topology | COMBO | true | Preserve mesh topology (genus) during decimation. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| decimated_mesh | TRIMESH | — |
| info | STRING | — |