NEW: SmartAssets, Inspector Override Persistence, and .babylonproj zip file save/load!

Hey folks! Excited to announce a new set of features that enable a project editing workflow for Babylon scenes. Three layers that together turn Inspector V2 into an authoring tool, accessible from the Project Authoring pane in Inspector V2 (cube icon on the toolbar).

  1. Smart Asset Manager (@babylonjs**/core)**
    A per-scene registry mapping stable string keys to asset URLs. Lets you query, swap, hot-reload, or unload an asset. Tree-shakeable, no class to instantiate.

const boombox = await BABYLON.LoadSmartAssetAsync(scene, “boombox”, “https://playground.babylonjs.com/scenes/BoomBox/BoomBox.gltf”);

const env = await BABYLON.LoadSmartAssetTextureAsync(scene, “envmap”, “https://playground.babylonjs.com/textures/environment.env”);

This piece is useful as a standalone feature — any app that needs stable handles to remote assets across reloads can use it directly. You can now save playground snippets that reference local assets and when loaded, will prompt for asset selection! See here Babylon.js Playground - #QFH8OY#1

  1. Override Manager (@babylonjs**/inspector-v2)**
    The diff layer underneath the inspector. Every edit you make in the Properties pane is captured as a typed property diff against a named target. The set of diffs is what gets persisted into .babylonproj (see below), and what gets reapplied after a Smart Asset is reloaded or swapped out from under you. You don’t interact with it directly; it’s what makes “edit in the inspector, save, reopen” actually work. You can see the overridden inspector properties in the ‘project authoring’ pane in inspector.

  2. .babylonproj (@babylonjs**/inspector-v2)**
    A zip file composing the smart asset map, the local assets themselves, the override set, and a companion .babylon for user-created scene content (meshes built in-editor, authored materials, placed cameras). On reload, assets fetch from their URLs, locals deserialize from the companion, overrides reapply on top. (NOTE if curious to inspect the contents of a .babylonproj file, rename it to .zip in your local file explorer :slight_smile:)


Use cases

  • Retint a material, dim a light, or reposition a camera on an asset author’s glTF without forking the source file.
  • Compose lightweight scenes in the inspector — drop in models, position them, add primitives, set up lighting, save and reload later for future changes — without standing up a full editor.
  • Maintain stable handles to assets across save/load cycles.
  • Collaborate with other artists or developers - send over packet of assets, allow for collaborator to load the project, make changes in inspector, resave/send, and you can then visualize the diff in the override section

Playgrounds

Full round-trip in Inspector V2

  1. Open a playground, click Inspector.
  2. Open the Project Authoring pane (cube icon, right toolbar).
  3. Add a .glb / .gltf / .obj / .babylon / texture in the Assets section.
  4. Edit properties — changes appear in Override Summary.
  5. Save Project (.babylonproj), then Load Project in a fresh playground.

Docs

As always, please share your thoughts and experience using the new features! Will happily continue iterating on them to maximize value!!

11 Likes

Looking great ! How many times i wished i could save my tweaks…

2 Likes