Nodes/ComfyUI/Save 3D Model
ComfyUI Node Runs on cloud

Save 3D Model

The export node whose name is a lie (and that's good)

By Comfy-Org·Created 4 years ago·Updated about 6 hours ago· 129,874
Save 3D Model
  • mesh
    filename_prefix3d/ComfyUI

    Save 3D Model is the last node in every 3D workflow - the one that takes whatever you generated and writes it to disk. And here's the thing the name hides: it's called "SaveGLB" internally, but it will save just about any 3D format you throw at it. Hand it a mesh and it writes a .glb. Hand it a splat file and it writes the splat in its own format. The "GLB" is aspirational; the node is a general-purpose 3D export.

    It's ComfyUI core, "3d" category, nothing to install. It landed in early 2025 alongside the Hunyuan 3D support, and it got a significant upgrade in 2026 to carry vertex colors, UVs, and textures out with your mesh.

    How it works

    One input, one widget. The mesh input accepts either a MESH object (like the output of Voxel to Mesh) or any 3D file object - GLB, GLTF, OBJ, FBX, STL, USDZ, PLY, splat formats, point clouds. What happens depends on what you give it:

    • MESH object in → it assembles a .glb file, and here's the nice part: if your mesh carries vertex colors, UVs, or a texture image, they get baked into the GLB automatically. That's the 2026 upgrade, and it's why the Hunyuan3D and TripoSplat export paths look so much better than the blocky-white-mesh days.
    • File object in → it writes the file back out with its original extension. Give it an .spz splat and you get an .spz; give it a .ply and you get a .ply. It's a copy-to-output folder with a fresh name.

    The filename_prefix widget (default 3d/ComfyUI) controls the name and location. Files land in ComfyUI/output/3d/ as ComfyUI_00001_.glb (or whatever your prefix is), with the counter incrementing so you never overwrite. It also embeds your workflow metadata into the file, so the graph that made it travels with it.

    The input that matters

    Just one, really: mesh. Wire your MESH or FILE_3D here and you're done. filename_prefix is the only thing to fiddle with, and only if you want tidy names like 3d/MyCharacter instead of the default.

    Where people get burned

    The classic stumble: people expect the output format to match the node name. You wire in a MESH and wonder why you're getting a .glb when you wanted an .obj - but there's no format dropdown on this node. The format is decided by what you feed it: MESH in → GLB out, file in → original format out. If you need a specific non-GLB format for a MESH, you're meant to convert it with a dedicated node first (the splat-to-file nodes in the 3D/splat family are the model for this).

    Second, and this one stings: a MESH with no UVs or colors exports as a flat white shape. That's not a bug - the geometry genuinely has nothing to display. If your export looks bare, the problem is upstream (your mesh-generation step didn't produce UVs), not this node. The Hunyuan3D path in particular is known for producing geometry without texture or rigging; the geometry comes out, the paint doesn't.

    And a small warning: zero-polygon meshes get skipped with a console warning rather than failing. If a batch seems to quietly drop a model, check the log for "skipping empty mesh."

    Category3d

    Inputs (2)

    NameTypeDefaultDescription
    meshMESH,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_OBJ,FILE_3D_FBX,FILE_3D_STL,FILE_3D_USDZ,FILE_3D_PLY,FILE_3D_SPLAT,FILE_3D_SPZ,FILE_3D_KSPLAT,FILE_3D_SPLAT_ANY,FILE_3D_POINT_CLOUD_ANY,FILE_3DMesh or 3D file to save
    filename_prefixSTRING3d/ComfyUI

    Outputs (0)

    No outputs