Goblend: Export from Blender to Godot

I recently published Goblend, an advanced import export pipeline from Blender to Godot. Its main idea is that you should be able to export your scenes with minimal edits needed in Godot, with performance in mind as well.

One of its most essential features is that Blender scenes that link to other scenes are exported recursively and Goblend then links them as instantiated child scenes in Godot. This way you can split up your assets and reuse them without having them copied everywhere.

Another strong point is that you can define all your collisions already inside of Blender and Goblend will export them as primitive collision shapes if you tell it to.

This image shows both of these features:

This is by far not everything though, a complete list would include the following:

  • Bake materials automatically to textures (if needed), for direct use in Godot
  • Export nested scenes correctly by instantiating child scenes in Godot
  • Fine-grained control over how materials and other resources are exported
  • Collisions (primitive and/or convex) directly inside of Blender
  • Converting basic Blender shaders directly to Godot shader code
  • Correct lighting by extracting information from existing Godot scenes
  • Basic support for material animations
  • High customizability by defining default settings with a config file
  • More settings like transparency mode, cull mode, or groups to set in Blender
  • Including existing Godot scenes in the exported scene

Goblend is open-source and free to use! Also, it is not vibe-coded :wink:

Goblend is available on both the Godot Asset Library as well as the Blender Extensions site. It’s not trivial to use since it is not geared toward complete beginners. But don’t worry, everything is very well documented and you will get the gist of it fairly quickly. You can find installation instructions, said documentation, the GitHub repo and more here: https://goblend.dev.

I hope this can be useful to many of you. Let me know what you think!

Cheers, Togira

8 Likes

Looks nice. Does it export to glTF (glb) or do you import the blend into Godot. (That will use blender in background to export to glb). Only hint I can see is, that the blend must be placed in the project.
Most of the time I have a .gdignore in my blend folder.

1 Like

The blender scene is exported as glb. Then, Blender calls Godot with a lot of command line arguments that tell the post-import script in Godot what exactly to do with the data inside the glb. This is how many of the settings that you set in Blender are passed to Godot. When the export finishes it will delete the glb so you’ll end up with your scene and no other artifacts from the export :slight_smile:
Hence having your blender files in a .gdignore is totally fine, in fact I have that as well for my personal projects

3 Likes

Interesting. Where do you store the mesh data, when the glb is deleted? In the tscn? I always inherit from the glb.

1 Like

Yeah, it’s stored in the scene file :slight_smile: Your resulting scene will be completely independent from the glb. That’s also because Goblend can potentially modify your scene a lot, for example by adding collision shapes or instantiating child scenes.

Doesn’t this make the tscn huge and loading slow, as the mesh data is now stored as text? And only on export it will be a binary scn? It’s a little bit over my knowledge about the interna in godot.

I’ve been using it for months now while developing it and never noticed any slowdowns. When you export your game it will be converted to a binary scene file anyway as you said. Goblend already stores materials and some other resources in separate files, I could very well also do the same for meshes, it wouldn’t be hard to implement. I’d probably make it an opt-in setting, but sounds like a decent idea I think. If you want you can open an issue on the GitHub repo and then I can look into it

1 Like

Did you made a test with a real 3D-object with 20k+ faces, with one or two UVs, seams, some sharp edges and tangents on export? Would like to know the file size of your tscn. Are there warnings in the editor with this scene?

Yes, one scene file that contains a total of about 33k faces is just under 900 KB. No warnings in the editor

2 Likes

Right now some resources like materials, animations or textures get stored in separate files (and folders) already. I’m not quite sure what you mean by “automate folders”, but you can already configure your desired save paths for each resource type separately. If that’s not what you meant can you rephrase your question? :sweat_smile:

1 Like

Alright :slight_smile: Then just to follow up on it: You can configure a default for your entire project with the Goblend config file and then also set it in every blender file separately if you want to make exceptions. Also specifically note this option which will recreate the same folder structure that you use for your Blender files!

One aspect why it could be bad to store the mesh date in the tscn is vibe coding. When you work with LLMs and agentic workflow, where you send the tscn as text to the LLM, 900KB are a lot of tokens.
From time to time I use an LLM agent over MCP with Godot, there the mesh data in the tscn would be a cash burner (and context window killer).

Hi :slight_smile: Just released an update, saving meshes separately is now possible. Thought I’d let you know.

2 Likes