Casa Cornell
On this page03e Rebuilt03f Registered03g The solid03h Photographed
03eRebuilt

Every room now matches the paper it was drawn from.

The section before this one measured the old schema against the draftsman’s own lettering and found 0 of 23 rooms within 5%, with no transform of the page able to rescue it. So both sheets were traced again, from the lettering out: every room placed at the size written inside it, walls built between them, and the two floors registered to each other on the shared outer wall.

The same check that failed the old file was re-run against the new one without changing a line of it. 23 of 23 lettered rooms land within 2%, median absolute error 0.0%. The implied scale, which used to run 0.49× to 2.53× across rooms, is now 1.00× to 1.00×. The sheet’s own dimension line reads 128.02 ft across and the retrace measures 128.02.

The photographed first floor plan
    with every retraced room drawn over it in colored outline and labeled: mud room, kitchen, pantry, butler
    pantry, dining room, foyer, stair, gym, great room, office, powder, bath 1, suite 1, two car garage, tandem
    garage, gazebo and five covered porches. Each outline sits on the walls printed underneath it.
First floor. Colored outlines are the retrace; the gray linework under them is the photographed sheet. Read from retraced-fidelity.json.
The photographed second floor plan
    with the retraced upper rooms drawn over it in colored outline and labeled: bedrooms 2 to 5, baths 2 to 5,
    walk-in closets, laundry, theater, loft, stair, bridge and three balconies. The red footprint outline sits on
    the printed outer wall. Most outlines sit on the rooms they name; the theater, the loft and the two east
    baths sit up and left of theirs by a few feet.
Second floor. 9 of the 23 rooms sit within a quarter foot of the walls they name. The theater, the loft, the stair and the east baths are the ones out of place, the worst by 3.7 ft, for the reason in the next section. Read from plan-snap.json.

Split by sheet the picture holds: floor one lands 26 of 26 sides within 5% at a fitted factor of 0.9999, floor two 20 of 20 at 1.0001. A single number now describes the whole page on both sheets, which is what it looks like when there is nothing left for a transform to correct. Retracing cost $0.00.

03fRegistered

Where the second sheet sits, measured rather than assumed.

The retrace is calibrated on one photograph: 12.404 px per foot with its datum read off the 128 ft dimension line on the first-floor sheet. Drawing those coordinates onto the second sheet used the same three numbers, and three numbers cannot express the perspective between two photographs taken from different distances at different angles. The second floor came out 79 px off.

Both sheets are photographs of the same drawing set, so the outer wall, the overall dimension line, the gazebo octagon, the angled garage wing and the title block are drawn identically on both, and the pair is related by a homography that can be measured. The daylight gradient and the hard diagonal shadow come out by dividing each image by a 41 px blur of itself, then SIFT on what is left, matches kept only where both directions agree, and a RANSAC fit at 3 px. 125 matches, 51 inliers, median reprojection 0.42 px.

The two plan sheets overlaid after the
    solved transform, the first floor in cyan and the second in red on black. The outer walls, the gazebo
    octagon, the angled garage wing, the covered porches and the two overall dimension lines along the bottom
    appear white where both colors fall on the same line. The title block words overprint letter for letter.
The second sheet warped onto the first: cyan is the first floor, red the second, white is both at once. A low reprojection error only says the inliers agree with each other, so this asks whether they covered the page. The outer wall, the gazebo, the garage wing and the bottom dimension lines coincide, and the title block overprints letter for letter. What stays in one color is the interiors, which are different floors. Read from sheet-registration.json.

What is left is where the rooms sit inside that outline. Measured against the wall runs the detector found, the first floor’s room sides are a median of 0.0 px from the wall they name, with 62% of its 113 sides exactly on one. The second floor’s 92 sides are at 15.2 px, about 1.2 ft, with 36% exactly on. The second sheet writes a dimension inside ten of its rooms and draws the roof over the others, so the others were placed by which quarter of the page their label sits in.

Searching for the position where a room’s sides lie along drawn walls was written three times and failed the same control each time. Run against the first floor, whose positions are verified on all 26 lettered sides, it moves 18 of 27 rooms more than a foot. The third version said why. Walls alone do not identify which wall-bounded cell a labeled room is: shift a 5 ft closet sideways by its own width and all four sides are still on walls, because the neighbor’s walls are walls too. Picking between those cells wants the printed label inside the room. The offsets are computed, recorded and unused; all three attempts are kept.

03gThe solid

A house with a back, for the first time.

The retraced rooms are extruded into walls, the openings cut where the sheets draw them, and a hipped roof at the pitch the elevation letters is built over the whole footprint including the diagonal wing and the gazebo. Everything earlier in this project was a front: generated from one elevation, so the sides and the rear were invented by whichever model was asked last.

