Godot Guide

Simple Export ships with the Godot - default preset.

It uses the glTF format, which is the recommended by Godot for 3D assets. I opted to use glTF separate files (.gltf + .bin + textures) instead of the binary .glb format to allow for better texture reuse, material sharing. You can find an overview over the options here:

1. Exporting Assets from Your DCC Tool

Exporting static assets to Godot is straightforward and only requires 3 simple steps:

  1. Select the Godot Preset
  2. Create an Export Collection
  3. Export the Collection/Collections

2. Importing into Godot

Importing into Godot is also simple, but requires a few extra steps to ensure that materials are shared correctly.

A. Import Assets

  1. Copy the .gltf file tpgetjer wotj the models/ and textures/ folders into your Godot project. You can skip this step if you set the export path directly to your Godot project folder. In the video the export path is directly set to the correct folder within the Godot project. The object is therefore automatically imported.
  2. Godot will automatically detect the .gltf files and import them as scenes.
  3. Open the imported scene to verify that the model and textures are correctly applied.

B. Extract Materials for Sharing

  1. Open an imported model in Godot.
  2. In the Inspector, find the Actions button at the left top.
  3. Under click Extract Materials and specify the location for the creation of the material asset.
  4. Press Select Current Folder and confirm the creation of the material asset by pressing Extract.

C. Reassign Materials to New Imports

  1. Import a new .gltf asset.
  2. In the Inspector, replace its materials with the shared .tres file:
    • Select the MeshInstance3D node.
    • Drag materials/shared_material.tres into the material slot.
    • Repeat for all matching materials.

Exporting Animated Characters

Rigged, animated characters (an armature with a skinned mesh and one or more Actions) use a separate preset from static meshes: Godot-animation. The static Godot-default preset intentionally exports no animation at all - using it on a rigged character will give you the mesh and skeleton with no motion. Godot-animation bakes every Action in the file as its own glTF animation, so Godot's importer splits them back out into individual entries in the imported AnimationPlayer.

Step 1: Select the Godot Animation Preset

Make sure Godot-animation is selected as the Export Collection Preset, instead of Godot-default.

Step 2: Create an Export Collection

Select the armature (its mesh and any children are picked up automatically) and create an export collection, exactly as for a static mesh - the plus button in the Export List, right-click on the object in the Outliner, or right-click in the 3D Viewport.

Step 3: Export the Collection

Export from the Export List, the Outliner, or by exporting all selected collections. Every Action currently in the file gets baked into the export - there is no separate step to pick which animations go out.

Multiple characters sharing one skeleton type

If several characters share the same rig, keep the Actions you want in each character's own .blend file (or use Action assignment/filtering in your own pipeline) before exporting - Godot-animation exports every Action present in the file, not just the ones currently played back on the armature.

More than 4 bone influences per vertex

Godot supports up to 4 bone weights per vertex. If a mesh has vertices weighted to more than 4 bones, Blender's glTF exporter keeps the 4 highest weights and renormalizes them, and prints a There are more than 4 joint vertex influences warning during export. This is expected and does not indicate a broken export.

Importing Animated Characters into Godot

Unlike Unity, Godot's glTF importer imports animations by default and wires up the whole character automatically - dropping the exported .gltf into your project already gets you a ready-to-use scene with a Skeleton3D, a MeshInstance3D bound to it, and an AnimationPlayer holding every exported Action. There is no equivalent of Unity's "Avatar Definition defaults to No Avatar" trap to work around.

Step 1: Instance the Character in a Scene

Drag the imported .gltf file from the FileSystem dock into a scene (or right-click it and choose New Inherited Scene) to add the character as an instanced sub-scene. Its AnimationPlayer node is available immediately, with every Action from the Blender file listed as a separate animation.

Step 2: Check the Imported Animation Names

Godot's importer recognizes an _Loop (or -loop) suffix on an animation's name as a looping convention: an Action named Idle_Loop in Blender is imported as Idle in the AnimationPlayer, with Loop Mode already set to Linear - no suffix, and no manual step needed to make it loop. Actions without that suffix (Punch_Cross, Sword_Attack, and so on) come through with their name unchanged and Loop Mode: None. If you're looking for a clip by its Blender name and can't find it, check whether it originally ended in _Loop.

Step 3: Play an Animation

Select the AnimationPlayer node and play any clip directly from the Animation panel to preview it in the editor, or call it at runtime:

$AnimationPlayer.play("Idle")

No Animator Controller equivalent is required - every imported clip is playable immediately.


The Simple Exporter Godot Preset

An overview of all settings used in the preset:

General Settings

Setting Value Notes
Format gltf Separate Separate the data makes it eaier to share data and avoid duplication. See the later section glb vs gltf for more context.
Textures textures Folder to place texture files in. Relative to the .gltf file
Custom Properties True Custom Properties can make the files slightly bigger but can be useful for passing on additional data in your pipeline.

Transformation Settings

Setting Value Notes
Export at Collection Center False The feature sound unpredictable. Export at Collection Center, Export at Collection center of mass of root objects of the collection
+Y Up True +Y Up, Export using glTF convention, +Y up
Flatten Object Hierarchy False Comgines different objects. This should be a dedicated decision by the user.Flatten Object Hierarchy, Flatten Object Hierarchy. Useful in case of non decomposable transformation matrix.
Full Collection Hierarchy True Full Collection Hierarchy: Export full hierarchy, including intermediate collections.

