# Import rigged 3D models and animation into Godot

Source: https://bake3d.ai/guides/animated-glb-godot
Updated: 2026-10-08. Written by Bake3D (https://bake3d.ai).

Import rigged 3D models and animated GLB files into Godot with the Bake3D add-on or by hand, keep root motion and foot plants, and play the clips.

## Short answer

Godot reads GLB files natively and recommends the glTF format. Add the GLB to your project, or generate and import it from the Bake3D panel. Godot builds a scene with a skeleton, the mesh and an AnimationPlayer. Check the facing and root motion, then play each clip.

## How we checked

Godot 4.7.2 native tests cover headless editor compilation, the add-on's MCP client (handshake, polling, uploads, credential boundaries), the panel's generation and export contracts, rig imports, saved scene reloads, root-motion wiring and sampled animation positions. The panel's appearance in a live editor and paid generation from Godot remain unverified.

A rigged GLB carries a mesh, skin weights, skeleton, materials and baked animation. Godot can turn that file into a scene with a `Skeleton3D` and an `AnimationPlayer`. Check the imported motion before using it in a game, especially when foot contact or mechanical alignment matters.

## Use the Bake3D Godot add-on

Download the [Godot add-on ZIP](https://bake3d.ai/integrations/godot/bake3d-godot.zip) and extract it at your project root, so `addons/bake3d/plugin.cfg` exists. Enable Bake3D in **Project → Project Settings → Plugins**, open a 3D scene, and select the **Bake3D** bottom panel. The add-on's own `README.md` sits beside `plugin.cfg`.

Enter a key from [Account → API](https://bake3d.ai/account/api). API access requires Pro or Studio. The add-on keeps the key in memory; it can also read `BAKE3D_API_KEY` from the environment that starts Godot. Select **Credits** to load your balance; the generation and motion buttons then show their current costs.

Choose **Image file** to pick a PNG, JPEG or WebP with the editor's file dialog, which the add-on uploads to your account. You can also choose **Image URL** for one public HTTPS image, or **Text** to describe the subject. Select **Generate mesh and rig**. The panel checks the job every four seconds on editor timers, so Godot stays responsive. It backs off when rate limited and stops after 20 minutes. **Stop waiting** leaves the job running on Bake3D; **Cancel job** stops it and refunds its credits. **Skip the included animation** generates a rig without the free included motion.

You can also select **Find rigged projects** and choose an existing character. **Refresh motions** lists its saved animations and the built-in presets. A preset that cannot play on this rig is marked with the reason, for example when it lacks the leg chains a walk needs. **Compose motion** describes new motion with a length and loop setting. **Included animation** creates or recovers the free introduction for an existing rig.

Select **Import into open scene**. **Rest pose only** leaves the animation out of this export only. **Height** scales the export to a real-world height in metres, and 0 keeps the generated size. Each import writes a compressed native scene, `res://Bake3D/_.scn`, numbered when the name exists. The source GLB goes into `res://Bake3D/source`, which contains a `.gdignore` file so the editor never re-imports it. Only the new scene is registered with the FileSystem dock. Undo removes the placed instance while keeping the files. **Play / pause imported motion** previews the requested clip; pausing returns the skeleton to its rest pose, so a posed rig is never saved into your scene.

## Facing and root motion

Exports are grounded (feet at y = 0) and centred on the origin, and they face glTF +Z. Godot keeps that axis. The character faces `Vector3.MODEL_FRONT` (+Z), while Godot's scene forward, `Vector3.FORWARD`, is −Z. Use `look_at(target, Vector3.UP, true)` to turn the model's front toward a target.

Every export's skeleton starts with `motion_root`, an unweighted bone on the ground at the origin. With **Root motion** on, that bone carries only planar travel and heading; the hips keep their bob and jump. The add-on then sets the AnimationPlayer's `root_motion_track` to it, for example `Bake3D/Armature/Skeleton3D:motion_root`. The preview stays in place, and your controller applies `get_root_motion_position()`. With Root motion off, `motion_root` stays still and the clip animates in place, keeping vertical motion such as a jump and wheel roll.

## Import an animated GLB manually

Export your rig from Bake3D and copy the GLB into the Godot project. To try this first with a free test model, use one of our [free rigged and animated 3D models](https://bake3d.ai/free-3d-models): they are Bake3D exports at 30 fps. Wait for import to finish, then drag the imported scene into a 3D scene. Expand it to inspect the skeleton, mesh and AnimationPlayer.

Select the source GLB in FileSystem and set **Animation → FPS** to match the Bake3D export: 24, 30 or 60. Godot's [scene importer documentation](https://docs.godotengine.org/en/stable/classes/class_resourceimporterscene.html#class-resourceimporterscene-property-animation-fps) recommends matching the source sampling rate.

For a faithful motion comparison, open **Advanced Import Settings**, select the **AnimationPlayer** node, and disable **Optimizer → Enabled**, then reimport. The optimizer removes animation keys. That can be useful for smaller assets, but it can also change a carefully planted foot. Once the imported motion passes your checks, you can tune optimization and compare again.

The Bake3D add-on imports through Godot's [GLTFDocument](https://docs.godotengine.org/en/stable/classes/class_gltfdocument.html) and saves a native scene without that additional key reduction. If you later import its source GLB manually, apply the same FPS and optimizer checks. For root motion in a manual import, set the AnimationPlayer's or AnimationTree's **Root Motion → Track** to the `motion_root` bone.

## Check playback

Select the AnimationPlayer, choose the imported clip, and scrub a full cycle. Watch every appendage and confirm the texture is present. Compare the first and last poses of a loop. For a walking clip, inspect the stance phase in slow motion.

Applying both controller movement and baked travel can move the character twice, so pick in-place clips or root motion deliberately. A creature with many legs can use its imported skeleton directly; it does not need a humanoid bone map. Imported clips do not automatically become a gameplay state machine. Set up your `AnimationPlayer` or `AnimationTree` and trigger the appropriate clip for idle, movement and other actions. Rigged vehicles and props need actions around their actual pivots.

## What we verified

In Godot 4.7.2, we tested four procedural walkers with 5, 6, 8 and 24 legs, including unequal limbs, extra leg segments and low-mounted joints. With matching FPS and optimization disabled, sampled foot positions differed from the browser animation by less than 0.000001 scene units. The add-on's saved native scenes passed the same comparison after reopening. A root-motion import of the eight-legged walker wired `root_motion_track` to its `motion_root` bone, and an in-place import left the track empty.

The add-on's client was tested against a stand-in service for its one-per-session MCP handshake, four-second polling with `Retry-After` back-off, the 20-minute limit and stop, multipart image uploads, and signed downloads that never carry the API key. The panel was driven through image-file, URL and text generation, preset gating, and the rest-pose, root-motion and height export options. Earlier, the client was also used against production to discover presets, export an existing rig and import the resulting textured model. Paid generation from Godot and visual inspection of the panel were not part of this validation.

These tests establish the tested import and playback behaviour. They do not establish that every generated mesh has correct anatomy or deformation. Use the [rig quality checklist](https://bake3d.ai/guides/check-ai-generated-rig) and [MCP reference](https://bake3d.ai/docs/mcp) as you build your workflow.
