PreviewCasa Cornell

From two photographs of a blueprint to a house you can walk through

Every image, clip, and number on this page descends from two phone photos of the construction plans, taken March 6, 2026. This is a preview cut of the work. The full interactive studio and the complete research log post later, on this same address.

First floor sheet as photographed Cleaned sheet, ink isolated Walls traced as a graph Verified schema with dimensions Structure raised from the schema A style applied to the exterior
The sheet as photographed

01 · Two sheets

No scanner, no CAD files, no site survey. Two sheets of the construction set, photographed with a phone on 2026-03-06. The sheets carry their own dimensions: overall width 128'‑0 1/4", great room 28'0" x 28'6", roof pitch 4.5/12. Those numbers become load bearing later on this page.

First floor plan photograph
First floor sheet
photographed 2026-03-06 · Galaxy Z Fold5
Second floor plan photograph
Second floor sheet, including the roof plan
source of the 4.5/12 pitch callout

02 · The first attempts did not work

The obvious approaches came first, and they are kept here on purpose. A model asked to find rooms found rooms that do not exist. A Hough transform found hundreds of candidate lines, most of them dimension arrows, text, and furniture. Failed output is evidence of what the problem actually is, so none of it was deleted.

Hallucinated room detection
rejectedRoom detection, first pass
confidently labeled rooms that are not on the sheet
Hough line candidates
rejectedHough line extraction
walls, arrows, and text all score as lines
Flat-field normalization
Flat-field normalization
first step that survived: removing the photograph from the paper
Wall grid maxpool
Wall grid, max-pooled
closer: walls emerge once text and arrows are suppressed
First full vectorization
First full vectorization
end of the early era: a plan the code can read
First 3D extrusion
First 3D extrusion
crude, but the sheet is standing up for the first time

03 · Cleaning the sheet without destroying it

A blueprint photo is mostly noise: paper texture, shadows, handwriting, uneven light. The cleanup rebuild ran three methods head to head under one rule: remove noise, never remove evidence. The black-hat variant produced the cleanest-looking sheet and was rejected for it, because it also ate faint wall strokes. The RGB consensus pass won. Ink coverage fell from 25.6% to 7.3% on the first floor and 22.8% to 7.7% on the second, and every removed pixel is logged in an audit overlay.

Cleanup before and after comparison
Before and after, side by side
the photograph leaves, the drawing stays
Rejected black-hat cleanup
rejectedBlack-hat morphology
cleanest result, discarded: it removed evidence along with noise
Selected RGB consensus cleanup
selectedRGB optical-density consensus
three channels must agree before a pixel counts as ink
Audit overlay of removed pixels
The audit overlay
what was removed, where, and under which rule

04 · Walls become a graph

Walls are traced as a connected graph, not as pixels. Every candidate trace is scored against the cleaned sheet and either admitted with its score attached or rejected into the log. Three traces were admitted: kitchen 0.9323, great room 0.9870, theater 0.9432.

Wall graph trace
The wall graph
nodes, spans, and openings instead of ink
Verified floor schema
The verified schema
dimensions read off the sheet ride along as evidence · accepted-traces.json · verified-schema.json

05 · The schema is the contract

The output of the trace stage is not a picture. It is a schema: 2 floors, 51 named spaces, 203 schematic walls, each dimension stored next to the ink it was read from. Everything after this point renders from the schema, and when a render disagrees with the schema, the render is wrong. That one rule is what kept five months of restyling and generation from quietly redrawing the house.

06 · The walls rise

The schema, extruded and filmed: one continuous move from the schematic shell to a styled exterior.

Structure to exterior
rendered from the schema, no manual modeling

The full blueprint cinematic is a single self-contained page that plays the scan, trace, and rise sequence live in your browser. It is an 8 MB load, so it waits for a tap.

8 MB · runs entirely in the browser · nothing is prerecorded

07 · A studio grows around the house

The reconstructed interior became a small studio: rooms, lens, time of day, weather, horizon, practical lights, a fireplace with its own flicker and spill, and a party mode that listens to the music. The capture below is one scripted pass recorded live from the running build, no editing: afternoon in the great room, the fire ramping up, dusk, the kitchen practicals coming on, a night dance party driven by the audio, a storm with lightning, then outside to watch the sky clear over a changed horizon, and back to the fire.

One scripted take through the live studio
every change on screen is a parameter, not an edit

