ComfyUI Node

MV-SAM3D Export

The Tiny Node That Gets Your MV-SAM3D Mesh Out of the Graph

By robinduckett·Created 3 months ago·Updated 3 months ago· 0
MV-SAM3D Export
  • result
  • path
  • abs_path
whichglb

This is the last node in the MV-SAM3D chain, and it does exactly one job: take the result of a multi-view reconstruction and hand you back a path you can actually do something with. Run Multi-View spends minutes fusing your views into a mesh or a Gaussian splat; MV-SAM3D Export is where that file stops being a promise and becomes something Preview3D can display or another tool can save. It's thin, but it's the reason your work ever leaves the graph.

You're never going to reach for this node on its own. You wire it after MV-SAM3D Run Multi-View (unofficial), which outputs a MVSAM3D_RESULT object plus two raw string paths. Export is what turns the "which file did I actually get" question into an explicit choice.

How it works

Run Multi-View writes a .glb (mesh) and/or .ply (Gaussian splat) into a timestamped folder under output/mvsam3d/ and records those paths in its result. Export reads that result, picks whichever format you asked for via the which input, and emits two strings:

  • path - an output-relative path in the annotated subfolder/file.glb [output] form. That [output] suffix is not decoration; it's the marker ComfyUI's frontend needs to route Preview3D to the right /view endpoint. Feed this one to Preview3D and it just works.
  • abs_path - the absolute filesystem path, for anything outside ComfyUI, like dropping the mesh straight into Blender or a slicer.

It also registers a proper 3D gallery entry for the job (the same convention core SaveGLB uses), so the finished mesh shows up in the queue gallery rather than only inside the graph.

The two inputs you'll touch

The only input you set is which: glb (the mesh) or ply (the Gaussian splat). That's it. result comes from Run Multi-View.

Where people get burned: if the requested format wasn't produced, Export raises an error instead of returning an empty path - good behavior, but the fix is upstream. Set decode_formats on Run Multi-View to include mesh for a .glb or gaussian for a .ply. Producing both costs a little extra decode time; producing only what you want is fine and slightly cheaper.

Installing

Search ComfyUI Manager for "MV-SAM3D (Unofficial Wrapper)" (repo robinduckett/ComfyUI-MVSAM3D-Unofficial) and install, then run the one-time environment setup:

cd ComfyUI/custom_nodes/ComfyUI-MVSAM3D-Unofficial
python scripts/setup_env.py

Before any of this runs, you need ComfyUI-SAM3DObjects installed and to have produced at least one single-view mesh with it - this pack reuses that pack's pixi environment and downloaded weights rather than shipping its own. This is not the kind of 3D pack you install and immediately queue; budget for the SAM3DObjects setup first.

Common issues

  • "no glb in this result" / "no ply in this result" - you asked Export for a format Run Multi-View didn't decode. Add it to decode_formats.
  • Preview3D shows "Error loading model" - make sure you're feeding Export's path output (the annotated one), not abs_path.

One honest caveat about what you're exporting: like every image-to-3D pipeline, MV-SAM3D's output is a textured mesh or splat with machine-made topology - great for a static prop, a 3D print, or a viewer, not a rigged game asset. The node itself won't tell you that; the geometry underneath will. For a mesh vs. splat decision, the KB rule of thumb applies: game engines and printers want the .glb, a photorealistic viewer render wants the .ply.

CategoryMV-SAM3D

Inputs (2)

NameTypeDefaultDescription
resultMVSAM3D_RESULT
whichCOMBOglbglb = mesh, ply = Gaussian splat.

Outputs (2)

NameTypeDescription
pathSTRINGOutput-relative path — feed this to Preview3D.
abs_pathSTRINGAbsolute filesystem path, for external tools.