Nodes/ComfyUI-3D-Convert/ConvertTo3DFormat
ComfyUI Node

ConvertTo3DFormat

Send your mesh to the cloud, get back the format you actually need

By nsdtcloud3d·Created 2 years ago·Updated 2 years ago· 21
ConvertTo3DFormat
    • model_path
    api_key
    file_path
    target_type

    You just made a 3D model in ComfyUI and now it's sitting on your disk as a .glb, and you need a .stl for your printer or a .step for some CAD person. Welcome to the most boring wall in 3D work: file format conversion. ConvertTo3DFormat is the node that knocks it down - it takes a mesh file, uploads it to the NSDT cloud converter, and hands you back a converted file in a format you pick from a dropdown.

    This is the main node of the ComfyUI-3D-Convert pack, and here's the part to understand before you get excited: it doesn't convert anything locally. It's a thin HTTP wrapper around the 3dconvert.nsdt.cloud API. Your file goes up to their servers, gets converted there, and comes back down. That means it needs an API key, it needs an internet connection, and if your mesh is sensitive, it's now on someone else's machine. The trade-off is the format reach - the README lists over 40 input formats (GLB, OBJ, PLY, STL, FBX, DXF, STEP, LAS/LAZ point clouds, IFC, even DWG and Revit files) going to 13 outputs.

    How it actually works

    The code in util/nsdt.py is honest and short. It uploads your file as a multipart POST to tumo.nsdt.cloud/api/file/{extension}/main with your key as a Bearer token, then polls a GraphQL endpoint every three seconds until the server reports the conversion finished. Then it resolves the converted object's ID and downloads the result to a new file sitting right next to your original, named {yourfile}.{target_type}. So if you convert bunny.glb to stl, you get bunny.glb.stl in the same folder. Easy to find, if slightly redundant-looking.

    The inputs that matter

    Only three required inputs, and honestly only two of them need your attention:

    • file_path - the absolute path to the 3D file you're converting. Usually this comes from Load3DFile (same pack) or from a save/export node out of ComfyUI-3D-Pack. It must actually exist on disk, or the whole thing quietly fails.
    • target_type - the dropdown that decides the output: gltf, glb, obj, ply, stl, xyz, off, dae, amf, 3mf, step, iges, fbx. If you're not sure, glb or obj are the safe defaults; step/iges are the CAD exports.
    • api_key - your NSDT key. Wire it in from the Load3DConvertAPIKEY node rather than pasting it here, so you've got one place to manage it.

    The single output, model_path, is a string with the absolute path of the converted file. You can feed it into a preview or save node, or just go grab the file - the conversion is the whole point, there's no 3D viewport attached.

    Installing it

    Two ways, both standard. Easiest is ComfyUI Manager - search for "ComfyUI-3D-Convert" and install. Or do it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/nsdtcloud3d/ComfyUI-3D-Convert
    

    Then restart ComfyUI. There's no heavy dependency drag here: the entire requirements.txt is one line, Requests. No torch extension, no CUDA, no model downloads. It's one of the lightest installs in the 3D corner of the ecosystem, precisely because all the heavy lifting happens on NSDT's side.

    Where people get burned

    • You need a real key. Grab one from https://3dconvert.nsdt.cloud/. The node's default placeholder text is literally "Get your API KEY from: https://3dconvert.nsdt.cloud/" - if you run it with that as the key, the upload dies with an auth failure.
    • Silent failure is the trap. Look at the code: if the upload or conversion fails for any reason, the node returns the original file_path, not a converted one. Your workflow keeps running, you glance at the output path, and it looks fine - because it's the input file, unconverted. Check that model_path ends in your target extension before trusting it.
    • It's network-bound. Big meshes mean a big upload, plus the server polls every three seconds, so a dense point cloud can take a while. Don't expect this to be instant.
    • If you hit a ModuleNotFoundError on import, you're on an old checkout - there was a genuine import bug in the pack's early days (someone even filed a PR about relative imports). git pull in the custom_nodes folder to get the fix.
    Category3DConvert

    Inputs (3)

    NameTypeDefaultDescription
    api_keySTRING
    file_pathSTRING
    target_typeCOMBO13 options: gltf, glb, obj, ply, stl, xyz, +7

    Outputs (1)

    NameTypeDescription
    model_pathSTRING