From f09a5e7937475acb0ba9f7b60b9df9e4c2c4574b Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Tue, 3 Nov 2026 14:36:13 +0100 Subject: [PATCH] Plan recent-photo tooling and reference-anchored generation --- MEMORY.md | 10 ++++++++++ TODO.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/MEMORY.md b/MEMORY.md index c595a19..42391f5 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -4,6 +4,16 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o ## Decisions +- **Recent-photo research, gitignored (2026-11-03):** Commons geosearch around the El Capitan block + found usable last-12-months imagery (Dolby billboards 2026-09-30 CC0 x6, Dolby street + fresh star + 2026-07-17 CC0, El Capitan frontage with an impersonator 2026-02-25 CC BY-SA 4.0, Celia Cruz + marker and a star series 2025-09-28 CC0, Thunderbolts premiere 2025-04-28 CC BY-SA 2.0). Eight + candidates downloaded to `tmp/research/elcapitan-2026/` with `meta.json` — **never commit these**; + committed references still go through the sidecar licence gate. Finding: no recent photo frames + the El Capitan facade straight-on in daylight; the 2009 CC BY facade frame stays the geometry + reference. Geosearch (`generator=geosearch`, `ggscoord`, radius, `ggsnamespace=6`) is the reliable + "photos of this exact location" query; keyword search is not. Plan for reference-anchored + generation (`--reference`) is in TODO before any tool code is written. - **TV Studio shares the Hollywood location (2026-11-03, owner clarification):** the Late Night TV Studio venue is **the same** El Capitan Entertainment Centre block at 6840 Hollywood Blvd (the building houses *Jimmy Kimmel Live!*), restaged for a late-night arrival with a bulb canopy, black diff --git a/TODO.md b/TODO.md index d6b1a1d..8f4df3c 100644 --- a/TODO.md +++ b/TODO.md @@ -339,6 +339,24 @@ facades and AI-assisted composition. This is an unversioned development track, n ### Reference imagery +**Recent-photo research (2026-11-03):** Commons geosearch around 34.10118/-118.34009 (500 m) plus +category/date sorting shows usable imagery from the last 12 months: Dolby Theatre billboards +(2026-09-30, CC0, 6 frames), Dolby street level and a fresh Walk of Fame star (2026-07-17, CC0), +a Michael Jackson impersonator at the El Capitan frontage (2026-02-25, CC BY-SA 4.0), the Celia +Cruz Square marker and a 2025-09-28 star series (CC0), and a Thunderbolts premiere (2025-04-28, +CC BY-SA 2.0). No recent frame shoots the El Capitan facade straight-on in daylight; the best +facade evidence is still the 2009 CC BY frame. The 8 downloaded candidates are in +`tmp/research/elcapitan-2026/` (gitignored) with `meta.json`; nothing was committed. + +- [ ] Wire `scene_concepts.py refboard`: list/fetch Commons files by `titles=`, `geosearch` or + category with date and licence sorting, write the `SIDECAR.md` rows and the folder README + rows automatically (User-Agent, batched `titles=`, 3–4 s spacing to avoid HTTP 429; date-only + fetch into `tmp/` by default, committed copies require the licence gate). +- [ ] Add a `--max-age-months` filter (default 12) and a `--must-reuse` mode that matches the + folder's existing sidecar entries so a refresh only reports what changed. +- [ ] Research-diff step: keep the last-12-months board as the "current reality" evidence and the + older photos as the geometry evidence, labelled per photo; no sidecar date field needs to + change, only the purpose column. - [ ] Write a reference shot list per block: facade materials, windows, signage, rooflines, street furniture, curb cuts and lighting. - [ ] Download and catalogue reference images from Wikimedia Commons, local/own photography or @@ -350,7 +368,8 @@ facades and AI-assisted composition. This is an unversioned development track, n template from the 3D review §E, and link it from the venue map documents. - [ ] Define the photoreal target and a material-derivation workflow (albedo/normal/roughness, AO, weathering) that matches the existing Compatibility renderer (`texture-workflow`, - `materials`, `lookdev`). + `materials`, `lookdev`), with the recent 2026 street frames as the current-reality reference + and the 2009 facade frame as the geometry reference. ### Geometry and AI-assisted composing @@ -365,6 +384,13 @@ facades and AI-assisted composition. This is an unversioned development track, n - [ ] Run the assisted Blender pipeline end to end on the first block (OSM import → `inspect` → retopo/UV assist → atlas → `audit`), and document the exact commands in `docs/asset-tooling.md`. +- [ ] Building-appearance realism pass, measured against the reference set: bring the masonic + facade's material response (limestone value/roughness, joint lines, weathering streaks), + the banner/canopy and marquee materials, and the night emissive balance to the level of the + 2009 facade photo and the 2026 street frames; capture before/after and record each delta. +- [ ] Upgrade the facade from flat material bands to photoreal detail: either texture-projected + detail (Path B below) or AI-generated material tiles derived from the facade photo (with + provenance), then verify texel density, tiling and the night look. - [ ] Integrate the result behind `WorldBuilder.VENUE_SPECS` with colliders, navigation obstacles, occlusion and the existing day/night materials. @@ -373,9 +399,21 @@ facades and AI-assisted composition. This is an unversioned development track, n *Skill route: `lookdev`, `lighting`, `environment-artist`, `texture-workflow`; tooling: `tools/scene_concepts.py`, `tools/asset_pipeline.py`, `tools/screen_designs.py`.* +**Tool plan for reference-anchored generation (plan first, implement after this section's review):** + +- [ ] Add `scene_concepts.py generate --reference `: attach a licence-cleared real photo + as a source image to the OpenRouter image request (image-edit/image-to-image endpoint), with + a prompt suffix that preserves the photographed facade geometry ("keep the building's column + count, spacing, band heights and sign placement exactly"). Record the reference file, its + licence and the model/prompt/spend in the sidecar. +- [ ] Extend `generate_textures.generate_image()` with an optional `reference_url` (base64 data URL + of the photo) and a `strength` argument; keep every existing call signature unchanged and + gate the new path behind the reference being licence-cleared in the sidecar. +- [ ] Add a sidecar-driven variant pass: for each real photo, generate day, night and weathered + variants of the same framing so the concept board stays comparable with the photo board. - [ ] Generate facade, street and signage concept frames for the target block - (`scene_concepts.py generate`), commit only the selected frames, and record model, prompt and - spend in the block sidecar. + (`scene_concepts.py generate --reference ...`), commit only the selected frames, and record + model, prompt, spend **and source photo** in the block sidecar. - [ ] Derive palette, lighting and material targets from the real-photo board and the generated concepts, and record the deltas the facade kit has to close. - [ ] Generate signage, awning and poster texture candidates with `asset_pipeline.py`; run the @@ -440,9 +478,11 @@ reference-image licence and privacy gates above rather than replacing them. - [ ] **Path A — Reference and QA (lowest risk):** render the splat from game camera poses and compare it with the realism captures; derive dimensions, signage placement, facade rhythm and material colours. No splat data reaches the runtime. -- [ ] **Path B — Texture derivation:** project splat renders onto the facade kit to produce - albedo, normal, roughness and AO candidates; de-light and bake them (`texture-workflow`), - then verify UV scale, tiling and readability under the Compatibility renderer. +- [ ] **Path B — Texture derivation:** project splat renders **or reference photos** onto the + facade kit to produce albedo, normal, roughness and AO candidates; de-light and bake them + (`texture-workflow`), then verify UV scale, tiling and readability under the Compatibility + renderer. Deriving directly from a committed reference photo requires its licence to allow + derived works and a `CREDITS.md` entry; CC BY-SA sources stay out unless reviewed. - [ ] **Path C — Mesh proxy:** extract a mesh from the splat or dense reconstruction, retopo and dress it in Blender (`retopology`, `prop-artist`), assign LODs (`lod-pipeline`), and keep it inside the venue triangle/material budgets with mesh-based colliders (`collision-proxy`).