💾 Save PLY File
💾 Getting your reconstruction onto disk as a .ply
- ply_data
- filepath
The exit door. Every reconstruction node in this pack hands you an in-memory PLY_DATA blob; VNCCS_SavePLY is what turns that into an actual file you can open in a splat viewer, Blender, or a game engine. If you've generated a scene and nothing seems to "save" it, this is the node you forgot to add - it's an output node, so it only runs when it's actually connected to a preview/save path.
Inputs are the two simplest in the pack: ply_data (the thing that came out of VNCCS_WorldMirror3D, VNCCS_WorldMirrorV2_3D, VNCCS_SplatRefiner, or a loaded file) and filename (default output, no extension needed). It writes to ComfyUI's standard output directory and returns filepath as a string.
What you can do with the file
The PLY this writes is a Gaussian splat - millions of tiny oriented colored blobs, not a textured mesh. That's an important distinction from the KB's perspective: a splat renders photorealistically from any angle, which is exactly what you want for an explorable scene, but it is not geometry a game engine can collide against or a printer can slice. You'll open it in splat-native viewers (the pack's own preview widget, gsplat.js, SuperSplat, Blender with a splat plugin). If you need a mesh, you're doing a conversion pass that throws away most of what made the splat look good.
Practical notes
- The filename is sanitized and written as
.ply- passfilename="kitchen_v1"and you getkitchen_v1.plyinComfyUI/output. - Feeding
SavePLYaply_datathat isn't a Gaussian splat (say, a raw point cloud) still writes fine; it just won't render as a splat. - The
filepathstring output is useful if you want to chain toVNCCS_PLYSceneRenderer(which wants a path, not the data) or log the location.
Install
Same pack install as everything else here - Manager search HY-World 2.0, or:
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_HYWorld2
cd ComfyUI_HYWorld2
pip install -r requirements.txt
python install.py
The install.py step builds the vendored gsplat_maskgaussian CUDA fork; SavePLY itself doesn't need gsplat to run, but the nodes that produce the ply_data you're saving absolutely do.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| ply_data | PLY_DATA | — | |
| filename | STRING | output | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| filepath | STRING | — |