Supported file formats¶
What Moonshine accepts when you add media, and which variant to bring to site.
The full list¶
| Kind | Extensions |
|---|---|
| 3D models | .obj .gltf .glb .fbx |
| Images | .png .jpg .jpeg .webp |
| Video | .mp4 .mov .webm |
The drop zone in the media library prints a short version of this list under the Drop files here prompt. You can drop or pick several files at once; they upload in parallel, and dropping more while a batch is still going starts those immediately too — the prompt changes to a count of what is in flight.
Anything else is ignored without a message
The file picker filters to the extensions above, and a drag-and-drop of an unsupported file is dropped silently — no item appears, no error is shown. If a file you dropped never shows up in the library, check the extension first.
3D models¶
Bring .glb whenever you have the choice. A GLB carries its geometry inside the single file you upload, which is what Moonshine stores.
A .gltf with a separate .bin will not load
Plain .gltf is a JSON file that usually points at an external binary file and external textures. Moonshine stores one file per item, so those companions never arrive — the model comes in as a plain placeholder box. Export as GLB (binary glTF), or use OBJ or FBX instead.
What comes across¶
| Carried over | Not carried over |
|---|---|
| Geometry (positions and faces) | Materials |
| Normals, when the file has them | Textures and image maps |
| UV coordinates, when the file has them | Lights, cameras, animation |
| Vertex colours (glTF/GLB) | Scene hierarchy names |
Every model is shaded with a plain neutral surface once loaded. That is deliberate — the surface is a stand-in for real geometry in the room, and what you see on it comes from the media you assign for playback, not from the file's own materials. See Putting media on a surface.
Practical guidance¶
- Export UVs if you plan to use the UV view mode or map imagery by the model's own coordinates. A model with no UV channel still warps and still receives projected light, but UV mapping has nothing to work from.
- Bring only the geometry you project onto. Off-stage set dressing costs you loading time and clutters the viewport.
- Watch the density. Warping moves the model's vertices, so the mesh resolution sets how finely you can push a surface. A four-vertex plane bends only at its corners; a subdivided one bends anywhere.
- Model in the units you intend to work in. Nothing rescales the file for you.
- OBJ files also report a Vertices count in the media library — a fast sanity check that you exported the density you expected.
Images¶
.png, .jpg / .jpeg and .webp are all read directly. On upload, Moonshine reads the pixel dimensions and builds a thumbnail; the Width and Height rows in the item's details show what it found.
Use PNG where you need crisp edges or an alpha channel, JPG for photographic content where file size matters.
Video¶
The three accepted containers — .mp4, .mov and .webm — say almost nothing about what is inside them. A .mov may hold anything from H.264 to ProRes to a HAP variant, and the codec is what decides whether your browser can preview it.
Both cases work for playback. The difference is only in what the media library can show you:
| Case | What you see in the library |
|---|---|
| Codec your browser can decode | Inline video preview, a thumbnail pulled from the file, and Width / Height / Duration read directly |
| Codec your browser cannot decode | A still frame produced by the show machine, plus a badge naming the codec and noting that it still plays on the show machine |
Put the codec in the file name
Moonshine reads codec hints out of the file name the moment you upload — names containing HAPQ, HAP_Alpha, HAP, ProRes, ProRes_4444, DNxHR or MJPEG get labelled immediately, before the show machine has finished inspecting the file. The Codec row is then corrected to the real value once the machine reports back. Naming the codec is a habit worth keeping anyway: it is the only thing that distinguishes two .mov files at a glance.
Replacing a file¶
You do not need to delete and re-upload to swap the content of an item. Select it and use Replace File…: the name, the folder and every place the item is used stay exactly as they are, and only the file behind it changes. The picker is restricted to the same kind of file, so a video item can only be replaced by another video. See Uploading media.