How to export 3D animation for the web and game engines
To export 3D animation for the web or a game engine, use glTF — GLB is its single-file binary form — or FBX. Both store the node hierarchy, skeletons, skin weights and keyframed clips. glTF is the open standard that browsers and most engines read natively; FBX is the long-established interchange format of Maya, 3ds Max, Unity and Unreal pipelines. What survives the trip depends on the exporter, so constraints, IK and procedural motion are baked to keyframes first.
The short answer
Bake anything the format cannot store — IK, constraints, drivers and simulations — into keyframes, check the clips' names and lengths, then export GLB for the web and most modern engines, or FBX where a pipeline expects it. Transforms, skeletal animation and shape-key weights carry over; rig controls, custom curves and keyed material values usually do not. Open the file in the target before you rely on it.
Step by step
- 1
Bake what the format cannot store
File formats store keyframes, not the systems that made them. IK solvers, constraints, drivers, expressions and simulations have to be sampled into ordinary keys before export, or the file arrives with no motion where they were. In Studio, Bake IK in the Rigging panel and Animate ▸ Bake motion to keyframes… for drivers each do this.
- 2
Name and trim the clips
Engines import each animation in the file as a separate clip, by name. Give clips names a programmer will recognize — Walk, Idle, Open — and check each one's length, because a clip with a stray key twenty frames past the end will play twenty frames of nothing.
- 3
Choose the format
GLB for the web and for Godot, Blender, three.js and Babylon.js, which read glTF natively; Unity reads it through a package such as glTFast, and Unreal imports it too. FBX where the pipeline is built around it — Maya, 3ds Max and many Unity and Unreal projects.
- 4
Export
In Studio, File ▸ Export 3D model… and choose GLB or glTF — the two targets that carry animation. Every clip in the scene is written, with the one you were working in first. Export for the web… produces a page, embed, React component or three.js module that plays the animation back.
- 5
Check it in the target
Import the file into the engine or viewer it is for and play every clip. Check scale, facing direction, looping and whether eased motion still eases — the problems below show up here or not at all.
glTF and GLB for animation
glTF 2.0 stores animation as channels, each targeting one node's translation, rotation or scale, or a mesh's morph-target (shape-key) weights. Each channel samples keyframes with LINEAR, STEP or CUBICSPLINE interpolation, times are stored in seconds rather than frames, and rotations are quaternions. Skinned meshes carry their joints, inverse bind matrices and up to four weights per vertex per set.
That is deliberately narrow, which is why glTF loads almost anywhere with no conversion. Anything outside it — a keyed material color, a light's intensity, a camera's focal length — needs an extension such as KHR_animation_pointer, and support for extensions varies between engines. glTF is also meters and Y-up by definition, so it rarely arrives at the wrong size.
FBX for animation
FBX is Autodesk's proprietary format and has been the default for moving rigged, animated characters between DCCs and game engines for two decades. It stores skeletons, skinning, blend shapes, multiple takes and a frame rate, and Mixamo, Unity and Unreal all speak it fluently.
Its weaknesses are the same ones that make it flexible: units and axis conventions vary by exporter, so an FBX from one tool can arrive a hundred times too big or lying on its back, and details differ between SDK versions. Many files from Maya and Mixamo are in centimeters, where glTF is in meters.
What carries over, and what does not
Reliably carried: object transforms, skeletal animation on bones, shape-key weights and the clip structure. Usually lost: IK and constraints, drivers and expressions, custom rig controls, and keyed material, light and camera-lens values. Bake the first group of losses to keys; for the second, check whether the target supports an extension or needs the effect rebuilt.
Curves are the subtle one. Exporters differ in whether they keep bezier tangents, write cubic-spline data, or sample the curve into keys. An exporter that writes only the keys you set, with linear interpolation between them, flattens a strong ease between widely spaced keys. If exact easing matters in the engine, add keys inside the ease or bake the motion at the frame rate.
Exporting animation from Mixos Studio
Studio's GLB and glTF exports carry keyframed object transforms and shape-key weights, keep the scene hierarchy so each object animates in its own local space, and write every clip in the scene. The FBX, OBJ, STL and USDZ targets do not carry animation, and the export dialog says so before the download.
Two limits are worth knowing. Keys are written at the times you set them and interpolated linearly between them in the file, so add a key inside a long ease if an engine has to reproduce it exactly. And keyed material, light and camera values stay in the scene, because core glTF has no channel for them. The .mxs scene file keeps everything a model format cannot — generators, modifiers, animation and render settings — for when the destination is Studio itself. Export is on a paid plan; animating and previewing are free.
Frequently asked questions
Is GLB or FBX better for animation?
GLB for the web and for engines that read glTF natively, such as Godot and three.js — it is an open standard, metric, and consistent between tools. FBX where a pipeline is built around it, particularly Maya, 3ds Max and many Unity and Unreal projects. Both carry skeletal animation and shape keys.
Does glTF support animation?
Yes. glTF 2.0 animates node translation, rotation and scale and morph-target weights, with linear, step or cubic-spline interpolation, and supports skinned meshes. Animating other properties, such as material values, needs an extension.
Why is my exported animation not moving?
Usually because the motion came from something the format does not store — an IK solver, a constraint, a driver or a simulation — and was not baked to keyframes before export. The other common cause is the engine not playing the clip: most need the clip assigned or set to autoplay.
Why is my animation the wrong size or rotated in the engine?
Unit and axis conventions. glTF is always meters and Y-up; FBX depends on the exporter and is often centimeters. Set the unit and axis options at export, or apply a single scale on import, rather than fixing it per clip.
Can I export animation from a browser?
Yes. Mixos Studio exports animated scenes as GLB or glTF with every clip, or as a web page or three.js module that plays them. Animating is free; exporting is on a paid plan.
Animate a scene and take it out as GLB — every clip, in the format the web and most engines read natively.