Simple NanoGS GUI is a Windows-focused fork of the original NanoGS project for training-free Gaussian splat simplification.
Original upstream project: https://github.com/saliteta/NanoGS
Project page: https://saliteta.github.io/NanoGS/
This repository keeps the upstream simplification core, then adds a practical desktop workflow and format-conversion tooling for local batch use.
- Added a Tkinter desktop GUI for single-file and folder-based batch processing.
- Added saved parameter profiles and persisted local GUI settings.
- Added support for
.soginput by decoding it to a temporary.plyfile in Python. - Added
.spzand.soground-trip export support throughgsbox.exe. - Added a quality-test mode that generates about 40 nearby parameter variants and writes a CSV manifest.
- Added CPU/GPU selection for cost evaluation with automatic backend choice.
- Added automatic
block_edgestuning plus a manual override for large scenes. - Added benchmark scripts for backend and block-size tuning.
- Added a Windows launcher batch file for the GUI.
- Extended the CLI with
--deviceand--block_edges.
nanogs_gui.py: desktop GUI for running simplification jobs.simplification.py: CLI entry point and simplification pipeline.install_gpu_support.bat: Windows helper that installs CuPy into.venvfor source-mode GPU execution.utils/sog_utils.py:.sogdecoder and conversion to.ply.benchmark_block_edges.py: compare runtime across block sizes and devices.benchmark_device_threshold.py: compare CPU and GPU behavior across scene sizes.start_nanogs_gui.bat: Windows launcher that runs the GUI from.venv.
- Python 3.10+ on Windows.
- Base dependencies listed in
requirements.txt. - Optional: a CUDA-capable GPU plus a matching CuPy build for GPU cost evaluation.
- Optional:
gsbox.exeif you want.spzconversion or.sog/.spzexport.
Example environment setup:
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txtOptional GPU backend:
python -m pip install cupy-cuda12xUse a CuPy package that matches your CUDA runtime.
On Windows, you can also run:
install_gpu_support.batThat script creates .venv if needed, installs requirements.txt, prompts for the matching CuPy package, and verifies CUDA device access.
If you only need the CPU path, requirements.txt is sufficient.
Start the GUI with either:
.venv\Scripts\python.exe nanogs_gui.pyor:
start_nanogs_gui.batThe GUI supports:
- Single-file processing for
.ply,.sog, and.spz. - Folder processing with optional recursion.
- Custom output folders and suffixes.
- Parameter profiles for different compression presets.
- Automatic or explicit CPU/GPU execution.
- Quality-test sweeps around the current ratio,
k, opacity threshold, andlam_sh.
.plyfiles are processed directly..sogfiles are converted to temporary.plyfiles inside the app, then can be exported back to.sogwith GSBox..spzfiles are converted through GSBox. A fallback converter command can also be configured in the GUI.
gsbox.exe is not stored in this repository. Put it next to nanogs_gui.py or configure its path in the GUI.
The command-line flow is still available:
python simplification.py --ply scene.ply -r 0.3 --k 8 --opacity_threshold 0.18 --lam_geo 1.0 --lam_sh 0.5 --device auto --block_edges 0Key fork-specific CLI additions:
--device {auto,cpu,gpu}chooses the edge-cost backend.--block_edges Noverrides the auto-tuned edge block size.
Two helper scripts are included for tuning and regression checks:
python benchmark_block_edges.py
python benchmark_device_threshold.pyThey expect local benchmark .ply files and are intended as developer utilities rather than end-user entry points.
nanogs_gui_settings.jsonis generated locally and is intentionally ignored.- Benchmark logs, virtual environments, and workspace files are also ignored.
- This repository is intended as a practical GUI fork of NanoGS rather than a mirror of the upstream paper repository.
If the original NanoGS project helps your work, please cite the paper in CITATION.bib.
See LICENSE in this repository.
