Two Gunpla scanned as 3D Gaussian Splats, relit inside a three.js city

I built these two model kits years ago. I scanned them on my phone, turned them
into 3D Gaussian Splats, and placed them in a city I generated in three.js.

Live: https://sector07.narayaman.workers.dev
Drag to orbit. H toggles the HUD. WebGPU recommended, falls back to WebGL2.

It runs on the native splat renderer from r186. The captures came with their own
baked lighting, so I wrote a relight pass to make them take the dusk key light
and the fire glow from the ruins. Splats cast no shadows, so I build a convex
hull from the splat positions and use it as an invisible shadow caster.

The whole frame goes through a cockpit monitor pass. The HUD is not a DOM
overlay. It is drawn to a 2D canvas and sampled inside the post pass, so it takes
the same distortion and scanlines as the scene.

The loading screen runs in a worker, because rAF stops during a synchronous block
and a main thread loader would freeze exactly when you need it.

Personal, non-commercial work. The units are captures of store-bought model kits
and all designs belong to their respective owners.