- pipeline/dump_bird.mjs: imports web/js/world/magpie.js UNMODIFIED (bare 'three' resolved to the repo's vendored build through a node resolve hook) and dumps birdGeometry() — so the A/B is against Lane B's actual bird, not a port. MEASURED 182 tris / 216 verts. --sim walks a player past a territory on magpie.js's own clock: drawn 54.1% of frames, and OF THOSE perched 80.5% / swooping 7.7% / returning 11.8%. - pipeline/bird_to_glb.py: wraps the dump as a GLB in E's frame (head +Z, +Y up) so the identical render_views.py rig shoots both; --fold applies the perch pose (x x 0.42). glb_stat re-measures 182. - pipeline/render_views.py --noemit: strips emission from BOTH candidates. normalize.py's emissiveFactor 0.28 is albedo-MODULATED; a vertex-coloured mesh cannot express that in glTF and Blender writes a flat 0.28 that lifts a black bird to grey. Off both sides or the picture lies. - pipeline/view_sheet.py --ab: the strip as a GRID (one line per candidate, stacked) plus two linear motion-blur blocks at 25% and 100% of the bird's width, and a wrapped notes footer. - docs/shots/laneE/r39_magpie_ab.png — the sheet Fable rules on. Recommendation in LANE_E_NOTES; picture first. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| before | ||
| laneA | ||
| laneB | ||
| laneB_r4 | ||
| laneB_r37_kerb | ||
| laneB_r38 | ||
| laneC | ||
| laneD | ||
| laneE | ||
| laneF | ||
| references | ||
| release_v3 | ||
| release_v3_1 | ||
| release_v4 | ||
| release_v5 | ||
| v1_tour | ||
| v2_tour | ||
| v4_alpha | ||
| v4_beta | ||
| v7_alpha | ||
| v7_beta | ||
| v7_tour | ||
| contact.html | ||
| README.md | ||
| v2_contact.html | ||
docs/shots — visual regression + devlog reference tree
Owned by Lane F (each lane also drops its own acceptance screenshots here).
docs/shots/
laneA/ … laneE/ … per-lane acceptance screenshots (each lane owns its dir)
v1_tour/ … F: the v1 beauty shots (tools/shots.py) — frozen devlog set
v2_tour/ … F: the v2 tour (tools/v2_tour.py) — the CURRENT canonical set (see below)
before/ … F: last known-good capture, for side-by-side regression
references/ … real-world reference photos named per shot
v2_contact.html … generated contact sheet for the v2 tour
v2 tour — stable filenames (do not rename; the v3 site links these)
cd web && python3 -m http.server 8130 then tools/.venv/bin/python tools/v2_tour.py
→ 1280×720 PNGs in v2_tour/ + docs/shots/v2_contact.html.
| file | what it documents |
|---|---|
street_noon.png |
main strip at midday |
crossroads_busy.png |
busiest intersection, peds about |
shopfront_detail.png |
verandah + sign + window up close |
patronage_door.png |
streamed peds at an open shop's door (Lane D patronage) |
rain_verandah.png |
rain outside a lit ?winmap video-shop window |
rain_street.png |
wet strip, rain down the street |
tram_stop.png |
the v2 tram paused at a shelter (?tram=1) |
night_crowd.png |
VIDEO REGAL glowing amid CLOSED neighbours at night — the §3.5 hours story (clean-night boot). NB: no visible street crowd — see the note below. |
browsers.png |
an occupied shop's interior life — a browser at the rack + the keeper at the counter, both human-sized (R10 giant-rig fix). figures human-sized vs door/fittings: yes. |
dig_real.png |
riffling a real-cover record bin (?dig=1&stock=real) |
katoomba_main.png |
plan-agnostic main strip (?plansrc=osm&town=katoomba) |
Note on night_crowd (Lane F, R10)
Re-framed to the tighter, readable "one lit shop in a closed town" composition. It does not show a
standing street crowd, and that is not a framing bug: Lane D's night patronage parks ducked-in patrons
hidden inside the shop (they become the interior browsers seen in browsers.png), and seed 20261990's
video shop sits on a low-traffic corner, so none gather visibly outside (tested: 0 patronage / 0 visible
at night). The town's night life is the interior presence + the neon-vs-CLOSED mood. A visible outdoor
night queue would need a new Lane-D mechanic (loiter-outside-the-openLate-shop) — parked for v3. The
~20 fps in night captures is a headless-chromium software-GL artifact (the scene is light, ~128
draws / 65k tris); on real hardware the night scene is not a perf concern.
Regression workflow
Before a risky change, snapshot the good state into before/, then re-run v2_tour.py and eyeball
v2_contact.html. Process rule (R10): any shot containing a humanoid gets an explicit
"figures human-sized relative to doors/fittings: yes" line in the progress note — actually look.