Skip to content

Splat Studio 1.0.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 09:04
· 173 commits to main since this release

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