Mesh Settings

Setting Value Notes
Apply Modifiers ✅ Enabled Apply objects modifiers on export
UVs ✅ Enabled Export UVs with the meshes.
Normals ✅ Enabled Export vertex normals with meshes.
Tangents ❌ Disabled Godot uses Mikktspace tangent space, the same Tangent space used by Blender. It is therefore not necessary to export the tangent space
Attributes ✅ Enabled Export Attributes (when starting with underscore).
Loose Edges ❌ Disabled
Loose Points ❌ Disabled
Shared Accessors ❌ Disabled Shared Accessors, Export Primitives using shared accessors for attributes

Material Settings

Setting Value Notes
Use Vertex Color Material Material – Export vertex color when used by material.
Export All Vertex Colors True Export All Vertex Colors, Export all vertex colors, even if not used by any material. If no Vertex Color is used in the mesh materials, a fake COLOR_0 will be created, in order to keep material unchanged.
Setting Value Notes
Materials Export Material – Export vertex color when used by material.
Images Automatic Material – Export vertex color when used by material.
Setting Value Notes
Animations ❌ Disabled Export actions/NLA tracks as glTF animations. Enabled on Godot-animation, see below.
Animation Mode ACTIONS Exports each action as a separate animation.
Skinning ✅ Enabled Required for armatures.
Bone Influences 4 Godot supports up to 4 bone influences per vertex.
Add Leaf Bones ❌ Disabled Not required for Godot.
Optimize Animation Size ✅ Enabled Removes redundant keyframes.
Negative Frames SLIDE Slides animations to start at frame 0, useful for looping.
Sampling Rate 1 How often to evaluate animated values (in frames).
Force Sampling ✅ Enabled Ensures consistent animation sampling.
Export Deform Bones Only ❌ Disabled Export all bones unless you specifically need only deform bones.
Reset Pose Bones ✅ Enabled Resets pose bones between actions, preventing pose carryover.
Bake Animation ❌ Disabled Only enable if using constraints/drivers or exporting only selected objects.

The Simple Godot Animation Preset

Godot-animation shares every setting above with Godot-default except one. This is the only difference:

Setting Godot-default Godot-animation Notes
Animations ❌ Disabled ✅ Enabled Turns on animation export at all - without this, none of the file's Actions reach the glTF file, even though every other animation-related setting (Animation Mode, Skinning, Bone Influences, and so on) is already configured correctly on both presets.

Everything else - mesh settings, material settings, transformation settings, and every other row in the Animation Related Settings table above - stays identical to the static preset, since none of that changes just because the mesh is now animated.

gltf vs glb

  • .gltf files are JSON-based and reference external binary and texture files. This makes them more human-readable and easier to edit manually.
  • .glb files are binary files that package all data (geometry, materials, textures, animations) into a single file. This makes them more compact and easier to manage, especially for distribution.

Comparison

Feature glTF Separate: glTF Binary:
File Structure Multiple files: .gltf (JSON) + .bin, textures, etc. Single binary file (.glb)
Transfer Ease More files to manage; risk of missing assets Single file; easier to share/transfer
Godot Import Supported; may require manual asset linking Supported; simpler import process
Size Efficiency Slightly larger due to separate files and JSON overhead More compact; optimized for transfer
Editing Flexibility Easier to edit individual assets (e.g., textures) Harder to edit; requires unpacking
Version Control Better for diffing/merging (text-based JSON) Binary; harder to version control
Texture Reuse Easier to reuse textures across multiple assets More difficult; textures are embedded
Material Sharing Easier to share and update materials More difficult; materials are embedded

Project Structure

The textures and materials are stored as sub-folders of the assets

your_project/
├── assets/
    ├── [asset category]/
    │   ├── asset1.gltf
    │   ├── asset1.bin
    │   ├── asset2.gltf
    │   ├── asset2.bin
    |   ├──textures/
    │   |   ├── shared_albedo.png
    │   |   ├── shared_metallicroughness.png
    │   |   ├── shared_normal.png
    |   ├── materials/
    │   |   ├── shared_material.tres  # Godot material
  • assets/: Contains all 3D assets.
  • [asset category]/: User defined subfolder defining the asset category. Contains the.gltf and .bin files.
  • textures/: Centralized folder for all textures of this category.
  • materials/: Godot material files (.tres) for sharing.

Automate Material Sharing (Optional)

Use a Godot script to automatically replace duplicate materials:


Updating Assets

  • Textures: Replace the file in textures/. All models using it will update automatically.
  • Materials: Edit the .tres file. Changes apply to all linked models.
  • Meshes: Re-export only the .gltf/.bin files for the updated model.

Troubleshooting

  • Missing textures? Double-check paths in the .gltf JSON.
  • Materials not updating? Ensure the .tres file is correctly linked.
  • Performance issues? Use Godot’s Resource Usage debugger to check for duplicates.

Example Workflow

  1. Export chair.gltf and table.gltf, both using wood_albedo.png.
  2. Import both into Godot.
  3. Extract the wood material from chair and save as wood.tres.
  4. Assign wood.tres to the table model.
  5. Update wood_albedo.png—both models reflect the change.

Furhter References and Resources: