A photoreal Gaussian splat scan of a showroom composited over a Revit BIM model in the APS Viewer, with a section plane slicing through both at exactly the same depth.
Two visual languages that almost never share a viewport: the clean parametric line-work of a Revit model and the fuzzy, photographic cloud of a Gaussian splat capture. Michael Beale's gaussian-splats-lmv pulls both into the same APS Viewer canvas, and they behave like neighbors. Pan, orbit, slice the building with a section plane, and the photorealistic reality capture obeys the same cut. A real showroom interior settles into its Revit shell, and the same blade goes through both.
The whole thing is roughly 600 lines of JavaScript across three modules, which sounds suspicious until you read them. Each splat is an instanced quad whose "texture" is a mathematically computed Gaussian falloff, shaped by projecting a 3D covariance matrix through the camera. Sorting is the real party. Transparent splats can't hide behind a Z-buffer, so every camera nudge re-orders millions of them back-to-front via a 65,536-bucket counting sort running O(n) inside a Web Worker. Splats themselves pack into 32 bytes apiece (XGRIDS' LCC format, which sidesteps COLMAP photogrammetry by leaning on phone-grade LiDAR instead). Section planes line up because the vertex shader evaluates the exact half-space equation LMV uses internally. No coordinate gymnastics, no sign-flip hunting at 1 a.m.
Worth poking at. Append ?lcc= with a URL to one of the sample scans from the XGRIDS developer portal and watch your own capture drop straight into the viewer. Read splat-renderer.mjs for the Worker sort, lcc-loader.mjs for the byte layout, and Michael's APS blog post for diagrams of both.
- Live Demo: https://wallabyway.github.io/gaussian-splats-lmv
- Source Code: https://github.com/wallabyway/gaussian-splats-lmv
- Author: Michael Beale (X, LinkedIn, GitHub)