feat(tools): rephrase the concept studies as frontal building views
Owner instruction: show the building, its entrance, the neighbouring buildings, front-on, and drop the close-up detail framing. - Studies replaced: door-recess / entrance-wide / column-order / entablature-cornice / parapet-motto / window-rhythm / street-wall / banner-detail -> building-front, building-entrance, building-with-neighbours, building-street-front, building-front-oblique, theatre-front-with-neighbours. - ANCHOR_SUFFIX now permits REFRAMING (step back, zoom out, widen the view) so the whole building can fit, while the architecture stays fixed; previously it pinned the camera angle to the reference, which forced cropped results. - Prompts state 'exterior' explicitly (the entrance study otherwise produced an interior) and require sky above the roofline and nothing cut off. Vision pre-check on the regenerated set: building-entrance and building-street-front read as full-elevation frontal plates; the studies anchored on the tightly cropped 2009 facade photo stay cropped, because the model will not invent the parapet and sky the photograph does not contain. That limitation is recorded in the study table comment - a full 6840 plate needs a full-elevation photograph we do not hold. Tests: 40 pass (study table assertions unchanged).
This commit is contained in:
1 parent
bbb373ec06
commit
fe8a23e5ee
3 files changed
+71
-62
No files matched your search
+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