Save 3D Pixaroma
Catch a floating mesh before Blender does
- mesh
- model_3d
- model_3d
Every 3D generator in ComfyUI dumps a file and then shrugs. You only find out it's lying on its back, hovering off the grid, or saved as a triangle-soup GLB when you open it in Blender. Save 3D Pixaroma ends that loop: an orbitable viewer and the export in one node.
What it actually is
It's a terminal node - is_output_node is true, so it runs with nothing wired downstream, like a SaveImage. You give it a mesh, it writes a file, and it shows you the model in a square viewport on the node. Drag to orbit, jump to Front / Left / Top / 3/4, and switch the look: Color, Clay, Wire (the real edges, quads as quads), Panels or Normal.
Whether the mesh is good enough depends on your destination - a static prop or a 3D print is fine today, anything that has to deform isn't. But even on the jobs that do work, orientation bites you: a generated mesh has no idea what "up" means to a slicer. Two clicks here instead of a Blender round-trip.
How it works
Reading is where this beats a generic save node. An OBJ comes in through the node's own reader, so it keeps its quads, its panel groups and its vertex colours - ComfyUI core's reader triangulates OBJs, which quietly destroys exactly what you wanted. A MESH wire, GLB, GLTF or STL goes through core's 3D components instead, keeping UVs, normals and textures. An STL arrives standing on Z, the way slicers write it, and is turned upright.
Then the Fix is applied to the geometry itself - quarter turns on X, Y and Z, Center (on by default), On ground (on by default) - and the file is written. What you see is what gets saved, and the model_3d output is that same file, so whatever you wire it into gets byte-for-byte what you exported.
Format: the one choice that matters
Auto keeps quads as OBJ and writes a triangle model as GLB - a sane default. Don't leave it there blindly:
- OBJ - quads, panel groups, vertex colours. The one to pick when Blender or a quad remesher is next.
- GLB - colours and textures, triangles only. Pick it when the texture has to survive.
- STL - 3D printing. Stands on Z, longest side 100 mm unless the gear says otherwise, and keeps no colours at all.
The node tells you the trade you just made - OBJ drops the texture, GLB splits the quads, STL drops colours. Read the note line under the viewer.
The two inputs and the one output
Both inputs are optional, so an unconnected copy just reports "nothing is wired in" instead of erroring:
mesh(MESH) - from any mesh node, e.g. a Pixal3D or Trellis 2 generator.model_3d(FILE_3D, FILE_3D_GLB, FILE_3D_GLTF, FILE_3D_OBJ, FILE_3D_STL) - a file, typically from Load 3D Pixaroma. An OBJ keeps its quads, groups and colours.
The gotcha, stated plainly in the tooltip: when both are wired, the mesh wins. If your model_3d seems ignored, that's why.
The output is a single model_3d (FILE_3D) - the saved file, in the format it was saved in.
Install
Manager → search Pixaroma → Install → restart. Or the README's manual route:
cd ComfyUI/custom_nodes
git clone https://gitlab.com/pixaroma/comfyui-pixaroma.git
No models to download for this one, and no heavy dependencies: the pack's only declared one is imageio-ffmpeg, and that's for the video nodes, not 3D. On Windows Easy-Install, Pixaroma already ships in the box - and its YouTube tutorial series is the one r/comfyui recommends to beginners by name.
Where people get burned
Save now isn't a second Save. It copies the temp file from the last Preview run, and only a file this node wrote in Preview. ComfyUI wipes its temp folder on restart, so "the preview file is gone" means run again. Same if you changed the Fix or format since that run. A new name or save folder is fine without one.
Your model is floating. The line under the Fix row reads green ("On the ground · centered") or amber ("Floating above the ground", "Sunk into the ground", "Off center"). Amber means that's what gets written. Turn on On ground, hit Reset, or accept it deliberately.
"Which way is front" is your job. The FRONT arrow shows the front the file says. No software can know which side of a chair or a gun faces forward, so if the arrow's wrong, Turn Y until it isn't.
A typed save folder gets refused. Same approval rule as Save Image Pixaroma: click Browse in the gear and pick the folder once, and after that you can type or paste it.
Blank or broken after an update? Hard-refresh with Ctrl+Shift+R (Cmd+Shift+R on Mac) - browser cache, not a bug. And this pack takes bug reports on its Discord only; Issues and PRs are closed by design.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| meshopt | MESH | A mesh from any mesh node, for example the Pixal3D or Trellis 2 nodes. When a model_3d is wired in as well, the mesh is used. | |
| model_3dopt | FILE_3D,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_OBJ,FILE_3D_STL | A 3D model file, for example from Load 3D Pixaroma. GLB, GLTF, OBJ and STL can be read. An OBJ keeps its quads, panel groups and colours. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model_3d | FILE_3D | The fixed model as a file, in the format it was saved in (OBJ, GLB or STL). Wire it into any node that takes a 3D model file; it gets exactly what this node saved. |