AI · Code · 2025–26
BuildingMatter: from descriptor to rubble
A procedural parametric building generator with destruction-ready output. Not a facade kit: a building that knows it has studs behind the drywall, and what happens when a tank shell goes through it.
- Role
- Systems design, engineering
- Status
- 2.0.0 beta
- Engine
- Unreal 5
- Scale
- 19,636 lines · 56 files

The idea
A building, not a facade
Most procedural building tools give you a facade. BuildingMatter gives you a building.
A wall here is not a box with a brick texture. It is a layer stack (cladding, sheathing, studs, insulation, finish), and each layer becomes its own mesh with its own material and its own physical material. Floors get joists, subfloor and ceiling board. Roofs get a ridge board, rafter pairs at 24″ on center, collar ties, gable studs, sheathing, tiles, fascia and soffit. The defaults are real lumber dimensions. Blow a hole in a wall and there is framing inside it, because the framing was always there.
Massing composes the same way: ten volume types (staircase, elevator shaft, atrium, catwalk, spire and more) boolean together on a voxel grid with priority resolution, so an atrium punches out its own floors and a spire wins its overlaps. Roof-to-roof valleys on L- and T-shaped masses are detected and cut automatically.
The work
Boxes in, buildings out
The artist workflow: drag colour-coded volume boxes into the level. They snap to a grid by their minimum corner so they tile cleanly, share a building ID, and one Generate press resolves the mass.
Style lives in a descriptor data asset: roughly 120 clamped, categorised parameters covering siding profiles, five roof types, parapets with crenellations, dormers, window casing and jamb detail. One descriptor can dress a whole district, or be overridden per volume for a brick ground floor under stucco.
Every surface gets world-space planar UVs at 1 unit = 1 m, so tiling materials just work at any scale with no unwrapping and no seams to babysit. An Interior Editor mode draws floor plans directly in the viewport (top-down ortho toggle, snap presets, polyline walls, click-to-place doors), stored volume-local, so the plan travels with its box.
The build
Straight to vertices, straight to Nanite
No CSG anywhere. Windows are not booleaned out of walls; each wall face is constructed as a frame around its openings, quad by quad. That removes the biggest cost and the biggest failure mode in procedural architecture at once: no boolean solver, no sliver triangles, no non-manifold surprises, and generation stays deterministic run to run.
Under the hood it is a ten-stage pipeline where each stage does one job and hands a plain data structure to the next: volumes rasterise into a sparse voxel grid, exterior faces merge into wall runs, runs become classified surface polygons, every roof computes a single shared datum its generators cannot disagree with, and nine specialist generators emit vertices directly. You author against live dynamic-mesh previews, then bake once to Nanite-enabled static meshes with convex collision built from the fragment vertices.
Destruction is pre-computed, not runtime: Voronoi, grain-aligned, radial and brick-bond fracture patterns bake at finalize time into per-fragment meshes, spatially bucketed so a hit swaps a 2 m chunk rather than a whole facade. Fracture seeds derive from world position, so the same building shatters the same way every time. Component tags hand the pre-fractured geometry to an external destruction system to swap on impact.
Note
The honest version
Everything above is real and in the code. So are the sharp edges of a 2.0 beta: generation is entirely single-threaded and synchronous, so finalizing a large destructible building locks the editor with no progress bar; and a handful of the artist-facing conveniences (per-volume style overrides, the interior editor's footprint clamping, the default-descriptor fallback) are wired up but currently misbehave. That list is the current work.