Chris Dilger

← Writing · · projects, 3d, rust, bevy

A digital twin of our house, built from the drawings

Walk through a full 3D model of a new-build home and its street, switch between construction stages (slab, frame, finished), and mark up where you want things to go. It runs in the browser, on desktop or phone, with nothing to install.

This one is private, and it is staying that way. A model this complete (the house, the street, the estate around it) would make our address trivial to work out, so I am not sharing the model or its link. What you see here are screenshots and a top-down floor plan, which is as far as I am comfortable going. The ideas are the interesting part anyway, and they transfer to any house.

Generated, not drawn

The model is generated from code, not clicked together by hand. A semantic schema and a set of parameters describe the house, and scripts turn them into walls, framing, roofs, fit-out, electrical and furniture. The same pipeline builds the surrounding street and estate, and it runs inside Fusion and Blender.

Every element has a stable ID. A change shows up as a diff, and the model rebuilds identically from the same inputs. That one property is what makes everything below possible.

What you can do with it

Engine frame: the house from across the street with the proposed front garden AI visualisation: the house from across the street with the proposed front garden Engine frameAI visualisation
Same camera pose, before and after. The trees in the model are plain stand-ins at the scenario's real positions; the picture is a draft proposal, not a photo. Plants, light and wear are invented by the image model, and every picture in the viewer is stamped to say so. A drift check compares edges against the engine frame to catch re-framing.

Why bother

Decisions become visible before they are expensive. Where the outlets, lights, furniture and fences go, and whether a car and trailer actually fit, are much cheaper to argue about in a model than on site.

Collaboration is a link. The family opens it on a phone and comments. Nobody installs anything. (The link sits behind a sign-in; it is for us, not the internet.)

Trust is explicit. The project separates planned, observed, measured and verified as built, and keeps evidence status separate from review status. A thing being in the model does not mean anyone has checked it.

Quality is measured both ways. Validation scripts check precision (does what is modelled match the drawing?) and recall (is everything the drawing shows actually there, and can you walk into every room?). Each gate prints what it does not cover, so a green tick never overclaims.

It is reusable. The house is data, not baked into the product, so the same platform could take another property.

It is good for physics too

Because the walls, doorways and furniture are data, the model can feed other tools. I sliced it at head height and ran an airflow simulation on it, to work out where a fan should go to push the split system’s cold air down the hallway. It runs live in the browser: choosing a quiet fan with physics.

How it was built

Like everything else I am working on at the moment, this was planned as beads and built by a herd of agents working through the ready queue, with me reviewing the diffs and walking the model. The stable element IDs turned out to matter as much for the agents as for the family: a bead can point at wall.kitchen.north and mean exactly one thing.