Save Mesh
Getting your processed mesh back out of ComfyUI
- trimesh
- file_path
You've remeshed, unwrapped, or fixed a mesh inside ComfyUI and now you need it as an actual file on disk - Blender, a game engine, a 3D printer, whatever lives outside the node graph. That's Save Mesh, the pack's output side of the I/O pair. It's about as straightforward as nodes get, but the details are worth knowing because they're where people trip.
Three inputs, and only one of them is a decision:
trimesh- the mesh to save. Wire in whatever your pipeline produced.file_path- output filename without extension, or a path. The default is literallyoutput. Give it a real name.format- the format dropdown: OBJ, PLY, STL, FBX, OFF, whatever this pack's save supports. OBJ is the safe default for most uses; PLY if you're going into point-cloud or capture tools; STL if the destination is a printer.
It returns a file_path string with the final resolved location, which is nice for wiring into a Show Text / logging node if you want the workflow to tell you where things landed.
Where it fits
Save Mesh is the natural end of a GeometryPack chain - Load Mesh → repair/remesh/UV → Save Mesh. There's no real ambiguity in the node itself; the skill is in the choices around it. If you're saving for a texturing tool, OBJ (which carries UVs) beats STL (which carries nothing but geometry). If you've just unwrapped with the UV backends, make sure you save to a format that keeps UVs - that's the whole point of the unwrap step.
Install
It ships with the pack, so:
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
Or ComfyUI Manager → search GeometryPack. Standard pack caveats: the install is the experimental comfy-env/pixi route with a big first-run download, and it's a fast-moving repo - if save behavior changes between versions, that's the cadence, and the author takes reports in GitHub Discussions.
The traps
Two classic misses. First, forgetting the extension: file_path expects no extension because the format dropdown supplies it - put my_mesh.obj in the filename box and you can end up with my_mesh.obj.obj weirdness. Second, assuming everything is round-trippable: if you loaded an STL, fixed it, and save as OBJ, you're fine; but a format change can drop data (FBX ↔ OBJ are not always faithful with materials). And one worth remembering: the pack's mesh type is TRIMESH - save what you meant to save, because a preview node won't save your file for you. When in doubt, save the OBJ and check it in a proper viewer.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| file_path | STRING | output | Output filename (without extension) or path |
| format | COMBO | obj | Output file format |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |