Odessis: one reversible Three.js city across eight chapters

I built Odessis as one persistent Three.js hill city rather than eight scenes
or a rendered film. Native scroll owns the exact chapter and URL state; a separate damped value moves
the camera, so direct links land precisely and the journey remains reversible.

Desktop and portrait layouts use separately authored camera endpoints. The harbour, gate, stoa,
theatre, agora, machine court, odeon and summit stay inside one geography and share the same procedural
materials and lighting system.

The part that changed how I test it was the travel between the composed shots. My capture ledger samples
the eight authored stations and seven midpoint travel frames at 1440x900 and 390x844. A separate motion
trace drives the real scrollbar, and a failure audit blocks WebGL before navigation to prove the semantic
content, Field Notes and project enquiry still work without the renderer.

Build account and current constraints

Harbour-to-city frame

Mobile currently caps device pixel ratio at 1.5 and uses a smaller shadow map. That is still the surface
I am tuning most. I would especially value feedback on the mobile performance trade-offs and the camera
composition between the authored stops.