Moon Base — a walkable lunar base in the browser, Gaussian splats streamed with Babylon.js

Hey Babylon community,

I’d like to share something I built on Babylon.js: an interactive Moon base you
can fly around in the browser.

:backhand_index_pointing_right: Live: Concept 001: Moon Base — de Gerlache Crater · FarsideLab

It’s the first concept in FarsideLab — an interactive catalogue of realistic
space-engineering concepts. This one is a south-pole base based on published NASA
architecture, sitting on real lunar terrain. Everything you see is Gaussian
splats, rendered with Babylon.js.

── The pipeline ──

  • Real NASA 5 m/px elevation data, displaced at true scale in Blender 5.1
  • Lit at correct solar values and path-traced in Cycles
  • Camera datasets exported in COLMAP format straight from Blender, via a custom add-on I wrote for this. So there’s no photogrammetry step and the poses are exact (zero pose error; the splats are trained purely from synthetic renders)
  • Gaussians trained in LichtFeld Studio
  • Compressed to SOG and streamed, rendered in Babylon.js

── The scene ──

It isn’t one big splat, it’s several, streamed and swapped as you move:

  • Main 3D window — 1.07 M Gaussians · 15.6 MB
  • de Gerlache Crater — 0.6 M · 8.75 MB
  • Blue Origin Mk2 site (published design) — 0.30 M · 5.39 MB
  • SpaceX HLS (published design) — 0.6 M · 9.16 MB
  • Base — 0.34 M · 5.63 MB

── A bit about me ──

My background is 3D modelling, rendering, animation and VFX, not so much web dev or coding. Claude Code has been helping me build the web side, and I’m on a fast learning curve because I want to actually understand and keep control of what I’m doing.

── Where I’d love the community’s input ──

I’m still relatively new to splats in Babylon and I’m sure I’m leaving performance on the table. A few things thinking:

  • Best practices for streaming/swapping multiple splat sets without hitches
  • Sorting/rendering cost as splat count climbs
  • Memory management across several loaded scenes on lower-end devices

Any tips, critique, or “you’re doing X the hard way” are very welcome!

── Promotion ──
Happy to have this shared around, thank you! :rocket:

Thanks for an engine that makes this kind of thing possible.

Kari Nöjd

10 Likes

nice integration to the scrollpage
sick concept too ofc

1 Like

Looks great !!!

1 Like

Thanks!

Thank you!