Built-in controls / 内置控制
What loads when / 何时加载
Built-in room objects are native Three.js geometry. GLB references present in the active scene configuration are loaded asynchronously while the scene is synchronized; they are not deferred until a chapter is opened. Content Studio keeps the selected localFile in a short-lived prepared-upload
buffer. This can avoid an immediate second network read during the first local
preview. GLB parsing, texture upload, shader compilation, and fitting still
take time, so a brief placeholder is expected.
生产构建从 public/uploads/models/ 读取已保存的 GLB。只有成功保存且被最终场景引用的
模型才会进入该目录。
Hard upload limits / 上传硬限制
Content Studio rejects a model that exceeds any of these validator limits:
These are safety ceilings, not recommended targets. A model can pass validation
and still be too expensive for a phone.
The upload accepts embedded PNG, JPEG, and WebP images supported by the
validator. Keep the GLB self-contained; external resource URIs and extensions
that require unconfigured runtime decoders are rejected.
Practical authoring budget / 实用制作预算
Use this as a starting point, then profile:
Prefer a few shared, opaque PBR materials. Transparent layers, many separate
materials, skinned animation, and large textures can cost more than triangle
count alone suggests.
Diagnose a slow room / 卡顿排查
1
Separate loading from steady-state rendering
Record whether the slowdown occurs only during fetching/processing or
continues after all models report ready.
2
Profile a representative device
Record 5–10 seconds in the browser Performance panel while orbiting and
opening a chapter. Look for long animation frames, repeated network work,
and texture/shader compilation.
3
Remove one expensive variable
Temporarily disable the suspected custom asset in Content Studio. If the
problem disappears, reduce its textures, primitives, material count, or
triangles and re-export.
4
Inspect renderer statistics in code
During a temporary local diagnostic, log
renderer.info.render.calls and
renderer.info.render.triangles inside the room renderer. Remove the log
before committing; renderer is not a global Console variable.5
Validate the complete experience
Test camera movement, day and night lighting, repeated panel open/close,
background-tab behavior, WebGL fallback, and a throttled network.