UltraShape Mesh Selector
The upload button ComfyUI forgot for .glb files
- mesh_path
ComfyUI's built-in file widgets are picky about which extensions they'll offer to upload, and mesh files aren't usually on the guest list. This node is the workaround: a file-upload widget purpose-built for 3D meshes. Click it, drag in a .glb, .gltf, .obj, .ply, or .stl, and it hands you a mesh_path string you can wire straight into UltraShape Load Coarse Mesh.
That's the whole job, and it does it well. If you've ever stared at the Load Coarse Mesh mesh_path field and its little rulebook of path prefixes (input/ vs output/ vs absolute), this node exists to make you not care: the mesh_path it outputs is already formatted correctly, prefixed with input/, so it just works when connected.
How it behaves
Under the hood it's a ComfyUI pattern: a dropdown of mesh files scanned from your input/ folder (recursively), with the image_upload flag set so it also shows an upload button. Anything with one of the five mesh extensions in ComfyUI/input/ - including in subfolders - appears in the list, and the list refreshes on load. If the folder is empty you get a single "(upload a mesh file)" placeholder, and the node validates that you've actually picked something before it'll run. It's also smart about change detection: it watches the file's modification time, so if you re-upload or edit the mesh, the node re-runs instead of serving you a stale cached path.
One thing that trips people up: the dropdown input is named image internally (a ComfyUI convention for enabling the upload button) but it's a mesh file you're choosing, not an image. Don't let the label throw you - the tooltip and the node name are the truth here.
Wiring it in
Output is a single mesh_path string, which you connect to the mesh_path input of UltraShape Load Coarse Mesh. That's the entire intended integration, and it replaces typing paths by hand. You can also use the string elsewhere - it's just a path - but honestly, its reason to exist is the connection above.
Install and caveats
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyUI-UltraShape1
cd ComfyUI-UltraShape1
pip install -r requirements.txt
Restart, and ComfyUI Manager finds it under ComfyUI-UltraShape1. No model weights needed for this node alone, though the graph it feeds (Load Coarse Mesh → Refine) wants ultrashape_v1.pt in ComfyUI/models/UltraShape/ before anything actually runs.
Caveats are minor: the upload goes into ComfyUI/input/, so you're copying the file into ComfyUI's folder rather than pointing at it wherever it lives. And if your mesh is already in input/ as a file, the upload button is redundant - just pick it from the dropdown. That's the whole trick: it's the least surprising node in the pack, and that's exactly why you'll reach for it over hand-typing paths.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | 1 options: (upload a mesh file) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| mesh_path | STRING | — |