A Swift package for loading and saving compressed 3D Gaussian splat files (.spz format).
SPZKit is a native Swift implementation of the SPZ file format for 3D Gaussian splats. SPZ files are typically 10x smaller than PLY equivalents with virtually no perceptible loss in visual quality.
- ✅ Load and save
.spzfiles - ✅ Convert between
.spzand.plyformats - ✅ Automatic coordinate system conversion
- ✅ Native Swift implementation
- ✅ iOS and macOS support
Add SPZKit to your Package.swift:
dependencies: [
.package(url: "https://github.com/YannisDC/SPZKit.git", from: "1.0.0")
]Or add it via Xcode: File → Add Package Dependencies...
import SPZKit
// Load from file
let gaussians = loadSpz(from: "path/to/file.spz")
// Or load from Data
let data = try Data(contentsOf: url)
let gaussians = loadSpz(data)import SPZKit
// Save to file
try saveSpz(gaussians, to: "output.spz")
// Or get as Data
if let data = saveSpz(gaussians) {
// Use data...
}import SPZKit
// Load SPZ and convert to PLY
let gaussians = loadSpz(from: "input.spz")
try saveSplatToPly(gaussians, to: "output.ply")SPZKit supports automatic coordinate system conversion:
// Specify coordinate system when loading
let options = UnpackOptions(to: .rdf) // PLY coordinate system
let gaussians = loadSpz(from: "file.spz", options: options)
// Specify coordinate system when saving
let packOptions = PackOptions(from: .rdf)
try saveSpz(gaussians, to: "output.spz", options: packOptions)- iOS 13.0+ / macOS 10.15+
- Swift 6.2+
MIT
- SPZ Format Specification - Original C++ implementation by Niantic Labs
- Scaniverse SPZ - More information about the SPZ format