Extensions/ComfyUI libigl
ComfyUI Extension

ComfyUI libigl

libigl geometry processing wrapper for ComfyUI - mesh manipulation and analysis nodes

By PozzettiAndrea·Created 10 months ago·Updated 3 days ago· 218
PozzettiAndrea/ComfyUI-GeometryPack
Nodes116
On cloudLocal install
Categorygeompack/repair, geompack/visualization
Stars218
Updated3 days ago

Nodes (116)

Add Normals to PointCloud

Point clouds without normals are half a cloud

geompack/repair
Backdraft View

Turn a 3D mesh into a turnaround sheet — the 2D/3D bridge

geompack/visualization
Boolean Blender Exact (backend)

Carve one mesh out of another, the exact way — no Blender window needed

geompack/boolean
Check Normals

Your mesh's normals are probably lying — this node proves it

geompack/repair
Combine Meshes

Stitch up to four meshes into one — no re-exporting, no Blender

geompack/combine
Combine Meshes (Batch)

Merge an entire list of meshes in one node — the one that scales

geompack/combine
Compute Normals

Give a bare mesh its normals back so it renders like it's supposed to

geompack/repair
Connected Components

One mesh file, many floating parts — this splits them apart

geompack/analysis
Create Primitive

The fastest way to get a mesh into your graph

geompack/primitives
Decimate Pro (backend)

Slim down a million-face scan without wrecking the silhouette

geompack/decimation
Decimate Fast Simplification (backend)

Reduce by a fraction, not a target

geompack/decimation
Decimate Mesh

Five ways to shrink a mesh's polygon count

geompack/decimation
Decimate Quadric Edge Collapse (backend)

Collapse edges, keep the shape honest

geompack/decimation
Decimate Vertex Clustering (backend)

The brutal decimation option — and the one that survives broken meshes

geompack/decimation
Degenerate Faces

Your mesh has invisible faces, and they're quietly breaking your tools

geompack/analysis
Depth + Normals to Mesh

Turn a normal map into an actual 3D mesh, without leaving ComfyUI

geompack/texture_remeshing
Extract Largest Component

Mesh fell apart into islands? Grab the main body and move on

geompack/analysis
Extract Skeleton

Turn a mesh into its bones

geompack/skeleton
Fill Holes

Six hole-filling algorithms, one dropdown

geompack/repair
Fill Holes GPU (backend)

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

geompack/repair
Fill Holes IGL Fan (backend)

Mesh in, patched mesh out

geompack/repair
Fill Holes PyMeshFix (backend)

The industry default for hole filling, now a ComfyUI node

geompack/repair
Fill Holes PyMeshLab (backend)

MeshLab's hole filler, wrapped for ComfyUI

geompack/repair
Fill Holes Trimesh (backend)

The one-input hole filler that's already on your machine

geompack/repair
Fix Normals

One node, five ways to un-flip your normals — this is the wrapper you actually place

geompack/repair
Fix Normals IGL BFS (backend)

When half your mesh is inside-out, this fixes it

geompack/repair
Fix Normals IGL Raycast (backend)

The raycast way to make every face point outward

geompack/repair
Fix Normals IGL Signed Dist (backend)

The signed-distance normal fixer for meshes too messy for raycasts

geompack/repair
Fix Normals IGL Winding (backend)

The winding-number hammer

geompack/repair
Fix Normals Trimesh (backend)

Invisible faces? Flipped normals are almost always the culprit

geompack/repair
Fix Self Intersections (Removal)

The blunt-force cure for self-intersecting meshes

geompack/repair
Get Mesh Filename

The tiny node that keeps your batch files named properly

geompack/io
Load Mesh

Getting a real mesh into ComfyUI

geompack/io
Load Mesh Batch

Load a whole folder of meshes in one go

geompack/io
Load Mesh (Blender)

Read .blend files without opening Blender

geompack/io
Load Mesh (FBX)

The FBX importer that goes through Blender to get there

geompack/io
Load Mesh Batch (Glob)

Load a batch of meshes with one wildcard string

geompack/io
Load Mesh (Path)

The loader that takes a path as a plain string

geompack/io
Merge Vertices

The cleanup step your watertight check quietly depends on

geompack/repair
MeshFix

The one-click-ish mesh doctor for wrecked scans

