GS
gskit.dev v0.1.0
C++20 COMPILED
ZERO EXTERNAL DEPENDENCIES
UNREAL ENGINE 5.4 PLUGIN READY

Pre-Ingest Validation & Sanitization for 3D Gaussian Splatting

Standard 3DGS training pipelines (gsplat, Nerfstudio, PostShot) export binary PLY files that can contain NaN / Inf coordinates, unnormalized quaternions, and degenerate needle splats. gskit validates, sanitizes, and strips corrupted rows before importing into game engines or custom compute shaders.

View Repository
gskit sanitize scene.ply -o clean.ply --drop-ghosts
terminal — gskit info & sanitize
Live Fixture Metrics
$ gskit info corrupt_scene.ply
{
  "gaussianCount": 39,
  "shDegree": 0,
  "errorCount": 7,       // 4 non-finite positions (NaN / +Inf) + 3 zero quaternions
  "warningCount": 8,     // 5 dead ghosts + 3 needle splats
  "ghostCount": 5,
  "needleCount": 3,
  "bounds": {
    "min": [-1.500, -0.800, 0.000],
    "max": [1.500, 0.800, 2.400]
  }
}
$ gskit sanitize corrupt_scene.ply -o clean_scene.ply --drop-ghosts
Sanitization complete: Input Gaussians: 39 Valid (Kept): 27 Removed: 12 (7 critical errors + 5 ghost splats dropped) Output saved to: clean_scene.ply (AABB bounds preserved exactly)
$ gskit info clean_scene.ply ✓ errorCount: 0 | ghostCount: 0 | exitCode: 1 (needle warnings only)
[Deterministic Invariants]

Implemented Validation Checks

Direct mapping to include/gskit/validation.hpp specification

Code Level Trigger Condition Sanitize Action
NON_FINITE_POSITION Error NaN or Inf in position (x, y, z) coordinates Dropped
ZERO_QUATERNION Error Quaternion norm is near zero (0, 0, 0, 0) Dropped
NON_NORMALIZED_QUATERNION Warning Quaternion magnitude deviates from unit length |q| != 1.0 Kept (Reported)
ANISOTROPIC_SCALE Warning Needle splats with exp(s_max) / exp(s_min) > 1000 Kept (Warning)
DEAD_GAUSSIAN Warning Residual invisible splats: sigmoid(opacity) < 1e-4 Dropped with --drop-ghosts
UNEXPECTED_SH_DEGREE Error Spherical Harmonics count does not match degree 0, 1, 2, or 3 Abort file read
[Native Engine Integration]

Unreal Engine 5.4 Commandlet Plugin

GSKit ships with an official editor plugin (Plugins/GSKit/GSKit.uplugin). It exposes GSKitSanitizeCommandlet for headless automated asset ingestion in CI/CD pipelines.

-run=GSKitSanitizeCommandlet
Editor Module Native C++ integration using Unreal Engine's FRunnable and core memory utilities without external shared library runtime dependencies.
Automated Cook / Ingest Runs during build scripts to verify and filter scanned indoor/outdoor point clouds before baking into final level packages.