Repository navigation
Splat Studio 1.0.0
Install
Mac (Apple silicon, macOS 15 or later) — SplatStudio-1.0.0-macOS-arm64.dmg: open it and drag Splat Studio to Applications. This build is ad-hoc signed (not notarized): the first time, right-click the app → Open → Open, or run xattr -dr com.apple.quarantine "/Applications/Splat Studio.app".
Linux GPU worker (NVIDIA) — Splat Worker 1.3.12, SplatWorker-1.3.12-x86_64.flatpak:
flatpak install --user SplatWorker-1.3.12-x86_64.flatpak
On first start its setup assistant downloads PyTorch, CUDA and gsplat for your driver (about 3 GB). To get updates automatically instead, add the repository: flatpak install --user https://benevision.github.io/Gaussian-Vibe-Code/flatpak/splatworker.flatpakref.
iPhone (Splat Capture) — not included: iOS apps can't be installed from a download; build it from ios/ in Xcode.
Changes
- NewProjectSheet: explicit init (Swift 6.3 makes the memberwise one private)
- Split two expressions Swift 6.3 (GitHub's macOS runner) could not type-check in time
- build_app.sh: empty-array expansion that works with macOS bash 3.2 under set -u
- Release workflow: tag v* → GitHub Release with the Mac .dmg and the Linux worker .flatpak
- Leaner remote transfers: skip the camera solve's nested image copy; upload only what a dataset references; don't re-download a reused solve
- Ask before reusing earlier results; reuse a worker's earlier video split (no re-upload); tidy slider precision
- Reruns reuse a project's frames; wait for the worker before falling back to this Mac
- Pick up earlier worker jobs instead of redoing them; retry result downloads through network drops
- Rig-aware 360° camera solving: match and map whole 360° frames (worker 1.3.11)
- Local colour correction (bilateral grid) on by default
- Prefer ethernet for a worker on both ethernet and Wi-Fi; hide discovered workers
- splatprep: find the pycolmap mapper behind the LightGlue import blocker; check for a mapper before matching
- tools/eval/novel_views.py: render models from closer-in viewpoints no photo was taken from (floaters, needles, haze)
- tools/eval/align_splat.py: bring another tool's splat into our dataset frame (camera-name Sim3) for held-out scoring
- Worker: backgroundShell option (same far-field sphere as the Mac), tested
- Mac: backgroundShell option — far-field sphere of splats for distant land/sky beyond the capture (off; drone test queued)
- Mac trainer: local colour correction (bilateral grid, same model as the worker): apply/backward kernels, CPU Adam + TV per photo, mean pinned to identity every 50 updates
- Export/open PlayCanvas compressed PLY (.compressed.ply): 4× smaller than PLY at SH 3 (175 → 43 MB), −0.02 dB held-out
- Mask fixed parts of the frame (lens rim, burned-in overlays, propellers, rig): per-camera low-variance + structure detector, opt-in
- Mac GPU memory forecast: warns next to the device picker and refuses a Mac run that won't fit (e.g. 9,824-view 360 sets: ~57 GB of photos), suggesting a worker or the largest image size that fits
- splatprep: parallel two-view verification (thread pool; OpenCV releases the GIL) — identical results, scales with cores
- Mac: errorDrivenDensify (FastGS-style): MCMC sampling weighted by each splat's share of the worst-fitting pixels (off; to be measured)
- Docs: rewrite USER_GUIDE and ARCHITECTURE for the current app/worker; Mac progressiveResolution option (¼→½→full, off; to be measured)
- Worker 1.3.9: progressiveResolution (¼→full over first half of densify) and decoupledSSIM options (off; to be measured)
- Eval harness: --eval … --save-renders DIR; tools/eval/evaluate.py (PSNR/SSIM/LPIPS-if-available, percentile visual sheets with detail crops)
- Regenerate docs/SETTINGS.md (109 settings)
- Compute → Benchmark: same synthetic training test on this Mac and each worker, plus transfer speed
- Automatic camera solver: learned SfM for 360 video (Object Capture placed 1,041 of 9,824 views)
- Keep video frames on the worker between steps (worker 1.3.8 'chain')
- Mac setting for PC local colour correction; worker 1.3.7 records scene up in trained PLYs
- Ignore splatprep build output
- Mac: big-splat penalty on by default (10)
- Worker 1.3.6: per-photo local colour correction (bilateral grid, opt-in)
- Viewer camera: keep the photo's heading when adopting a straight-down/up camera (drone nadir views were rotated); CLI --view uses dataset up
- Auto clean: also select floaters seen by few photos (contribution census per photo)
- Mac: densify stop 14k for High (19k Ultra); big-splat screen-size penalty (off by default, experimental)
- Opening a splat from a project's outputs/ loads that project's cameras (and clears stale ones); project gravity beats the file's up note; camera toggle enabled when watching
- Auto clean (Edit tab): select splats that never add > 2 % to any pixel of any project photo
- Keep the capture's gravity through pose refinement; F frames a watched job from its own central camera
- build_app.sh: SPLAT_BUILD_PATH to build the app without relinking a running CLI binary