Narratomidocs
Cast and assets

Asset inspector

How to open an asset's preview, what its metadata means, and how to read an upload that was refused.

The inspector is a read-only window onto one asset. It previews the file, shows the metadata the library already knows, and for VRM avatars lets you audition expressions, clips and lipsync. It never writes anything.

Open it

Click any row in the Assets panel, or focus the row and press Enter. The Rename, Replace and Delete buttons on the row do not open it, they do their own job.

What you see

The preview depends on the kind:

  • image: the picture, scaled to fit.
  • audio: a standard audio player.
  • video: a standard video player.
  • avatar, environment, clip: a 3D viewer on a neutral studio backdrop, with orbit controls. The camera frames the model's bounding box, so a person-sized rig and a whole set both arrive centered.

Below the preview is a row of facts: the kind, the avatar tier if there is one, the file size, the content type, and a built-in badge for starter-pack files. A built-in's license string is printed under the row, and it is the provenance recorded when the pack was fetched, for example CC0 (VRoid β sample; embedded VRM meta licenseName=CC0).

For avatars there is one more line, and it is the whole policy in a sentence: real edits happen in your avatar tool, export a new VRM, then Replace this asset.

The VRM playground

When the subject is a VRM (tier vrm), the viewer grows controls under the canvas:

  • Preview clip: a dropdown of every clip the runtime could resolve, grouped in the stage's own resolution order (clips embedded in the model, then the project's clip assets, then the built-in library). (rest) fades back to idle. Looping clips hold; one-shots return to idle on their own.
  • Expressions: one chip per expression name parsed from the file, plus (rest). Tap to trigger, one at a time. These are the exact names three-vrm registers, capitalization included, which is why a model can offer Surprised rather than a lowercase preset.
  • Lipsync audio: pick an audio asset from the library and press Play to watch the mouth drive from it.

A clip asset has no body of its own, so it inspects on a mannequin: the first built-in avatar by default, swappable with the Mannequin picker. If the library has no avatar at all, the canvas says so instead of rendering an empty studio.

Nothing you do in the playground is saved. Triggering an expression here does not add a stage direction, and picking a clip does not change any beat.

Reading a failure

The inspector shows what got in. Files that did not get in fail at upload, and the message appears in red at the top of the Assets panel.

MessageWhat it meansWhat to do
A sentence giving the file's size and the limit (That file is 71.4 MB, then the cap).Caught in the browser before anything was sent.Shrink the file. For models, decimate the mesh or reduce texture resolution in your source tool.
Unsupported <kind> type <content type>The file's content type is not on that kind's allowlist.Check that the Upload kind select matches the file. Uploading a PNG while the kind reads audio fails here.
Invalid GLB/VRM plus a list of codesThe glTF validator found structural errors: a broken container, a missing required property, a dangling reference, or an external resource the file expects to load.Re-export from your source tool with textures embedded. Up to ten validator messages are listed, each as CODE: message.
Project asset quota exceededThis project's storage cap.Delete something unused from this project, or move work to another project.
Account storage limit exceededThe plan's pooled cap across every project you own.Delete unused assets anywhere, or upgrade. See Plan limits.
valid kind requiredThe kind did not reach the server. Rare from the panel, common when scripting the API.Send a kind from the accepted list.

Validation is deliberately not spec-perfection. Real VRoid and DCC exports emit tens of thousands of mesh-data complaints that every runtime loads without trouble, so those codes are muted. The gate asks one question: is this a parseable glTF 2.0 binary, or is it garbage.

When the preview itself fails

If the file uploaded but the viewer cannot load it, the canvas shows "Could not load this model." rather than a blank modal. That usually means the file is a valid container whose contents the renderer chokes on. Two things worth checking: whether the tier badge on the row says static (no usable humanoid rig, so it will not render on stage either), and whether the model actually opens in another glTF viewer.

On this page