Import rigged 3D models and animation into Godot

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.

By the Bake3D teamUpdated 6 min read

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 this: 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 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. 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/<Name>_<Motion>.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: 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 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 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 and MCP reference as you build your workflow.

About this guide

Written and kept up to date by the Bake3D team. We build a tool that turns one image into a textured, rigged and animated 3D model, and we test the steps in our guides on our own files. First published . See how we write and check guides, or send a correction to hello@bake3d.ai.