UltraShape Save GLB/OBJ
Where your refined mesh lands on disk
- refined_mesh
- file_path
The finish line. UltraShape Save GLB/OBJ takes the refined_mesh that UltraShape Refine produces and writes it to disk as a real file, so you can open it in Blender, drop it in a game engine, or send it to a slicer. Without it, your sharp new geometry lives only inside the graph; with it, you have an asset.
Despite the name it's format-agnostic - the file_format dropdown covers glb, obj, ply, and stl, which conveniently covers every major downstream destination: GLB/OBJ for engines and Blender, STL for printing, PLY if you want a raw point-mesh interchange. This is the output node from the pack's own example workflow, so it's the one most people end on.
What you set
refined_mesh- theULTRASHAPE_OUTPUTfrom UltraShape Refine. Required.output_dir- a subfolder of your ComfyUIoutput/folder. Defaultultrashape_output, created automatically. Keeps your refined meshes out of theoutput/root clutter.filename_prefix- defaultrefined. Files get a timestamp and random suffix (refined_20260825_120000_ab12cd34.glb), so you never overwrite a previous run and never have to babysit names.file_format-glb(default),obj,ply, orstl.
The output is a file_path string, relative to output/, which is useful if you want to pass it to another node - but since this is an output node, mostly it just means "your file is at ComfyUI/output/ultrashape_output/refined_….glb."
Notes and gotchas
Install is the pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyUI-UltraShape1
cd ComfyUI-UltraShape1
pip install -r requirements.txt
Restart; ComfyUI Manager installs it as ComfyUI-UltraShape1. No weights needed for the save itself - but the Refine node feeding it needs ultrashape_v1.pt in ComfyUI/models/UltraShape/ for the graph to run at all.
One honest caveat: this node saves geometry and geometry only. UltraShape doesn't produce textures, so your exported GLB is a bare mesh - no material, no UV-painted skin. That's not a bug in the saver; it's what the refiner outputs. If you want a textured asset, run the refined mesh through a texturing pipeline first (UltraShape Output To Trimesh is the bridge to Trellis2-style texture nodes) or texture in Blender. Also remember that "refined" is doing a lot of work - the export is exactly what the diffusion produced, potentially hundreds of thousands of triangles. You may want a decimation or retopo pass before it goes into a game engine; the printer, as always, doesn't care.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| refined_mesh | ULTRASHAPE_OUTPUT | — | |
| output_diropt | STRING | ultrashape_output | — |
| filename_prefixopt | STRING | refined | — |
| file_formatopt | COMBO | glb | 4 options: glb, obj, ply, stl |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| file_path | STRING | — |