gsplat-grounding

Drop a character into a Gaussian-splat scene and it walks on the floor.

View on GitHub →

Three options for the floor

Marble's collider — built for cameras, not characters. Climbs onto seats.
No floor logic. Feet sink through the floor.
Floor derived from the splat itself. Character walks.

What V1 does

V1 finds the floor in any indoor Gaussian-splat scene. The library samples where the splats are, looks for the densest low band of points per (x, y), and uses that as the surface the character walks on. The same splat file is the visual environment and the floor — no authored mesh, no preprocessing.

Level changes that have a single elevation per (x, y) get followed: slopes track smoothly, raised platforms (a step, a podium, a deck) get walked onto. Stairs work but flatten into a slope at the heightmap's resolution; discrete stepping is V3. Multi-floor scenes — balconies, mezzanines, walking under a table — can't be represented with one Z per (x, y) at all; that's also V3.

The lib's scope is producing a floor heightmap from a splat. What you do with it — kinematic snap, physics, navmesh — is yours. Jumps and falls (character controllers) and object recognition (scene understanding) aren't part of this lib.

floor floor splats furniture ceiling
find the densest low band of splats per cell, use its top as the floor

Roadmap