feat(hero): v0.1.2 — scale calibration, façade detail, export preset refactor #28
No files matched your search
@@ -16,7 +16,7 @@ Suggested blender skills: **references** (reference-image-match and visual-match
|
||||
### Patch tasks - active - 01a1b26b-3c94-707f-9665-2f6b4a79b564 (branch `scale-facade-0.1.2`)
|
||||
|
||||
- [x] Correct building scale and street proportions flagged against references. **Mapbox adopted 2026-11-09.** `Geo/tools/mapbox_buildings.py` merges our OSM heights with Mapbox's building data for the same footprints; after adopting its two findings the cross-check reports **66 match, 6 non-building, 0 disagreements**. Adopted: **`LEVEL_HEIGHT` 3.2 → 3.1 m** (`block_height_report.py`, and the Blosm `--level-height` default), plus explicit `HEIGHT_OVERRIDES` (3.0 m) for the three rear `building=yes`/`apartments` structures Mapbox gives as single-storey. Blockout regenerated, frontage re-exported/re-imported, DemoMap rebuilt; packaged `-qaselftest` all PASS. Measured effect: 6922 42.1 → 39.1 m, El Capitan Theatre 20.0 → 20.5 m (both now ~1.9 m above their table height = roof mass).
|
||||
- [ ] Refine hero façade details where reference photography shows discrepancies. **Started 2026-11-09:** built `Tools/facade_detail_concepts.py`, which generates architectural detail plates from the local reference photographs with an image model (`--list` free, `--all` generates, sidecars + `-vN` no-overwrite, output gitignored). Eight studies generated locally under `Art/reference/facade-details/`: door recess, entrance, column order, entablature/cornice, parapet/motto, window rhythm, street wall, banner. **First fix from the measurement pass:** window panes were 1.44 m in front of the wall (ahead of the columns) and now sit on the wall plane behind the colonnade. Remaining: use the plates to correct the capital/base profiles and the medallion/cornice detail.
|
||||
- [ ] Refine hero façade details where reference photography shows discrepancies. **Started 2026-11-09:** built `Tools/facade_detail_concepts.py`, which generates architectural detail plates from the local reference photographs with an image model (`--list` free, `--all` generates, sidecars + `-vN` no-overwrite, output gitignored). Six **frontal building** studies generated locally under `Art/reference/facade-details/` (whole elevation, entrance in its facade, building with neighbours, pavement view, three-quarter, theatre frontage) — rephrased on owner instruction to show the building/entrance/neighbours rather than close-up detail crops. **First fix from the measurement pass:** window panes were 1.44 m in front of the wall (ahead of the columns) and now sit on the wall plane behind the colonnade. Remaining: use the plates to correct the capital/base profiles and the medallion/cornice detail.
|
||||
- [x] **Replace the placeholder heights.** **Resolved 2026-11-08 — they were never unknown buildings.** The three "guessed" ways are not building volumes at all: `1360755125` and `1360755126` are `building=roof` at `layer=1` (elevated canopies) and `1417995292` is `amenity=shelter` / `shelter_type=public_transport` (a transit shelter). The report defaulted them to "2 levels × 3.2 m" and produced the bogus 6.4 m. `Geo/tools/block_height_report.py` now classifies roof/shelter explicitly and reports **0 guessed heights**: all 15 block volumes have a real `height` tag, a `building:levels` derivation, or are correctly excluded as non-building volumes. No photograph measurement was needed, and no frontage building was affected.
|
||||
- [x] Resolve the remaining unknown on the hero: the colonnade currently occupies about 45 % of the height against roughly 50–60 % in the photographs. Fix the vertical proportions. **Fixed 2026-11-09.** Measured baseline: colonnade (columns + capitals) 6.90 m of the 14.50 m envelope = **47.6 %**, because the entablature (3.40 m) and parapet (2.20 m) left only 7.90 m for the order. Thinned both to **3.00 m** and **1.80 m** (`Tools/hero_facade_build.py`), which lifts the colonnade to **7.70 m = 53.1 %** — inside the photographed 50–60 % band, with the 14.50 m envelope, the motto band and the medallions unchanged in position relative to the parapet. Hero rebuilt, re-imported (bounds 2604 × 1257 × 1450 cm) and re-rendered.
|
||||
- [ ] Tag `v0.1.2` and write `CHANGELOG.md` entry; then remove this section.
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ Geographic tools live in [`Geo/tools/`](../Geo/README.md) and the Blender-side b
|
||||
|
||||
| Tool | Purpose |
|
||||
| --- | --- |
|
||||
| `facade_detail_concepts.py` | Generates architectural detail plates from a local reference photograph with an image model (OpenRouter). `--list` is free and shows which studies have their reference present; `--all`/`--only <name>` generates. Never overwrites (writes `-v2`, `-v3`), writes a `.refgen.json` sidecar per image (model, prompt, source photo, SHA-256), and puts everything under `Art/reference/facade-details/` — gitignored, local-only, never shipped. Costs money per image, so it is never automatic. |
|
||||
| `facade_detail_concepts.py` | Generates **frontal building plates** (whole elevation, entrance in its facade, or building with neighbours) from a local reference photograph with an image model (OpenRouter); close-up detail crops are deliberately not requested because they cannot be measured for proportion. `--list` is free and shows which studies have their reference present; `--all`/`--only <name>` generates. Never overwrites (writes `-v2`, `-v3`), writes a `.refgen.json` sidecar per image (model, prompt, source photo, SHA-256), and puts everything under `Art/reference/facade-details/` — gitignored, local-only, never shipped. Costs money per image, so it is never automatic. |
|
||||
| `judge_screenshot.py` | (see Visual review) |
|
||||
|
||||
## Input injection
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate architectural detail studies from the local reference photography.
|
||||
"""Generate frontal building plates from the local reference photography.
|
||||
|
||||
Each study takes one photograph we already hold (`Art/reference/`, gitignored) as
|
||||
the geometric anchor and asks an image model to re-stage it as a clean
|
||||
architectural detail plate — no crowd, no staging, straight-on, evenly lit — so
|
||||
the modelling pass has something to measure against instead of a tourist photo.
|
||||
the geometric anchor and asks an image model to re-stage it as a clean **frontal
|
||||
view of the building** — the whole elevation, the entrance in its facade, or the
|
||||
building with its neighbours — evenly lit, no crowd, no staging, so the modelling
|
||||
pass has something measurable instead of a tourist photo.
|
||||
|
||||
Deliberately **not** close-up detail crops: a doorway or cornice crop cannot be
|
||||
measured for proportion, which is what the modelling pass actually needs.
|
||||
|
||||
python3 Tools/facade_detail_concepts.py --list
|
||||
python3 Tools/facade_detail_concepts.py --only door-recess,parapet-motto
|
||||
@@ -51,70 +55,75 @@ DEFAULT_MODEL = "google/gemini-2.5-flash-image"
|
||||
# project's convention so the two sets stay comparable: the photograph fixes the
|
||||
# geometry, the prompt only restages light, weather, people and surface.
|
||||
ANCHOR_SUFFIX = (
|
||||
"Use the attached reference photograph as the fixed source of geometry and "
|
||||
"composition: keep the building's proportions, column rhythm, band heights, "
|
||||
"signage placement and camera angle exactly as photographed. Only restage "
|
||||
"lighting, weather, people and surface condition where the request asks for "
|
||||
"it. Do not invent extra storeys, wings or ornaments that the photo does not "
|
||||
"show."
|
||||
"Use the attached reference photograph as the source of the architecture: keep "
|
||||
"the building's proportions, storey count, column rhythm, band heights and "
|
||||
"signage placement exactly as photographed. You may REFRAME — step back across "
|
||||
"the street, zoom out or widen the field of view — so that the whole building "
|
||||
"fits in the frame from the pavement to the parapet; the reference is often "
|
||||
"cropped and the plate must not be. Keep the view exterior and frontal (or "
|
||||
"three-quarter where asked). Restage only lighting, weather, people and surface "
|
||||
"condition. Do not invent extra storeys, wings or ornaments, and do not change "
|
||||
"the architecture to fit the frame."
|
||||
)
|
||||
|
||||
# name -> (reference photo relative to Art/reference/, what the study must show)
|
||||
# name -> (reference photo relative to Art/reference/, what the plate must show)
|
||||
#
|
||||
# Verified framing (vision pre-check, 2026-11-09): the model follows the reference
|
||||
# crop closely, so a plate is only as wide as its source photo. `building-entrance`
|
||||
# and `building-street-front` come back as full-elevation frontal views; the studies
|
||||
# anchored on the tightly cropped 2009 facade photo stay cropped, because the model
|
||||
# will not invent the parapet and sky that the photograph does not contain. A full
|
||||
# building plate for 6840 needs a full-elevation photograph, which the local set
|
||||
# does not have (see Docs/reference-notes-hollywood.md).
|
||||
#
|
||||
# Every study asks for a *frontal view of a building*, not a crop of one detail:
|
||||
# the whole elevation, the entrance in its facade, or the building together with
|
||||
# its neighbours. Close-up framing is deliberately absent — a detail crop cannot
|
||||
# be measured for proportion, which is what the modelling pass needs.
|
||||
STUDIES: dict[str, tuple[str, str]] = {
|
||||
"door-recess": (
|
||||
"el-capitan-entrance/01-hollywood-el-capitan-entrance-detail.jpg",
|
||||
"A clean architectural detail plate of exactly the subject in the "
|
||||
"reference photograph. Render it as an even-daylight stone study: crisp "
|
||||
"surface carving, readable depth of every recess and moulding, no people, "
|
||||
"no signage or banners in front of it, no shop clutter, straight-on to the "
|
||||
"subject.",
|
||||
"building-front": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"A frontal view of the complete building shown in the reference "
|
||||
"photograph: the whole elevation from the pavement to the parapet fits in "
|
||||
"the frame with clear sky above the roofline and pavement below the ground "
|
||||
"floor, shot straight on and centred. Nothing may be cut off at the top or "
|
||||
"bottom. Even daylight, no crowd, no vehicles.",
|
||||
),
|
||||
"entrance-wide": (
|
||||
"building-entrance": (
|
||||
"el-capitan-entrance/01-hollywood-el-capitan-entrance.jpg",
|
||||
"A straight-on architectural study of the street entrance in the "
|
||||
"reference photograph, the portal group centred and filling the frame, "
|
||||
"threshold and pavement readable, no pedestrians or vehicles, even "
|
||||
"overcast daylight, stone surface legible.",
|
||||
"A frontal view of the building in the reference photograph, framed so its "
|
||||
"street entrance is clearly visible as part of the facade — the doors and "
|
||||
"the wall around them in proportion, not a close-up of the doorway. "
|
||||
"Include the pavement in front. Even daylight, no crowd.",
|
||||
),
|
||||
"column-order": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"A close architectural study of the column order visible in the "
|
||||
"reference photograph: the base, shaft and capital read clearly, "
|
||||
"neighbouring columns framing it. Straight-on, evenly lit, stone surface "
|
||||
"and carving legible, no people or banners.",
|
||||
),
|
||||
"entablature-cornice": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"An architectural detail study of the horizontal stone bands above the "
|
||||
"columns in the reference photograph: every band edge and the projecting "
|
||||
"cornice with its shadow line. The layered depth of the stone must be "
|
||||
"readable, flat even light, no people.",
|
||||
),
|
||||
"parapet-motto": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"An architectural study of the parapet above the colonnade in the "
|
||||
"reference photograph: the inset panel, any round medallions beside it "
|
||||
"and the coping at the top. Lettering on the panel is blocked out as "
|
||||
"unreadable texture. Flat even light, no people.",
|
||||
),
|
||||
"window-rhythm": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"An architectural study of the wall surface behind and between the "
|
||||
"columns in the reference photograph: the opening or window rhythm and "
|
||||
"the reveal depth. Straight-on, no people, no banners covering the wall.",
|
||||
),
|
||||
"street-wall": (
|
||||
"building-with-neighbours": (
|
||||
"hollywood/el-capitan-theatre-blade-sign-day-wikimedia-2008-10.jpg",
|
||||
"A clean street-wall study from the opposite pavement, as framed in the "
|
||||
"reference photograph: the building line, the parapet heights of the "
|
||||
"neighbouring buildings, the shopfront line and the pavement depth. No "
|
||||
"crowd, even daylight.",
|
||||
"A straight-on view of the street wall in the reference photograph: the "
|
||||
"building and its neighbouring buildings either side, each at full height "
|
||||
"from pavement to parapet with sky above, the joins between them visible, "
|
||||
"nothing cut off. Shot from across the road, parallel to the frontage. "
|
||||
"Even daylight, no crowd.",
|
||||
),
|
||||
"banner-detail": (
|
||||
"el-capitan-premiere/02-premiere-of-spielberg-s-west-side-story---el-capitan---holly.jpg",
|
||||
"An architectural study of the vertical banner in the reference "
|
||||
"photograph: how it is fixed, its proportions against the column behind "
|
||||
"it, and how it sits against the stone. Daylight, no crowd.",
|
||||
"building-street-front": (
|
||||
"hollywood/walk-of-fame-terrazzo-ovation-day-cc0-2019-06-20.jpg",
|
||||
"A frontal view along the pavement of the building in the reference "
|
||||
"photograph: the building's frontage seen from street level with its "
|
||||
"neighbours continuing either side and the pavement in the foreground. "
|
||||
"Straight on, even daylight, no crowd.",
|
||||
),
|
||||
"building-front-oblique": (
|
||||
"hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg",
|
||||
"A three-quarter view of the complete building in the reference "
|
||||
"photograph: the frontal elevation and one side visible together so the "
|
||||
"building's depth and mass read, with its neighbouring building at one "
|
||||
"edge. The whole building stays in frame. Even daylight, no crowd.",
|
||||
),
|
||||
"theatre-front-with-neighbours": (
|
||||
"el-capitan-theater-detail/01-el-capitan-marquee.jpg",
|
||||
"A frontal view of the theatre in the reference photograph together with "
|
||||
"the buildings either side of it, the whole frontage and its full height "
|
||||
"in frame, shot from across the road. Even daylight, no crowd, marquee "
|
||||
"lettering blocked out as unreadable texture.",
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user