The scene is one continuous space, not a set of separate 3D viewers. A visitor moves along a path through it, and the business content is positioned in that space: a section of copy sits at a place, not on a page. That is where the work goes — keeping orientation legible so the visitor always knows where they are, and making movement feel intentional and never like a camera being dragged.
Scrolling drives the camera, which is a decision with a well-known failure mode: scroll-jacking that fights the user. The mitigation is that scroll position maps to camera position monotonically and predictably, the visitor can always go back the way they came, and no input is captured or delayed. Movement is damped, never snapped, so a fast flick decelerates into place instead of overshooting.
The performance budget was fixed before any geometry existed: a stable frame rate on a mid-range Android, and a first meaningful frame before the full scene finishes loading. That drove nearly every subsequent decision — polygon counts, texture resolution, how many materials could be distinct, whether a given effect was affordable. Geometry was authored to the budget rather than optimised down to it afterwards. A scene that holds the target and a scene that gets close are built differently from the first asset onward.
Loading is progressive and ordered by what the visitor sees first. A low-resolution version of the primary subject arrives early and is replaced when the full-resolution asset is ready, so the first frame shows the product and not a spinner. Assets for later positions along the path load while the visitor is reading the earlier ones.
The static path is not a degraded version, it is a complete one. If WebGL is unavailable, the device is thermally constrained, or reduced motion is requested, the page renders the same content as ordinary sections with pre-rendered stills of the same views. Nothing that matters is only expressible in the scene, which was a constraint on the content design and not a technical afterthought.