How ooolabdev/ooosplat works
OOOSplat is a local Tauri desktop app that turns a video or image sequence into a Gaussian Splatting project, then supports preview, editing, and export. The main flow runs from the React task UI through Tauri commands into a Rust pipeline: prepare frames, reconstruct cameras and geometry, train splats, and publish a validated PLY. Separate branches cover incremental reshoots, project history, Gaussian editing/animation, and opt-in telemetry. The README documents these capabilities; sampled source confirms the app calls and project persistence, but not every internal pipeline call.
Main entry points: runner.rs Pipeline runner · GaussianViewer.tsx Gaussian viewer · backend.ts Tauri API client · App.tsx Task UI
Components 24
Desktop interface
- Task UI
src/app/App.tsx - Tauri API client
src/lib/backend.ts
Generation workflow
- Native commands
src-tauri/src/commands/mod.rs - Pipeline runner
src-tauri/src/pipeline/runner.rs - Media preparation
src-tauri/src/video/mod.rs - Engine adapters
src-tauri/src/engines/mod.rs - COLMAP reconstruction
src-tauri/src/engines/colmap.rs - Brush training
src-tauri/src/engines/brush.rs - Auto optimization
src-tauri/src/planner/mod.rs - Model validation
src-tauri/src/reconstruction/mod.rs
Project lifecycle
- Project manager
src-tauri/src/project/manager.rs - Project catalog
src-tauri/src/project/catalog.rs - Incremental reshoot
src-tauri/src/planner/bridge_backfill.rs
Preview and editing
- Gaussian viewer
src/components/GaussianViewer/GaussianViewer.tsx - Edit state
src/stores/gaussianTransformStore.ts - Selection controller
src/components/GaussianViewer/GaussianSelectionController.ts - Animation and export
src/components/GaussianViewer/PreviewAnimation.ts
Usage telemetry
- Telemetry preferences
src/components/TelemetryPreferences.tsx - Telemetry service
src-tauri/src/telemetry/service.rs - Telemetry settings
src-tauri/src/telemetry/mod.rs
Other components
- User
- Local project files
- Local media engines
- Telemetry endpoint
Connections 28
- User → Task UI: selects task
- Task UI → Tauri API client: invokes commands
- Tauri API client → Native commands: dispatches calls
- Native commands → Pipeline runner: starts pipeline
- Pipeline runner → Auto optimization: plans parameters
- Pipeline runner → Project manager: creates project
- Pipeline runner → Media preparation: prepares media
- Media preparation → Local media engines: runs FFmpeg
- Pipeline runner → COLMAP reconstruction: reconstructs cameras
- COLMAP reconstruction → Local media engines: runs COLMAP
- Pipeline runner → Brush training: trains splats
- Brush training → Local media engines: runs Brush
- Pipeline runner → Model validation: validates output
- Project manager → Local project files: writes project
- Project manager → Project catalog: registers project
- Task UI → Incremental reshoot: requests reshoot
- Native commands → Incremental reshoot: starts reshoot
- Task UI → Gaussian viewer: opens preview
- Gaussian viewer → Tauri API client: requests preview
- Gaussian viewer → Selection controller: selects splats
- Selection controller → Edit state: updates edit state
- Gaussian viewer → Edit state: reads edit state
- Gaussian viewer → Animation and export: plays animation
- Gaussian viewer → Tauri API client: saves and exports
- Telemetry preferences → Tauri API client: sets consent
- Native commands → Telemetry service: initializes telemetry
- Telemetry service → Telemetry settings: reads and writes
- Telemetry service → Telemetry endpoint: sends events