Nodes/ComfyUI libigl/UV libigl Harmonic (backend)
ComfyUI Node

UV libigl Harmonic (backend)

The clean parametrization that pins your boundary to a circle

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
UV libigl Harmonic (backend)
  • trimesh
  • unwrapped_mesh
  • info

UV unwrapping is how a 3D surface becomes a 2D painting. Before you can texture a mesh - bake a material, paint a face, lay out a decal - you need to flatten it into UV coordinates with as little stretching as possible. UV libigl Harmonic is the GeometryPack backend that does this by solving a harmonic map: a smooth, well-behaved parametrization from libigl, with the boundary of the surface pinned to a circle.

It's the libigl_harmonic option in the UV Unwrap front node's dropdown, or searchable directly as "UV libigl Harmonic (backend)".

How it works

Harmonic parametrization solves Laplace's equation on the surface: each interior vertex's UV position is determined by averaging its neighbors, with the boundary vertices fixed to a circle as the only boundary condition. Because the result satisfies a smoothness equation, you get a parametrization with no folds - the UVs never flip over themselves, which is the most basic thing you want from an unwrap. The catch is also visible in that description: everything depends on the boundary being a single circle, which means this works best on disk-like surfaces - a patch, a strip, a face, anything that has one outer boundary loop.

Inputs and outputs

Just one input: trimesh. That's it - no sliders, no tolerance, no way to tune it. Outputs are unwrapped_mesh (TRIMESH, with UV coordinates on it) and info (STRING).

When to use it

Harmonic is the honest, boring option in the libigl family, and "boring" is a compliment here - it's deterministic and never flips triangles. But its fixed circular boundary means real distortion: flat patches stretch toward the rim, and closed meshes with multiple boundary loops are out of its league entirely. If you're unwrapping a character or a hard-surface part with seams, libigl_arap gives you far better angle preservation for a few extra iterations. If your input is one clean patch that just needs a decent flat layout, harmonic is fast and reliable. And if your mesh has no boundary at all (a closed sphere), no libigl method will help - that's what the Blender projection backends are for.

Install is the pack standard: ComfyUI Manager search "GeometryPack", or git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack into custom_nodes/, then pip install -r requirements.txt --upgrade and python install.py, restart. The pack is GPL-3.0-or-later, young, and actively developed - and remember the Blender-based UV backends need a working Blender install, while the libigl ones just need the pack itself.

Categorygeompack/uv

Inputs (1)

NameTypeDefaultDescription
trimeshTRIMESH

Outputs (2)

NameTypeDescription
unwrapped_meshTRIMESH
infoSTRING