geompack/repair
Mesh from Skeleton

Give a skeleton some flesh so you can see it

geompack/skeleton
Mesh Info

The one-line sanity check before you trust anything downstream

geompack/analysis
Mesh Quality

A numeric quality score you can actually wire into logic

geompack/analysis
Mesh to Mesh Distance

How far off is your reconstruction? Now it's a number

geompack/distance
Mesh to Point Cloud

When you want points, not polygons

geompack/conversion
Normalize to BBox

The normalize step every 3D generation workflow quietly assumes

geompack/transforms
Open Edges

Find the holes in your mesh before they cost you a remesh

geompack/analysis
ParaView Filter

Scientific visualization filters on your meshes, without ParaView

geompack/paraview
Point to Mesh Distance

Stamp a signed distance field onto your point cloud

geompack/distance
Preview Gaussian

Actually look at a gaussian splat before you build on it

geompack/visualization
Preview Mesh (Three.js)

The interactive 3D viewer every GeometryPack workflow ends in

geompack/visualization
Preview Mesh (Analysis)

A viewer with buttons that compute things on your mesh

geompack/visualization
Preview Mesh Dual

Before and after, in one viewport, on the same colormap

geompack/visualization
Preview Mesh Multi

Put up to four meshes in one viewport and actually compare them

geompack/visualization
Preview Mesh UV

The UV check you do before you paint anything

geompack/visualization
Preview Mesh

Actually see your mesh before you export it

geompack/visualization
Preview Mesh Batch (VTK)

Flip through a whole batch of meshes in one scientific viewer

geompack/visualization
Reconstruct Alpha Shape (backend)

Alpha-shape reconstruction — the dial that trades tight fit against holes

geompack/reconstruction
Reconstruct Ball Pivoting (backend)

Ball pivoting reconstruction — the detail keeper that leaves holes

geompack/reconstruction
Reconstruct Convex Hull (backend)

Convex hull reconstruction — the fastest way to wrap your points in plastic

geompack/reconstruction
Reconstruct Poisson (backend)

The watertight one — Poisson reconstruction that turns noisy points into a printable surface

geompack/reconstruction
Reconstruct Surface

Point cloud to mesh in one dropdown — Poisson, ball pivoting, alpha shape, or hull

geompack/reconstruction
Remesh

One remesh node, fifteen algorithms — stop juggling mesh tools

geompack/remeshing
Remesh Blender (legacy)

Remesh Blender — Blender's voxel and remesh modifiers, served through ComfyUI

geompack/remeshing
Remesh Blender Blocks (backend)

Blender blocks remesh — the voxel chunky look, on purpose

geompack/remeshing
Remesh Blender Sharp (backend)

Blender sharp remesh — uniform quad-ish topology that keeps its edges

geompack/remeshing
Remesh Blender Voxel (backend)

Blender voxel remesh — the always-watertight backend for print and boolean prep

geompack/remeshing
Remesh Geogram Anisotropic (backend)

Geogram anisotropic remesh — triangles that stretch along the shape's curves

geompack/remeshing
Remesh Geogram Smooth (backend)

Geogram smooth remesh — the Lloyd-relaxed uniform triangulation

geompack/remeshing
Remesh GPU (backend)

Remesh GPU — CuMesh dual contouring, the same engine TRELLIS2 uses

geompack/remeshing
Remesh Instant Meshes (backend)

Field-aligned quad remeshing that actually respects your shape

geompack/remeshing
Remesh MMG (backend)

Remesh MMG — the size-map adaptive remesher for engineering-grade control

geompack/remeshing
Remesh PMP Adaptive (backend)

Remesh PMP adaptive — small triangles where it's curvy, big where it's flat

geompack/remeshing
Remesh PMP Uniform (backend)

Remesh PMP uniform — one target edge length, everywhere, done well

geompack/remeshing
Remesh PyMeshLab (backend)

Remesh PyMeshLab — the default isotropic remesher you'll actually use

geompack/remeshing
Remesh QuadriFlow (backend)

Quad-dominant remeshing without leaving ComfyUI

geompack/remeshing
Remesh QuadWild (backend)

Turning messy scans into clean quad meshes

geompack/remeshing
Remesh with Texture

Remesh without losing the paint job

geompack/texture_remeshing
Remove Degenerate Faces