08 · Nine rooms, one world

Every room from the schema is standing. These are live captures from the current walkable build, not renders from a modeling package. Pick a room the way you would pick a world on a level-select screen. The full version of this page will let you walk them here.

Exterior
01Exterior
Foyer
02Foyer
Great room
03Great room
Kitchen
04Kitchen
Dining room
05Dining room
Primary suite
06Primary suite
Theater
07Theater
Loft
08Loft
Office
09Office
Great room splat with persistent actor
The great room as a radiance-field reconstruction
with a persistent actor standing in it between views
Three cell atlas
Three rooms rendered from one atlas
the cells share a single source of truth

09 · Styles, and the Victorian question

Styling is a separate layer from evidence, chosen the same way as the rooms above. One test mattered here: a Victorian Southern restyle of the exterior. It is the best-looking failure in the project. The plans call a 4.5/12 roof pitch; the Victorian style wants 10/12 or steeper. Of eight checked features, three genuinely supported the restyle, four contradicted the sheets, one was neutral. The shipped verdict:

"The porch system, faceted bays, and asymmetry genuinely match the idiom. The roof pitch, absent tower, attached garage, and room program do not. A Victorian render is a deliberate restyle of this house, not a reconstruction of it - and it must never enter the pipeline as property evidence."

Drag the line to compare the as-built exterior with the Victorian restyle.

Victorian Southern restyle
As-built exterior
as built
victorian southern
rejectedThe Victorian in motion
beautiful video, geometrically useless: 124 of 124 image pairs refused to solve into a 3D model. Kept as the measure of what "looks right" is worth without geometry.

10 · Video is asked to prove itself

The current era runs in reverse: generate video of the house, then force it through the same photogrammetry gauntlet as real footage. If cameras cannot be solved from the frames, the clip is rejected no matter how good it looks. Real drone-style footage of the exterior sets the bar: re-derived from scratch, it reconstructs at 30.34 dB. The donor repo had claimed 32.45 dB for the same data; the claim did not survive re-derivation and is recorded as unverified. Honest numbers only, even against ourselves.

solveholdout PSNR
donor self-claim, same data32.45 dB · unverified
real footage, re-derived baseline30.34 dB
R4 generated, mid-arc frames29.75 / 29.17 dB
R4 generated, mean27.78 dB
R4 generated, arc endpoints26.50 / 25.71 dB

Getting there took four generation rounds and three families of camera guides, each gated by reconstruction before any further spend. R1 failed every check. R2 failed all 210 of its epipolar gates. The first depth-control guide passed 124/210, R3 became the first reconstructable generated clip at 134/210, the widest-arc guide reached 189/210, and R4 passed 184/210, solving into 13,392 points against the baseline's 8,576.

The real-footage baseline clip
this is the bar every generated clip is measured against
Camera guide, lateral dolly
depth-rendered control clip that tells the generator how to move
rejectedR2
0 of 210 gates · kept, because the failure defined the fix
R3, first reconstructable generated clip
134/210 gates · out-solved its own control clip
Camera guide, widest arc
189/210 gates on the guide itself
current bestR4
184/210 gates · 27.78 dB · 2.56 dB below real footage
Baseline holdout render
Baseline reconstruction, holdout view
real footage · 30.34 dB
R4 best holdout render
R4 reconstruction, mid-arc holdout
generated footage at its best · 29.7 dB
R4 worst holdout render
R4 reconstruction, arc endpoint
where it still collapses · 25.7 dB · this is the open problem

Both reconstructions are live below, running in your browser. Drag to orbit, scroll to move. Each model covers the arc its camera actually flew, which is the front of the house; orbit past the ends and the reconstruction thins out honestly. Nothing here pretends to be data that was never captured.

streams the splat into a WebGL viewer · heavier load, waits for a tap

11 · Where it stands

As of August 5: the house stands as a verified schema, a walkable nine-room world, a live studio, and a reconstruction pipeline where generated video now survives the same gauntlet as real footage, 2.56 dB behind it. The next runs close that gap, widen the arc past the front of the house, and connect the interior rooms to the exterior shell. This address stays up and grows into the full studio.

152 days from the plan photos to the current build · 17 sealed experiment runs · 1,515 commits of prior groundwork · every rejected attempt preserved and shown · preview build, full interactive studio and research log to follow