feat(chatt): Chattanooga Mini — tilt-shift diorama of downtown Chattanooga#217
Merged
Conversation
A miniature diorama of downtown Chattanooga: real geodata (OSM footprints + USGS 3DEP terrain + USGS NAIP aerial) baked offline into public/chatt/, rendered as a stylized tilt-shift toy in R3F. Four camera modes (tour/miniature/follow/ walk), palette toggle, guided Riverfront tour. Bake pipeline (scripts/bake/, run via pnpm bake): Overpass -> 1544 buildings + 2499 streets, OpenTopoData ned10m -> terrain grid, NAIP -> meter-proportional drape, build-scene projects to a local ENU frame + tag-bucketed height heuristic. Generic 3D stage (src/stage/): StageCore + Rig (headless 4-mode camera) + Hud + tilt-shift composer (three EffectComposer) + lightRig + materialKit — built to be liftable into any R3F route. Chattanooga-specific layer in src/world/, src/packs/, src/agents/. Route at src/app/chatt/ (dynamic ssr:false). Renders verified on a real GPU. 51 diorama unit tests pass; tsc clean. Known follow-ups tracked as issues: buildings sit on a flat layer below the topology (terrain coupling), and Miniature mode can not yet pan to the south (Choo Choo) end. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Buildings floated on a flat Y=0 slab while the terrain sat at raw 194-249m elevation. Add a shared elevationAt(grid,manifest,x,z) sampler (correct N-S sign v=0.5-z/groundHm, verified against the terrain rotateX convention) + minElevation. Normalize terrain down by minElevation so the lowest ground is Y=0, and seat each building/hero/street vertex on elevationAt-minElevation. Now buildings sit ON the topology and the NAIP drape reads as rolling terrain. Verified by screenshot. Closes #215 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…hoo (#216) Miniature/orbit mode had a fixed pivot — you were stuck at the north end and could not reach the south. Add WASD focus-panning to _orbit (camera-relative forward/right, reusing the _driveAvatar basis), clamped to the corridor extent (panMin/Max X/Z options). Extend RIVERFRONT_TOUR with south-end waypoints (Republic Centre, Downtown Core, Chattanooga Choo Choo) so the guided tour traverses the whole 5.8km corridor. Verified by screenshot: WASD pans from the downtown/river north end to the Choo Choo south end. Closes #216 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The two buildScene() integration tests read public/chatt/_raw/osm.json, but _raw/ is gitignored (large, regenerable via pnpm bake) so it is absent in CI / fresh clones — causing ENOENT failures in the Test and accessibility jobs. Guard them with describe.skipIf(!hasRaw): they run locally where the cache exists and skip cleanly in CI. The pure-geometry tests (ringArea/centroid) always run, and the committed derived artifacts are covered by the runtime component tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A miniature tilt-shift diorama of downtown Chattanooga at
/chatt, driven by real geodata baked offline.What this adds
scripts/bake/,pnpm bake): Overpass → 1544 buildings + 2499 streets, OpenTopoData ned10m → terrain, USGS NAIP → meter-proportional aerial drape,build-sceneprojects everything into a local ENU frame with a tag-bucketed height heuristic. Output committed topublic/chatt/; runtime makes zero third-party calls.src/stage/):StageCore+ headless 4-modeRig(tour/miniature/follow/walk) +Hud+ tilt-shift composer (threeEffectComposer) +lightRig+materialKit— built to be liftable into any R3F route (import-guard test enforces zero project imports).src/world/,src/packs/,src/agents/): buildings/terrain/streets/heroes, palette profiles (true-to-life ⇄ toy), Riverfront tour, trolley.src/app/chatt/(dynamicssr:false); provenance shown in HUD (© OpenStreetMap · USGS 3DEP · USGS NAIP).Verification
tscclean; full pre-push CI + production build passed.Known follow-ups (tracked)
Notes
🤖 Generated with Claude Code