Remesh PyMeshLab (backend)
Remesh PyMeshLab — the default isotropic remesher you'll actually use
- trimesh
- remeshed_mesh
- info
If you only ever touch one remesh backend in this pack, this is the one. PyMeshLab's isotropic remeshing is the default for a reason: it's reliable, it's fast enough, it produces clean near-equilateral triangles, and its parameters make intuitive sense even on a first try. It's the remesh that the pack's own release thread pointed a struggling user at first, and for most "my mesh is garbage, make it nicer" jobs it's still the right answer.
It's the pymeshlab_isotropic backend of the main Remesh dispatcher - dev-only in the schema, so you'll pick it from the dropdown rather than add it directly.
How it works
Isotropic remeshing iteratively equalizes edge lengths: split the too-long edges, collapse the too-short, flip the badly-angled ones, and relax vertices - then repeat for iterations passes. Each pass converges the mesh toward the target_edge_length. Two extras set it apart from a bare uniform remesh: feature_angle protects sharp edges - any dihedral angle steeper than the threshold is treated as a feature and left alone instead of being smoothed away - and adaptive switches the edge-length target from a single value to a curvature-aware one, so detail-heavy areas keep smaller triangles.
Inputs and outputs
- trimesh (TRIMESH) - the mesh to remesh.
- target_edge_length (default 1) - the target edge length, relative to mesh scale. The main dial.
- iterations (default 3) - passes. More = smoother, more uniform, slower. The default of 3 is genuinely reasonable; 5+ for stubborn meshes.
- feature_angle (default 30) - degrees. Edges sharper than this get preserved as creases. If your hard edges keep getting rounded off, raise this.
- adaptive (default false) - use curvature-adaptive edge lengths instead of a single target. Turn it on when the shape has both fine detail and big flat expanses.
Outputs: remeshed_mesh (TRIMESH) and info (STRING) with before/after counts.
Installing
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. PyMeshLab runs inside the pack's isolated comfy-env environment built by install.py - one of the lighter heavier deps, since PyMeshLab is a compiled binary wheel.
Troubleshooting
- Edges rounding off -
feature_angletoo low for your part, oriterationsso high it grinds the features away. Raise the angle, cut the iterations. - "PyMeshLab not installed" / ImportError - the isolated env didn't build. Re-run
python install.py; check the repo Discussions if it persists. - Triangles still uneven after many passes - the target length may be incompatible with the local geometry (e.g., too long where the surface is tight). Lower it.
- Stale-workflow validation errors (e.g.
could not convert string to float: 'true'onfeature_angle) are the pack's signature gotcha - if a saved workflow with the Remesh node throws, delete and re-add the node and re-pickpymeshlab_isotropic. This exact error pattern is the most-reported GeometryPack complaint on r/comfyui, and it's almost always a stale DynamicCombo, not a real remesh failure.
The honest ranking: PyMeshLab for 90% of jobs, PMP or Geogram when you need specific behavior, CGAL when you need provable quality, and Blender/GPU when the environment cost is worth it to you. Start here.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| target_edge_length | FLOAT | 1.000.001–10 | Target edge length for output triangles. Value is relative to mesh scale. |
| iterations | INT | 31–20 | Number of remeshing passes. |
| feature_angle | FLOAT | 300–180 | Angle threshold (degrees) for feature edge detection. |
| adaptive | COMBO | false | Use curvature-adaptive edge lengths. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| remeshed_mesh | TRIMESH | — |
| info | STRING | — |