A whole house from hand sketches, in Three.js
Floors as data, walls generated on a half-foot grid, a facade placed by rule. How a four-level house model went from pencil sketches to a client pack in two days.
The client arrived with pencil sketches: a basement, ground and first floor, a roof, and a plot on a slope. Dimensions were written on each room. Some rows did not add up. They also had photos of a neoclassical facade they liked.
What they wanted was simple to say and hard to get from paper: to stand in front of the house and walk through it before paying for architect drawings.
Rooms are data, walls are generated
Each floor in the model is a list of rooms: x, z, width, depth in feet. Walls, doors and parapets are generated from that list on a 0.5 ft grid. Change one number and the whole house rebuilds.
This is the decision that made two days possible. If I had drawn walls by hand in a modelling tool, every correction from the client would have meant redrawing. With rooms as data, a correction is an edit to one line, and the walls, the doorways, the terraces and the parapets follow.
That also settled the "dimensions don't add up" problem. The rule, agreed with the client: keep every labelled number exactly as written and absorb mismatches with filler spaces, instead of quietly changing a 22 to a 21.
The reason is trust. The client knows their sketch. If the model shows a hall as 21 by 32 when they wrote 22 by 32, they stop believing everything else in it. A thin filler strip that is clearly marked is honest, and it tells the architect exactly where the sketch needs a decision.
The site is half the model
The plot slopes. The parking yard sits at ground-floor level at one end; the main entrance is at the other end, at a half level, with one flight up to the ground floor and one down to the basement. Side paths step down nine steps to the court. None of that shows on a flat floor plan, and all of it matters for how the house feels, so the site is modelled: yard, gates, side ways, boundary with lantern pillars.
I got this wrong on the first pass. I had put the main entrance on the parking-yard side, because that is where a front door usually goes. The client corrected it from a photo of the actual grey structure: the entrance is at the opposite end, with a sliding main gate, a wicket gate beside it and four fluted pillars below a full-width balcony. The entrance was then re-measured from that photo, pillar by pillar, and two of the exported views were set to reproduce the photo's camera position so the client could compare the model with the real building side by side.
A facade by rule, not by hand
Fluted columns, stone strips, cornices, balusters and gate ornaments are placed automatically along exterior room edges. A dusk mode switches the lighting. The viewer has whole-house, per-floor 3D, per-floor plan and inside views.
Placing ornament by rule has the same benefit as generating walls. When a room moves, its windows, its cornice and the downlights under it move too. The style came from the client's reference photos: cream neoclassical, gold lattice railings on the first floor, lanterns on the boundary pillars. One detail I left generic on purpose. The reference gate carried a fashion brand's medallion, and a client model should not reproduce someone else's trademark, so the gate has a plain rosette.
Keeping every version
Each large revision was saved as its own file before the next one started: the first layout, the version before the grey-structure corrections, the version before the entrance was re-measured. It costs nothing. When a client asks "what did it look like before we moved the gate", the answer is a file, not a memory.
The deliverable
An export script drives the viewer with Playwright: 16 renders, a 27-second walkthrough video and an 8-page PDF. The client approved the layout from the model and the pack became the architect's brief.
Automating the export matters for the same reason as everything else here. A model that changes needs a pack that can be regenerated in minutes, with the same camera angles every time, so two versions can be compared page by page.
What the model is not
It is a design model, not a construction drawing. Stair flights are drawn straight where the real ones turn. Window positions come from the facade rules, not a survey. Plot dimensions beyond the sketch are estimates. All of that is written in the PDF, because a model that looks precise will be treated as precise unless it says otherwise.
What came next
The same house later went from grey structure to approved interiors, room by room, with a furnished version of this model. That is a separate write-up: Home Renovation Design.
Case study: 3D Architecture Model. The service page is 3D house models and interior design visualisation.