Nodes/ComfyUI-UltraShape1/UltraShape Mesh Selector
ComfyUI Node

UltraShape Mesh Selector

The upload button ComfyUI forgot for .glb files

By jtydhr88·Created 8 months ago·Updated 6 months ago· 183
UltraShape Mesh Selector
    • mesh_path
    image

    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 MeshRefine) 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.

    CategoryUltraShape/Loaders

    Inputs (1)

    NameTypeDefaultDescription
    imageCOMBO1 options: (upload a mesh file)

    Outputs (1)

    NameTypeDescription
    mesh_pathSTRING