Skip to content

demolke/minigltf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minigltf

Minimal Blender GLTF exporter for Godot optimized for speed

Performance

  vertices             100,482
  triangles            200,960
  loops                402,560
  shape keys           50
  bones                40
  animations           31 × ~30 keyframes

                   median       min       max        size
──────────────────────────────────────────────────────────
minigltf           2.755s    2.471s    3.450s    267.1 MB
built-in glTF    379.377s  373.314s  907.280s    244.5 MB

speedup: ~138x

The main performance difference comes from the fact minigltf does not sample curves at each frame, but rather exports only the existing keyframes directly. This means only raw keyframe values get exported, not their interpolation mode or handles.

Supported features

Geometry

  • Positions, normals, up to two UV layers (TEXCOORD_0 / TEXCOORD_1)
  • Triangle indices
  • Multiple meshes in one scene

Materials

  • PBR metallic-roughness: base color texture, metallic/roughness texture, normal map
  • Textures referenced by relative path

Armature

  • Armatures exported as glTF skins with inverse bind matrices
  • Up to 4 joint influences per vertex (JOINTS_0 / WEIGHTS_0)

Morph targets (shape keys)

  • All non-basis keys exported as glTF morph targets with delta positions

Animations

  • Skeleton animation: translation and rotation channels per bone
  • Shape key animation: weight tracks targeting mesh nodes
  • Multiple actions per scene, each becomes a separate glTF animation

Coordinate system

  • Blender Z-up → glTF Y-up axis conversion applied to all positions, normals, and rotations

Limitations

  • Exports only keyframes Blender curve handles are ignored and not sampled
  • Scale animation channels are not exported
  • Textures are not embedded in the GLB; they must sit alongside the file at the relative paths stored in the material nodes
  • 4 joint influences maximum; excess groups are dropped
  • No vertex colours, tangents, emission, transparency, IOR, lights, cameras, or particles
  • Requires Blender 4.0+; the Blender addon requires 4.2+

Usage

As a standalone library

Call mini_export from any Blender Python context

import minigltf

minigltf.mini_export("/output/scene.glb")

As the Godot addon

Godot's .blend importer calls bpy.ops.export_scene.gltf(...) internally. The addon patches that operator to route the call through mini_export instead, so no changes to your Godot project or import settings are needed.

Install

  1. Download godot_minigltf_override.zip from the latest release
  2. In Blender: Edit → Preferences → Add-ons → Install from Disk
  3. Select the zip and enable the extension

Uninstall / disable

Disable or remove the extension from Edit → Preferences → Extensions. The original glTF exporter is restored immediately.

Development

Run the test suite (requires Blender on $PATH or set BLENDER=):

python tests/run_tests.py
# or against a specific Blender build:
BLENDER=/opt/blender-5.1.0-linux-x64/blender python tests/run_tests.py

Cut a release

Push a version tag; the Release workflow runs the test suite and, if it passes, builds godot_minigltf_override.zip and attaches it to a GitHub release:

git tag v1.2.3
git push origin v1.2.3

About

Minimal Blender GLTF exporter for Godot optimized for speed

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages