Skip to the article
3dCMS Knowledge Base
Contact Open the editor
Performance

How a published scene loads

Models in distant neighborhoods wait until a visitor is near them, and a shaped stand-in holds the space until they arrive.

Open in the interactive manual →

The interactive version has full-text search, a table of contents, and light/dark themes.


A multi-page scene used to download every model on every page before a visitor saw anything, so a big site made its first visitor pay for rooms they might never walk into. Published scenes now load a neighborhood at a time: a page's models are fetched when someone is near enough to care, and a stand-in holds the space until then.

There's nothing to switch on. It happens on any published scene with more than one page node.

What counts as "near enough"

Three sets of pages always have their models in hand, and the rules are deliberately generous. Being wrong this way costs a little bandwidth, being wrong the other way means someone arrives somewhere and waits:

  • The page you're standing on, and the page the camera is actually in. Those are usually the same, but a viewpoint sign, a #view link, a camera ride or a walk with the joystick can carry a visitor into a room without changing the address, and that room loads too.
  • Every page within 60 metres of either: a neighborhood you can see from here must never be a field of grey shapes.
  • The immediate previous and next page in page order, however far away they are, because that's what a swipe and the pager reach.

Only models wait, and only for downloading: everything in the scene is still drawn from everywhere unless you scope it to a neighborhood, which is the separate, opt-in half of this. Lights, particles, video, and page panels behave exactly as they always did. A single-page scene defers nothing (there's nowhere to travel from), which is one good reason to split a large site into pages placed well apart. The Scene Weight window shows you the split: what a visitor downloads on arrival versus what waits for them.

The editor never defers. While you're authoring you always see the real model.

What a visitor sees while they wait

A model that hasn't arrived is drawn as a soft solid stand-in at the model's own stored size, so nothing shifts, jumps, or resizes when the real geometry lands. Two readings, both honest:

  • Brighter, with a slow band of light sweeping up it: downloading right now.
  • Dimmer and still: too far away to have been asked for yet. Nothing is being spent on it.

Choosing the stand-in

A stand-in at a model's bounding box is a box, which turns a deferred forest into a car park. So the shape is yours to pick, per scene, in Settings ▸ Visitor Chrome ▸ Loading placeholders:

OptionWhat stands there
Auto (default)The outline if the model has one, otherwise its thumbnail, otherwise a plain block.
ShapeThe model's own silhouette: a tiny baked copy, a few hundred triangles and no textures at all, tens of kilobytes against the real model's megabytes. A forest reads as trees.
CardThe library thumbnail, stood up in the model's volume like a preview card. Nearly free, since most models already have one.
VolumeA plain soft block at the model's size. The plainest option, and the fallback for everything else.

Every option except Volume falls back down that chain, so a model that's missing an outline is never a hole in your scene: it just gets the next-best stand-in. Picking Volume is absolute: it's the one to choose if you'd rather not spend the extra small request at all.

Outlines are baked for you A model you upload gets its outline immediately. For everything else (older models, AI generations), open your Asset Library and it quietly bakes them: "Baking model outlines…", with a Bake all button when some are still waiting. It runs after the texture-shrinking sweep, never alongside it, so the two never gang up on your machine.
Already-published scenes Which outline and thumbnail each model uses is written into the scene when you publish. A site published before its outlines were baked keeps working and shows plain blocks; republish it and the shapes appear.

Arriving in another room

On a multi-room site, the first time a visit draws a room is its one real wait: not the download (the files are usually in within a second) but the frame in which the room is drawn for the first time, which on a heavy room can hold the picture still for a couple of seconds, partway into the flight. While a room the visitor asked for is still arriving, a small frosted ring low in the view carries the room's name under it (its page title, in the page's accent colour), and a screen reader hears Loading ⟨room⟩. Its spin runs on the browser's compositor, so it keeps turning while the scene itself is frozen on that frame. When the room owns models the ring fills with their real progress; otherwise it turns.

It is tuned to stay out of the way: it waits about a second before fading in, so a smooth arrival never flashes it, and once it is visible it stays long enough to read. A room this visit has already drawn is warm (the browser keeps what it compiled), so arriving there again shows nothing, and the very first load of the scene still has its own full-screen loader. There is nothing to switch on; it is on every published scene with pages.

The wait itself got shorter in the same release: what made a room's first frame long was the renderer compiling a fresh copy of every lit material for each new count of lights, so a six-room site crossed through a dozen such states. The runtime now holds the light count constant at the most any one room needs, compiles each material once at load, and hands a room's lamps over at the middle of the neighborhood dissolve (the leaving room's lamps are out by the halfway point and the arriving room's come up after it), so no frame ever waits on a shader again.

The section bar tells visitors too

On a scene using guided scroll, each dot on the section bar opens into a slowly spinning ring while that section's models are still coming, then collapses back to a dot when they land. Its label reads ", loading" as well, so the state isn't carried by animation alone, and reduced-motion visitors keep the ring without the spin.

Spotted something off, or want a topic covered? Tell us, a person reads every message.