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:
- Select the Godot Preset
- Create an Export Collection
- 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
- Copy the
.gltf
file tpgetjer wotj themodels/
andtextures/
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. - Godot will automatically detect the
.gltf
files and import them as scenes. - Open the imported scene to verify that the model and textures are correctly applied.
B. Extract Materials for Sharing
- Open an imported model in Godot.
- In the Inspector, find the Actions button at the left top.
- Under click Extract Materials and specify the location for the creation of the material asset.
- Press Select Current Folder and confirm the creation of the material asset by pressing Extract.
C. Reassign Materials to New Imports
- Import a new
.gltf
asset. - 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.
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. |
Animation Related Settings
Setting | Value | Notes |
---|---|---|
Animations | ✅ Enabled |
Export actions/NLA tracks as glTF animations. |
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. |
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
- Export
chair.gltf
andtable.gltf
, both usingwood_albedo.png
. - Import both into Godot.
- Extract the wood material from
chair
and save aswood.tres
. - Assign
wood.tres
to thetable
model. - Update
wood_albedo.png
—both models reflect the change.