Remove Degenerate Faces — the invisible cleanup that keeps geometry libraries from exploding

geompack/repair
Save Mesh

Getting your processed mesh back out of ComfyUI

geompack/io
Save Meshes to Folder

Get your meshes out of ComfyUI and onto disk, numbered

geompack/io
Sharpen Fast Effective (backend)

Sharpen Fast Effective — the cheap, fast way to crisp up a blobby mesh

geompack/smoothing
Sharpen Guided Normal (backend)

Edge-preserving sharpen with actual dials

geompack/smoothing
Sharpen L0 Minimize (backend)

Flatten a mesh into clean CAD plates

geompack/smoothing
Sharpen Libigl Unsharp (backend)

Unsharp masking, except the image is a mesh

geompack/smoothing
Sharpen Mesh

The one dropdown that picks your 3D sharpening backend

geompack/smoothing
Sharpen Non Iterative (backend)

The one-pass sharpen for when you don't want to babysit iterations

geompack/smoothing
Sharpen Two Step (backend)

The CAD-edge champ hiding in the dropdown

geompack/smoothing
Sharpen Unsharp Mask (backend)

Sharpen a mesh the way you sharpen an image

geompack/smoothing
Skeleton Edge Collapse (backend)

Extracting a curve skeleton

geompack/skeleton
Skeleton Teasar (backend)

The skeleton algorithm that loves trees and veins

geompack/skeleton
Skeleton Vertex Clusters (backend)

The fast-and-rough route to a medial axis

geompack/skeleton
Skeleton Wavefront (backend)

Find the spine of a mesh by sending out waves

geompack/skeleton
Smooth HC Laplacian (backend)

Zero knobs, fixed shrinkage, just smooth

geompack/smoothing
Smooth Laplacian (backend)

The classic, and why your mesh shrinks

geompack/smoothing
Smooth Mesh

Smooth a mesh without watching it deflate

geompack/smoothing
Smooth Taubin (backend)

The anti-shrink fix for Laplacian's biggest flaw

geompack/smoothing
Smooth Trimesh Laplacian (backend)

The smoothing backend that quietly shrinks your mesh

geompack/smoothing
Smooth Trimesh Taubin (backend)

Smoothing that doesn't shrink your model

geompack/smoothing
Split By Field

Carve one mesh into many, using the labels it already has

geompack/combine
Subsample Point Cloud

Put your point cloud on a diet before it eats your RAM

geompack/conversion
Depth Map to Mesh

Turn a depth map or mask into an actual mesh

geompack/texture_remeshing
Transform Mesh

Move, spin, mirror, and line your mesh up — without touching Blender

geompack/transforms
UV Blender Cube (backend)

Fast, blocky UVs for hard-surface and rocks

geompack/uv
UV Blender Cylinder (backend)

The unwrap for everything round and vertical

geompack/uv
UV Blender Smart (backend)

Blender's general-purpose unwrap, in your graph

geompack/uv
UV Blender Sphere (backend)

Globes, blobs, and the polar pinches

geompack/uv
UV CuMesh (backend)

GPU UV unwrapping, because xatlas was getting old

geompack/uv
UV libigl ARAP (backend)

The unwrap that actually cares about distortion

geompack/uv
UV libigl Harmonic (backend)

The clean parametrization that pins your boundary to a circle

geompack/uv
UV libigl LSCM (backend)

The angle-preserving UV unwrap hiding behind GeometryPack's dropdown

geompack/uv
UV Unwrap

Nine UV unwrappers behind one dropdown

geompack/uv
UV Xatlas (backend)

The automatic UV unwrap that game engines trust

geompack/uv
Visualize Normal Field

See which way your normals point before they bite you

geompack/repair
Refine Mesh

One node to decimate, subdivide, and smooth any mesh

geompack/remeshing
Scramble Int Field

Make segmentation colors actually readable

geometrypack/analysis
Readme

[!WARNING] Warning, uses experimental package comfy-env to attempt a one click isolated install. Will download and use pixi package manager.

ComfyUI-GeometryPack

Installation

Three options, in order of speed → reliability:

  1. ComfyUI Manager (recommended) — search for GeometryPack in the Manager and click Install from the highest version displayed. If that doesn't work, try nightly.
  2. Manager via Git URL — in ComfyUI Manager: "Install via Git URL" with https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git.
  3. Manual (most reliable):
    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
    

