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

**URL:** <https://discourse.threejs.org/t/two-gunpla-scanned-as-3d-gaussian-splats-relit-inside-a-three-js-city/94407>\
**Category:** Showcase\
**Tags:** post-processing, gaussian-splats, tsl, webgpu\
**Created:** [September 16, 2026, 12:06pm UTC](https://discourse.threejs.org/t/two-gunpla-scanned-as-3d-gaussian-splats-relit-inside-a-three-js-city/94407 "2026-09-16T12:06:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![northprint](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/northprint/32/72196_2.png) [@northprint](https://discourse.threejs.org/u/northprint)\
**Post date:** [September 16, 2026, 12:06pm UTC](https://discourse.threejs.org/t/two-gunpla-scanned-as-3d-gaussian-splats-relit-inside-a-three-js-city/94407/1 "2026-09-16T12:06:59Z")

</div>

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](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.
