Importing models
Bring your own 3D files into Sandbox: GLB, glTF, FBX, OBJ, STL and VOX, scaled and set on the ground automatically, animations included.
The studio reads the main 3D formats directly in the browser: no file is sent to a server for conversion. An imported model becomes an asset of kind model, placed and animated like any library model.
Supported formats
| Format | Extension | Becomes | Materials | Animations |
|---|---|---|---|---|
| Binary glTF | .glb | model | From the file (PBR) | Yes |
| glTF | .gltf | model | From the file (PBR) | Yes |
| FBX | .fbx | model | From the file | Yes |
| Wavefront OBJ | .obj | model | Neutral grey material | No |
| STL | .stl | model | Neutral light material | No |
| MagicaVoxel | .vox | voxel | File palette | No (keyframe-animatable) |
| Sandbox asset | .json | as is | — | Its clips |
Prefer GLB
.gltf must be self-contained (embedded data): the studio does not read .bin or texture files lying next to it. Export to GLB from Blender, Maya or your usual tool.Importing a file
Go to the Build step
The Project assets panel on the right lists the document’s assets (96 at most); Import sits in the panel just above it, and inside the asset editor too.Click Import
Pick a.glb,.gltf,.obj,.fbx,.stl,.voxfile or a Sandbox asset.json. The button reads “Importing” while decoding; any error shows just below.Adjust the height
The asset is added and selected. For a model, set Height in the world (0.1 to 40 units): scale and ground offset follow.Place it
Stay on the Build step, Place tool, and click the ground. For a character, the Cast step puts it down in its role instead.
Scaling and grounding
Every tool exports in its own units: a character can be 1.8 or 180 tall depending on the software. On import, the studio measures the model’s bounding box and brings it to 1.8 units tall, then offsets it so its lowest point rests on the ground. Both values are stored in the asset; the original file is untouched.
model.format'glb' | 'obj' | 'fbx' | 'stl'required.gltf is stored as glb.model.datastringmodel.urlstringmodel.bytesnumberrequiredmodel.fitnumberrequiredmodel.liftnumberrequiredmodel.heightnumberDefault 1.8model.animationsstring[]requiredmodel.animFromstringSize and weight
An imported file is embedded in the document as base64, which grows it by about a third. The maximum size of an imported file is 12 MB; above that, the import is refused with a “File too large” message. The same cap is checked server side when publishing.
A heavy document weighs on everyone
Animations
Animations inside a GLB, glTF or FBX are kept as they are and listed under the asset. The runtime picks the clip to play by its name:
| Clip name | Played when |
|---|---|
walk | The entity moves (or run). |
idle | The entity stands still. |
jump | It jumps. |
hit | It gets hit. |
attack | It attacks. |
Other clips are assigned per entity in the inspector, on the Cast and Build steps. A model without animation can borrow the clips of a library character that shares its skeleton (same bone names).
File → Export → glTF 2.0, format glTF Binary (.glb). Name your actions idle, walk, run, jump, attack, hit so the runtime finds them.
Save the .vox as is. The first model in the file is imported as a voxel asset, with its palette.
STL and OBJ files have no animation and get a neutral material. For colour, export a GLB with your materials instead, or rebuild key pieces as primitives.
MagicaVoxel files
A .vox becomes a real voxel asset, editable with every voxel editor tool. The studio reads the file’s first model, converts MagicaVoxel’s vertical Z axis to Sandbox’s Y axis, centres the model in a grid that is a multiple of 8 (64 at most), and carries its colours into the palette (255 at most). The pivot is placed at the bottom of the model.
Sandbox files
A single asset
The JSON button next to an asset’s name downloads a .sandbox-asset.json file. Import it into another project with Import: it gets a new id and arrives with its parts, palette and clips.
A whole project
For a whole game, export a .sandbox.json from the Publish step (or the Projects menu) and reopen it with Import on the studio’s entry screen. The document is migrated to the current format and gets a new project id.
my-game.sandbox.json a whole project (studio entry screen)
robot.sandbox-asset.json a single asset (Build step, Import)Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| “Supported: .glb .gltf …” | Unrecognised extension. | Convert to GLB. |
| “File too large” | File over 12 MB. | Simplify the mesh, shrink textures. |
| Model without textures | glTF with external files, or OBJ / STL. | Export a self-contained GLB. |
| The character does not animate | Missing or misnamed clips. | Rename to idle / walk…, or borrow clips. |
| Nothing happens | The project already has 96 assets. | Delete unused assets. |