Nodes/ComfyUI libigl/Remesh Geogram Smooth (backend)
ComfyUI Node

Remesh Geogram Smooth (backend)

Geogram smooth remesh — the Lloyd-relaxed uniform triangulation

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
Remesh Geogram Smooth (backend)
  • trimesh
  • remeshed_mesh
  • info
nb_points5000
nb_lloyd_iter5
nb_newton_iter30
newton_m7

Geogram (the library behind the Vorpaline remesher in MeshLab) is a serious piece of remeshing machinery, and the "smooth" flavor is its uniform-workhorse mode. Give it a mesh and a target vertex count and it produces a beautifully regular, evenly spaced triangulation - the kind of clean uniform mesh that's a pleasure to sculpt on, subdivide, or throw into a UV unwrapper. It's the backend you pick when you want "same surface, nicer topology, predictable vertex budget" rather than any particular style.

It's the geogram_smooth backend of the main Remesh dispatcher node, dev-only in the schema like all the backends. You'll normally reach it from the dropdown.

How it works

Geogram's approach is elegant: it drops a set of sample points on the surface - nb_points of them - then runs a Lloyd relaxation (iteratively moving each sample to the centroid of its Voronoi cell, which spreads the points out evenly) followed by Newton optimization to minimize a quality energy while keeping samples glued to the surface. The mesh is then re-triangulated from those relaxed points. The result is uniform by construction: even edge lengths, good angles, no slivers. The parameters are the point budget and how hard the relaxation/optimization works.

Inputs and outputs

  • trimesh (TRIMESH) - the mesh to remesh.
  • nb_points (default 5000) - target vertex count. 0 means "same count as the input," which is a handy trick: you keep your current density but get it rebuilt uniformly. Otherwise, this is the number you actually set - it's your resolution budget.
  • nb_lloyd_iter (default 5) - Lloyd relaxation iterations. More = more even point distribution.
  • nb_newton_iter (default 30) - Newton optimization iterations refining point placement. The default is already high.
  • newton_m (default 7) - L-BFGS Hessian evaluations. Leave it.

Outputs: remeshed_mesh (TRIMESH) and info (STRING) with the report.

Installing

Same pack, same drill: ComfyUI Manager → GeometryPack, or

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

Restart after. Geogram runs inside the pack's isolated comfy-env environment, which install.py (the pixi-backed installer) builds.

When to reach for it vs. its sibling

GeogramSmooth is the uniform one; GeogramAniso is the anisotropic one (stretches triangles to follow curvature). If you want regular, even triangles regardless of shape, use smooth. If you want long thin triangles along creases and flat round ones elsewhere - a more efficient use of your polygon budget on organic shapes - use aniso. The smooth mode is also the more forgiving of the two: fewer parameters, harder to break.

Troubleshooting

  • Too many/few vertices - that's nb_points, plain and simple. It's a budget, not a promise: complex topology can make the final count land nearby but not exact.
  • Slow - Newton iterations cost. Dropping nb_newton_iter speeds it up noticeably; the defaults are already quite thorough.
  • Stale-workflow validation errors are the pack-wide gotcha - if a saved graph with the Remesh node throws, delete and re-add it, then re-pick geogram_smooth.

The one real caveat: Geogram re-samples, so the output is a re-triangulation, not a refinement. Fine detail can soften on high-iteration settings. For pure uniform topology it's hard to beat.

Categorygeompack/remeshing

Inputs (5)

NameTypeDefaultDescription
trimeshTRIMESH
nb_pointsINT50000–1000000Target number of output vertices. 0 = same count as input.
nb_lloyd_iterINT51–50Lloyd relaxation iterations (initial uniform distribution).
nb_newton_iterINT301–100Newton optimization iterations (refines point placement).
newton_mINT71–20Number of L-BFGS Hessian evaluations.

Outputs (2)

NameTypeDescription
remeshed_meshTRIMESH
infoSTRING