Scoping a room to its neighborhood
Bind any object to one page and the runtime switches it (and everything under it) off while the visitor is somewhere else, which is also how a later room gets shadows at all.
Open in the interactive manual →The interactive version has full-text search, a table of contents, and light/dark themes.
A multi-room scene keeps every room in one scene tree, and by default the runtime draws all of them from everywhere, so a lamp in room six is shaded every frame while the visitor stands in room one. Neighborhood scoping fixes that: bind an object to a page, and it switches off while the visitor is in another neighborhood, then back on as they return.
It is opt-in, per node. A scene that never uses it behaves exactly as it always did.
The control
Select any object and open Neighborhood in the Properties panel's Transform section:
| Control | What it does |
|---|---|
| Belongs to | Which page node owns this object. Everywhere (always loaded) is the default and keeps today's behaviour. |
| Also visible within | Only shown once bound. Metres around its page within which the object stays on even from another room, for a landmark you navigate by. Leave it at 0 and the object is on only while its own room is active. It can only ever add visibility, never hide something. |
The section only appears in a scene that has pages, and not on a page node itself (a room can't belong to itself) or a backdrop layer, which carries its own copy of these two fields.
Which room is on
The visitor is in exactly one neighborhood at a time (normally the page whose centre is nearest), and only that page's objects are switched on. It's ownership, not a distance fade: there's no radius to tune, and two rooms can't both be half-on. A few metres of stickiness at the boundary keep a camera parked between two rooms from flickering between them.
The page a visitor navigated to holds the room until proximity is clearly against it, with the same few metres of margin. That matters the moment you compose an arrival viewpoint: a shot standing well back from page A, looking at it across the floor, can easily be nearer to page B's centre, and by distance alone B would win, switching A's props and lamps off while the URL, the page title and the menu all still say A. Walk properly into the next room and it hands over as normal.
Switching off an object takes its whole subtree with it: everything parented under it, and for a light its shadow pass and volumetric beam too. An object bound to a page you later delete stays on rather than silently vanishing.
Binding a repeated model also takes it out of automatic instancing, so each bound copy draws on its own. That is the right trade and it is worth knowing you're making it: twenty identical crates in one room cost twenty draw calls while that room is active, and nothing at all from any other room. Shared batching would have cost one draw call from everywhere, forever.
It's why a later room gets shadows
Only four lights in a scene can cast shadows, and they're picked in scene order, so on a six-room site, rooms one and two spent the whole budget and the rooms you built last got no shadows at all, however far away they were, with nothing saying why. Bound lights get their own four per neighborhood. Unbound "everywhere" lights share a pool of four between them.
Binding every light you place in a room is the single most valuable use of this feature. The Inspector's "(n/4 used)" count reads within the selected light's own room, so it means something again on a scene with a dozen lamps.
What it does to scene weight
Scene weight knows about scoping. The render-cost categories (shadows, lights, beams, particles, animation) are charged on the worst single room plus everything unbound, because that's the most a visitor's GPU ever draws at once. Memory costs (geometry, textures, node count, the scene file) stay whole-scene: a switched-off subtree stops being drawn, it doesn't stop being resident. A six-room demo scene dropped from 97.2 to 35.6 points on that change alone.
The Assistant and Claude over MCP can set the binding as they build (data.zonePageId, with data.zoneRadius for something that has to stay visible from outside its room), and are told to bind every light and prop they place in a room of a multi-room scene.
Duplicating a finished room to make the next one keeps its bindings straight: the copy's objects are re-bound to the copy, along with its arrival camera and any link signs pointing inside it, while a sign aimed at a room elsewhere in the scene still means that room. (Before this, a duplicated room stayed bound to the original, invisible from inside itself, and quietly spending the original room's four shadow slots.)
While you're binding rooms, it's worth giving each one the viewpoint a visitor arrives at as well: scoping decides what a room draws, and the arrival camera decides where someone is standing when it comes up.