Please report any problems you hit during installation or use of my nodes — open a Discussion or Issue. Very grateful for your help! 🙏


Professional geometry processing nodes for ComfyUI. Load, analyze, remesh, unwrap, and visualize 3D meshes directly in your workflows.

<div align="center"> <a href="https://pozzettiandrea.github.io/ComfyUI-GeometryPack/"> <img src="https://pozzettiandrea.github.io/ComfyUI-GeometryPack/gallery-preview.png" alt="Workflow Test Gallery" width="800"> </a> <br> <b><a href="https://pozzettiandrea.github.io/ComfyUI-GeometryPack/">View Live Test Gallery →</a></b> </div>

Some previews

https://github.com/user-attachments/assets/c2e393ba-fb57-4a46-b772-31c4b01f47f8

https://github.com/user-attachments/assets/b1bcd570-719f-4be5-868d-f72c9f1f4c10

https://github.com/user-attachments/assets/607e6b29-a8d4-4346-873a-5bd6b140bdba

https://github.com/user-attachments/assets/7718a5d7-cd5b-47d3-874c-29ada4320694

Community

Questions or feature requests? Open a Discussion on GitHub.

Join the Comfy3D Discord for help, updates, and chat about 3D workflows in ComfyUI.

Multi-Backend Nodes

Each of these nodes presents a single UI with a backend selector dropdown. Under the hood, ComfyUI's GraphBuilder dispatches to hidden backend-specific nodes, enabling cross-environment execution (main, Blender, GPU, CGAL).

| Node | Backends | |------|----------| | Remesh | pymeshlab_isotropic, instant_meshes, quadriflow, mmg_adaptive, geogram_smooth, geogram_anisotropic, pmp_uniform, pmp_adaptive, quadwild, cgal_isotropic, blender_voxel, blender_smooth, blender_sharp, blender_blocks, gpu_cumesh | | Decimate Mesh | quadric_edge_collapse, fast_simplification, vertex_clustering, cgal_edge_collapse, decimate_pro | | Fill Holes | trimesh, pymeshlab, pymeshfix, igl_fan, cgal, gpu_cumesh | | Smooth Mesh | taubin, laplacian, hc_laplacian, trimesh_laplacian, trimesh_taubin | | Sharpen Mesh | two_step, unsharp_mask, libigl_unsharp, l0_minimize, guided_normal, vsa_snap, fast_effective, non_iterative | | Fix Normals | trimesh, igl_bfs, igl_winding, igl_raycast, igl_signed_dist | | Reconstruct Surface | poisson, ball_pivoting, alpha_shape, convex_hull, delaunay_2d, alpha_wrap (CGAL) | | UV Unwrap | xatlas, cumesh (GPU), libigl_lscm, libigl_harmonic, libigl_arap, blender_smart, blender_cube, blender_cylinder, blender_sphere | | Extract Skeleton | wavefront, vertex_clusters, edge_collapse, teasar | | Boolean | libigl_cgal, blender_exact |

Workflow Screenshots

Boolean Operations

Boolean Operations

Decimation

Decimation

Fill Holes

Fill Holes

Fix Normals

Fix Normals

Surface Reconstruction

Surface Reconstruction

Remeshing

Remeshing

Sharpening

Sharpening

Skeleton Extraction

Skeleton Extraction

Smoothing

Smoothing

UV Unwrap

UV Unwrap

License

GNU General Public License v3.0 or later (GPL-3.0-or-later)

This project is licensed under the GPL-3.0-or-later license to ensure compatibility with the included dependencies:

  • Blender (GPL-2.0-or-later) - Used for advanced UV unwrapping and remeshing
  • CGAL (GPL-3.0-or-later) - Used for boolean operations and isotropic remeshing
  • PyMeshLab (GPL-3.0) - Used for mesh processing operations

What This Means

  • ✅ You can use, modify, and distribute this software freely
  • ✅ You can use it for commercial purposes
  • ⚠️ If you distribute modified versions, you must also license them under GPL-3.0-or-later
  • ⚠️ You must share the source code of any modifications you distribute

For more details, see:

Questions?

If you have questions about licensing, please open an issue on GitHub.