Gaussian Export
Shrink a 225 MB splat to 25 MB without re-training
- out_path
A trained 3D Gaussian Splatting scene is a huge, weird file. A 1M-splat scene with full SH3 coefficients lands around 225 MB as a lossless PLY - great for fidelity, miserable for previewing over a web UI, uploading, or archiving. GaussianExport is the node that turns that raw trainer output into something reasonable, without touching the scene itself. No re-training, no re-optimization, just a smarter container.
It's one of the quieter nodes in the GaussianPack family (the repo goes by ComfyUI-TurntableGSViewer on GitHub but self-identifies as "GaussianPack" everywhere else, more on that below), and it slots in anywhere you already have a PLY path lying around.
The three formats
The format dropdown gives you three targets, and they're worth understanding because the trade-off is real:
ply- a passthrough copy under your chosen filename. Zero loss, zero cleverness. Useful mostly as a rename/organize tool.ply_no_sh(default) - strips the view-dependent spherical-harmonic coefficients (f_rest_*) and keeps the base color (f_dc_*), plus position, scale, rotation, opacity. Result is a valid SH0 PLY about 3–5x smaller. The catch: specular highlights go away, because highlights are exactly what SH1–3 encode. Great for diffuse scenes, wrong for shiny ones.spz- converts to SPZ v2, the gzipped format the PlayCanvas/Three.js splat viewers read natively. Roughly 9x smaller, with SH quantized to 4 bits per coefficient. That's the "25 MB instead of 225 MB" option.
The implementation is honest about its limits: ply_no_sh is pure Python via plyfile (no GPU needed), while spz shells out to the vendored ply_to_spz.mjs script and requires Node.js on your PATH. If Node isn't installed you get a clear error, not a silent failure - install Node and retry.
Inputs and output
ply_path- path to a Gaussian Splatting PLY. Wire it straight from a load, merge, or transform node.format-ply/ply_no_sh/spz.output_filename- basename for the output (no extension). The.plyor.spzextension is added for you.
The single output, out_path, is the absolute path to the produced file - the sort of thing you'd feed back into a preview node or save to disk for upload.
Installing it
Standard for this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-TurntableGSViewer.git
cd ComfyUI-TurntableGSViewer
pip install -r requirements.txt --upgrade
python install.py
Restart ComfyUI after. ComfyUI Manager users: search "GaussianPack". Watch out for the experimental comfy-env dependency - first install pulls the pixi package manager, which is surprising if you weren't warned. No model weights involved.
When to reach for it
If you're shipping splats to a viewer over a slow connection, spz is the one. If you're prepping a diffuse scene for a download pack and SH fidelity doesn't matter, ply_no_sh gets you most of the win with no Node requirement. If the scene is a showcase with glass and reflections you care about, keep the full PLY - this node is exactly the tool for being deliberate about that choice.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| ply_path | STRING | Path to a Gaussian Splatting PLY to re-export | |
| format | COMBO | ply_no_sh | ply - passthrough copy. ply_no_sh - drop view-dependent SH (f_rest_*); keep base color (f_dc_*). ~3-5x smaller but loses specular highlights. spz - SPZ v2 (gzipped). ~9x smaller; SH coefficients quantize to 4 bits each. Requires Node.js on PATH. |
| output_filename | STRING | exported | Basename for the output file (no extension). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| out_path | STRING | — |