Nodes/ComfyUI libigl/Fill Holes GPU (backend)
ComfyUI Node

Fill Holes GPU (backend)

Hole filling on the GPU — fast, and it knows when to leave a hole alone

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
Fill Holes GPU (backend)
  • mesh
  • filled_mesh
  • info
perimeter0.030

Fill Holes GPU is the speed option in GeometryPack's Fill Holes family, and it's the one with a genuinely useful quirk: a size limit. Where most hole fillers gleefully close everything in sight, this backend takes a perimeter parameter - the maximum hole perimeter it's willing to fill, relative to the mesh's scale - and leaves anything bigger alone. That's exactly the behavior you want when a mesh has small scan artifacts (fill those) plus one big intentional opening, like a vase's mouth or the bottom of a cup. Fill the artifacts, don't slap a disk over the opening. There's no parameter for that distinction in most hole fillers, which is why this one earns its keep.

Under the hood it runs on the GPU (cumesh), which is what the pack's Fill Holes wrapper means by the GPU backend. For a big mesh full of small holes, GPU is where you want to be - the CPU backends get slow patching a hundred little gaps, and this one chews through them in parallel.

The inputs that matter

  • mesh - the TRIMESH in.
  • perimeter - maximum hole perimeter to fill, relative to mesh scale (default 0.03, range 0.001–100). This is your "fill the pockmarks, skip the mouth" dial. Crank it up to fill everything; keep it low when you have intentional openings to preserve.

Outputs: filled_mesh (the repaired TRIMESH) and info (a STRING report - which holes got patched, which were skipped).

Installing it

Same pack install as every node here:

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 ComfyUI. ComfyUI Manager works too (search "GeometryPack" or install via Git URL with https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git). The GPU backend means the pack's one-click comfy-env/pixi installer has to set up CUDA-adjacent tooling; if that path fails, the manual route is the README's "most reliable."

Where it fits - and where it doesn't

Reach for this one when you have many holes and want speed, or when you specifically need the perimeter cap to protect large openings. Don't reach for it when patch quality is the whole game - on big visible holes the result is a utilitarian fill, not a sculpted one. For a hole that's going to be seen up close on curved geometry, CGAL's fair option is the better patch; PyMeshFix is the dependable general-purpose default; and tiny artifacts on flat surfaces are IGL Fan's specialty at zero config cost. The info string will tell you what this one chose to fill, which is worth a glance the first time you run it. And as with the rest of the pack: young, fast-moving, occasionally breaking - update it before you debug your graph.

Categorygeompack/repair

Inputs (2)

NameTypeDefaultDescription
meshTRIMESH
perimeteroptFLOAT0.0300.001–100Maximum hole perimeter to fill. Relative to mesh scale.

Outputs (2)

NameTypeDescription
filled_meshTRIMESH
infoSTRING