ComfyUI Extension: ComfyUI libigl
libigl geometry processing wrapper for ComfyUI - mesh manipulation and analysis nodes
Custom Nodes (0)
README
ComfyUI-GeometryPack
⚠️ Work in Progress - Active development, expect breaking changes.
Professional geometry processing nodes for ComfyUI. Load, analyze, remesh, unwrap, and visualize 3D meshes directly in your workflows.
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
Features
Core Operations
- Load/Save meshes (OBJ, PLY, STL, OFF, etc.)
- Primitive generation (cube, sphere, plane)
- Mesh analysis and statistics
- Interactive 3D preview (Three.js & VTK.js)
Remeshing
- PyMeshLab isotropic remeshing
- CGAL isotropic remeshing (optional)
- Blender voxel & quadriflow remeshing
UV Mapping
- xAtlas UV unwrapping (fast, no dependencies)
- libigl LSCM conformal mapping
- Blender projections (cube, cylinder, sphere)
Analysis
- Boundary edge detection
- Hausdorff & Chamfer distance
- Signed distance fields (SDF)
- Point cloud conversion
Installation
cd ComfyUI/custom_nodes/
git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git
cd ComfyUI-GeometryPack
pip install -r requirements.txt
Automatic Blender Installation (Recommended):
python install.py
This will automatically download and install a portable version of Blender for UV unwrapping and remeshing nodes. No admin rights required!
Restart ComfyUI. Nodes appear in the geompack/ category.
Optional Dependencies:
- Blender: Auto-installed via
install.py, or install manually from blender.org - CGAL: Build tools for CGAL remeshing (see
cgal_tools/README.md)
Quick Start
Basic workflow:
Create Primitive → Mesh Info → Preview Mesh (3D)
Load Mesh → PyMeshLab Remesh → Save Mesh
Workflow Demonstrations
Loading & Analysis
Load Mesh (Blend/FBX)

Mesh Information

Remeshing & Refinement
Remeshing

Batch Remeshing

Mesh Refinement

Mesh Repair
Fill Holes

Self-Intersection Removal

Self-Intersection Remesh

Boolean Operations
Boolean Operations

Distance & Analysis
Hausdorff & Chamfer Distance

Signed Distance Function

Advanced Features
Skeleton Extraction

Normal Fields Visualization

Transform Operations

Texture & Conversion
Preview with Texture

Depth Map to Mesh

Alpha Wrapping

Demo Videos
Coming soon - video demonstrations will be added here
Architecture
Codebase organized by function in nodes/ directory:
- io.py - Load/Save
- primitives.py - Shape generation
- analysis.py - Mesh info, boundary detection
- distance.py - Hausdorff, Chamfer, SDF
- conversion.py - Mesh to point cloud
- remeshing.py - PyMeshLab, CGAL, Blender
- uv.py - UV unwrapping (xAtlas, libigl, Blender)
- transforms.py - Positioning
- visualization.py - 3D preview (Three.js, VTK.js)
All nodes use trimesh.Trimesh objects for mesh data.
Community
Questions or feature requests? Open a Discussion on GitHub.
Join the Comfy3D Discord for help, updates, and chat about 3D workflows in ComfyUI.
Credits
Built on trimesh, libigl, PyMeshLab, and CGAL.
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:
- LICENSE - Full GPL-3.0 license text
- THIRD-PARTY-NOTICES.md - Detailed third-party license information
Questions?
If you have questions about licensing, please open an issue on GitHub.