← All cases
Case 013 Game Assets / 3D Printing

Browser 3D Modeler

Live — andrewwigman-001-site7.htempurl.com ↗

Making a game asset means either Blender — powerful, but a menu labyrinth that punishes anyone who isn't a full-time modeller — or a CAD package priced and shaped for engineering. Neither records how a part actually moves: a cannon that tilts on an axle is, to the tool, just triangles. And print-bound models need millimetre truth that polygon modellers never enforce.

A from-scratch 3D modeller that runs in the browser, built on a planar-face CSG kernel with editable parametric history: every shape stays a step you can go back and re-dimension. Hard-surface only by design — vehicles, buildings, objects, weapons — which is what lets it lean on projection UVs and direct manipulation instead of nested menus. Mechanical assemblies are first-class: joints carry axes and limits, can be inferred from the geometry, and export alongside the mesh.

A shelled, open-topped part in the modeller: live millimetre dimension labels on every edge, a copper-patina material, mass estimated in PLA, and the parametric history (Box → Open shell) still editable on the right.
Exhibit 013-A A shelled, open-topped part in the modeller: live millimetre dimension labels on every edge, a copper-patina material, mass estimated in PLA, and the parametric history (Box → Open shell) still editable on the right.
External dependencies
0 — pure C# geometry kernel, hand-written WebGPU renderer, no Three.js, no NuGet
Parametric history
13 re-editable op types — extrude, revolve, sweep, fillet, draft, shell, array, mirror, thread, boolean…
Sketch constraints
geometric solver — coincident, parallel, perpendicular, concentric, point-on-line, plus dimensions
Mechanical joints
5 kinds with travel limits, live pose preview, and inference from the geometry
Print tooling
mm-scale throughout, mating-part clearance check, print-in-place hinge generator
Export
glTF (.glb), STL, 3MF with colour, OBJ, plus PNG snapshot and 4-second turntable WebM
AOT publish
7× faster booleans — 254 ms vs 1,788 ms on the benchmark merge

Blazor WebAssembly over a pure-C# kernel and a raw-WebGPU renderer on the principle "C# owns truth, JS owns frames"; built against a written mission document and per-subsystem roadmap files, with overnight adversarial agent audits — finders plus two skeptics per finding — feeding a tracked, adjudicated fix list.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.