The published layout does not match Content Studio / 发布布局与 Studio 不一致
The published layout does not match Content Studio / 发布布局与 Studio 不一致
A scene edit reaches production only after all four checkpoints succeed:Include both files and any new
- Finish dragging with Confirm all placement.
- Select Save to project.
- Commit the generated files and referenced uploads.
- Push to
mainand wait for the GitHub Actions deployment to pass.
public/content/site-content.jsoncontains the complete editable document.app/generated/scene-config.tscontains the production scene snapshot.
public/uploads/** assets in the commit.A GLB stays as a placeholder / GLB 一直显示占位物
A GLB stays as a placeholder / GLB 一直显示占位物
The load indicator moves through fetching, processing, ready, or
error. A short placeholder period is expected while the GLB is parsed,
fitted, and compiled by the GPU.If it never becomes ready:
- Confirm the file is a self-contained glTF 2.0 binary
.glb. - Re-export without external textures, Draco, Meshopt, or KTX2/Basis dependencies.
- Check the Studio error message for structural, geometry, or texture-budget failures.
- Keep the tab open until the upload and first parse finish.
- Verify the resulting URL is a same-origin
/uploads/models/<uuid>.glbpath.
.content-studio-cache/models/. It is
intentionally absent from public/uploads/models/ until Save to
project succeeds. Removing it before saving discards the staged file.For a built-in replacement, the native object remains visible while the GLB
loads or if loading fails. For a new custom object, the scene keeps a
visible loading/error placeholder so placement remains editable.A GLB is dark or ignores the room light / GLB 偏暗或不响应光照
A GLB is dark or ignores the room light / GLB 偏暗或不响应光照
The room lights affect standard lit PBR materials. They cannot make an
unlit/basic material respond to light, and a strongly emissive material may
appear almost unchanged between day and night.In the authoring tool:
- use Principled BSDF before export;
- embed Base Color, Roughness, Metallic, and Normal textures;
- mark Base Color as sRGB;
- prefer OpenGL normal maps;
- apply rotation and scale before export;
- inspect normals and avoid unintentionally high metallic values.
'Detected multiple renderers concurrently rendering the same context provider'
'Detected multiple renderers concurrently rendering the same context provider'
This is a React context warning, not a glTF validation error and not a
statement that one GLB created too many WebGL contexts.It commonly appears when HMR temporarily keeps two React renderer trees, or
when duplicate React packages/providers are mounted during development.
First stop duplicate dev servers or embedded previews, then restart:If it persists, check that the page mounts one application root and that
npm ls react react-dom resolves the intended versions. Also inspect recent
provider changes instead of repeatedly re-uploading the model.The room already cancels its animation loop, listeners, controls, loaders,
scene resources, renderer, and canvas during unmount. A warning that
survives a clean restart therefore warrants checking renderer/provider
duplication rather than GLB contents.The room is blank or an object cannot be selected / 房间空白或物体无法点击
The room is blank or an object cannot be selected / 房间空白或物体无法点击
For a blank room, inspect the Console for WebGL initialization or context
loss errors, enable hardware acceleration, and retry in a current browser.
The semantic index remains available when WebGL fails.For selection:
- only enabled, interactive assets open a content panel;
- decorative custom assets are intentionally non-interactive;
- disabled built-ins are removed from both the room and interactive index;
- a gesture moving more than about 6 px with a mouse or 11 px with touch is treated as a camera drag.
General diagnostic order / 通用排查顺序
- Reproduce on
/and/?studio=1separately. - Check the Console and Network panels.
- Check
git status --shortfor the JSON, generated scene module, and uploads. - Run the local validation commands.
- Confirm the GitHub Actions run for the pushed commit completed successfully.
- Test a private window only when you need to rule out extensions or browser storage; do not erase unrelated browser data as a first step.