3,509 faces. 53 openings cut from the sheets rather than placed by rhythm. Roof pitch 4.5/12, read off the elevation. Footprint 131.4 × 98.3 ft, standing 29.4 ft to the ridge.

A shaded gray solid model of the house seen
      from above and to the south east: main block with a hipped roof, a two storey porch along the south face,
      an octagonal gazebo at the west end and a diagonal wing running off to the south east.
Massing

The solid

Built from the retrace, both floors, roof included.

The same view as a white sheet with black line
      drawing: every face boundary of the model, hidden lines removed, including each window and door opening.
Control

The line map

13,205 segments, hidden line removed, drawn from the same camera.

The line map is drawn from face loops rather than from merged edges, because merging coplanar faces drops every window back into its wall. It is the constraint the next section spends money against.

03hPhotographed

A sentence telling a model to keep the camera does nothing.

The house is Victorian Southern, in Orlando, so the massing needed materials, light and a garden. The prompt that asks for those also has to stop the model redrawing the building while it works. Told in words to keep the camera and the geometry, three models out of three walked away from it.

First paid run: Seedream v5 Pro, Qwen Image 3 and FLUX 2 Pro, four views each, handed the shaded render and a paragraph of Victorian Southern description ending in keep the camera, the massing, the roof shape and the position of every opening exactly as they are. FLUX 2 Pro was the only one that came back with a building. All three threw the camera away on 3 of 3 aerials and returned a ground level shot of a compact cottage. The same sentence held on 2 of 2 elevations, which are already at ground level, so the instruction was only ever being obeyed where it cost nothing.

Three fixes followed, and every one of them is a number the renderer had already computed and was throwing away. The hidden line map instead of the shaded render, so the constraint arrives as a picture. The camera’s own azimuth and elevation, said back as prose: an aerial photograph from a drone, 30 degrees above the horizon, looking down on the house from the south east. Then the box the ink occupies in the frame, from 26% to 93% across the picture, because the west map leaves a third of the page as paper and the model kept enlarging the house to fill it.

Photograph of a two storey cream clapboard house with a green
      standing seam hipped roof, a full width porch on turned posts with a white balustrade, dark green louvered
      shutters, an octagonal gazebo at the left and a wing at the right, on a mown lawn under live oaks with
      Spanish moss.
Southfrom the ground

The front

Porch, balcony, gazebo and the wing roof all land on the map.

Photograph of the same house from the west: the gazebo end nearest
      the camera, the two storey porch running away to the right, palms and azalea beds against the foundation.
Westfrom the ground

The gazebo end

The frame that had to be told where the drawing sits.

Aerial photograph of the house from above and to the
      south east. The green metal hipped roof fills the middle of the frame, the two storey porch runs along the
      near face, the gazebo sits at the far left and the diagonal wing runs off to the lower right, all in a
      garden of palms and live oaks.
South east30° drone

Over the roof

The frame that registers almost line for line.

Aerial photograph of the house from above and to the
      south west, the gazebo in the near corner, the main hipped roof beyond it and the wing running away to the
      far side.
South west30° drone

The other aerial

Lost at first. Held once the camera angle went in as a number.

03iRegistration

The map laid back over the photograph, in red.

Every black pixel in the line map is an edge computed from the plan. If the photograph is faithful, those pixels sit on edges in the photograph too. Painted red over the result, a wall that moved shows up floating in the middle of siding, and a roof that changed shape shows up crossing open sky.

Four rows, one per view. In each row
    the photograph on the left and the same photograph on the right with the line map painted over it in red.
    The red lines follow the ridge, the eaves, the porch posts and the window openings in the photograph.
All four views. Ink covers 2.63.7% of each frame. Read from styling-fidelity.json.

The four shipped here come from three passes, because the third fix helps a frame the model wants to enlarge and hurts one it was already holding: adding the framing box fixed west and knocked the south east aerial back to ground level. West is the pass that carries the box, the south east aerial is the pass before it, and both aerials plus the south elevation are kept at the pass where they registered. The rejected frames are in the sealed payload alongside the ones that shipped.

22 images requested, 21 collected, $1.24 billed across four passes. One image was paid for and never downloaded: the runner’s shell died between submission and download, and a queued execution is billed at the queue. Sealed as victorian-styling-20260813-r1, 220 files, 225 MiB, every one hashed.

All six stages run from one command, so a plan and a style are the whole input: bd-house-pipeline-r1.mjs takes the retrace to the massing, the massing to the render and the line map, the model back onto both sheets as a check, the styling, and the registration plates. Five of the six are free and local. --style=my-house.txt swaps the Victorian Southern text for any other, and the camera paragraph is inserted into it either way, because the azimuth, the elevation and the framing box are facts about the render rather than matters of taste.

BackThe planNextCapture

The house does not exist yet, so its first picture was generated.