[Bf-committers] Proposal: Export extensions for better integration with game engines.

Juan Linietsky juan at godotengine.org
Thu Mar 4 19:04:37 CET 2021


Hi Everyone!

   Most exporters are working fantastic nowadays in Blender, so on the
Godot Engine side, we are trying to figure how better to improve our
experience to users when going back and forth between Blender and Godot.

   So, this proposal consists on a very (pre-discussed) list of topics that
we would be glad to work together in ensuring Blender can support these
somehow (which should hopefully happen with minimal effort).

   The main topic is the ability for Blender to have a "Metadata Export"
plugin. This means, that at the time of export,and for each object exported
(node, material, skeleton, mesh, etc) Blender should be able to ask for
"metadata" to the export plugins. Export plugins can then return generic
metadata (Strings or what you believe is best) to embed in exported scenes.

  Here are use cases where these type of plugins would be very useful:

* *UUID exporting*: When we import a scene on the game engine side, we can
only track objects by name. Blender uses unique names for objects, but
artists will often rename them, causing data added on the engine side (such
as overriding materials, changing positions, setting children nodes to,
etc) to be lost.  Ideally, Blender should be able to assign UUIDs to every
object at the time of creation (does not need to be global, can be per
blender file). If not desired to be core in Blender, then the add-on should
be able to do this somehow.
* *Material Exporting:* Exporting materials is very limited in any format.
Users often just want to model directly on Blender, set up the materials
with nodes, and then expect them to work in the engine. To solve this, we
originally wrote a direct Blender -> Godot exporter, but this is very
difficult to maintain where the main thing we need is just materials. On
export, we convert Blender Materials to Godot Shaders, so they work
automatically on the engine. If this can be saved as metadata in
GLTF/DAE/FBX, it's much easier for us to maintain.
* *Extra parameters for lights and cameras*: Sometimes, we want more
parameters exported from lights, cameras, etc. in order to make sure scenes
just work.
* *Extra types of objects:* Godot supports Splines, IK, Physics and many
other types of objects that blender supports, but that no export format
does. Being able to export those as metadata in the exporter would be very
useful. As an example, when making a racing game, exporting a Spline used
to create a racetrack helps make a better AI.

So, all this could be done if exporters polled export metadata plugins for
metadata at the time of export (so we ensure we convert from the most
recent version of the object) on any object, then added it in the exported
data. This is a minimal non-invasive change in Blender exporters, but adds
huge flexibility to engine export.

Best

Juan


More information about the Bf-committers mailing list