Collaborate with other projects to create a new 3D interchange format
It is hard to get models out of Blender.
(correctly and without loosing half the work)
I would like to propose for the Blender project to come together with other FOSS projects (and also non FOSS companies) to create a new extensible 3D interchange format.
Why
While Blenders focus is on film making, it could be very well suited for video games development.
With version 4.4, Blender will have an animation system perfectly suitable for that. Unfortunately, exporting a model with plenty of animations, constraints, and what not, is not possible.
I don't want to fault the Blender developers for the FBX exporter. I understand it is reverse engineered.
FBX is undocumented and not extensible.
The proprietary 'Better FBX Exporter' extension may implement the new animation system, relying on that is far from a good situation for a FOSS project. The issue of extensibility remains.
Apart from FBX, what is there?
- GLTF 2.0 is a format for runtime loading. I've written down in more detail why glTF 2.0 doesn't work for interchange here: gist.github.com/emperorofmars/d8abf0f4b9bd5434f9543511b243a254
- USD is not 'just a 3d format'. Its scope is far bigger and more comparable to an entire game-engine project rather than a single asset. It can make use of FBX files, and it could make use of this proposed format in the same way. USD does not replace FBX, or any other file format like that, and it's very complex. Godot doesn't support USD.
What should be done
Collaborate to create a file format that is highly modular and extensible .
It should:
- Be easy to implement.
- Represent 3d models without loss to the extent possible.
- Its data-model should match that of authoring tools like Blender, Godot, Bevy, Unreal Engine, Unity3d, Maya, 3dsMax, etc…
- Extensions should be easy to develop.
- Runtime loading efficiency should be a non concern.
This has also been proposed to:
- Godot: github.com/godotengine/godot-proposals/discussions/11283
- Bevy: github.com/bevyengine/bevy/discussions/16632
An ecosystem is always bigger than the sum of its parts.
This would enable a frictionless asset-pipeline between Blender and Godot, or really any other authoring tool.
Supporting non FOSS tools would also be critically important in order for Blender to partake in the larger game development ecosystem.
Not being able to meaningfully get models out of Blender makes it feel more proprietary than its closed source alternatives.
What has already been done
Proof of Concept
It consists of a container format with no specific features of its own. All functionality is implemented as hot-loadable plugins, including core resource types like meshes. A lot of effort was put into making plugins as self-contained as possible and easy to develop.
Repository: github.com/emperorofmars/stf-unity-poc
Explanation: github.com/emperorofmars/stf-unity-poc/blob/master/STF/Docs/stf_format.md
Arbitrary Material Definitions Proof of Concept
Current 3d formats support only some specific materials. I've tried to create a material-definition format that supports arbitrary properties and is fully independent of any tool, game-engine or shader.
Explanation & Repository: github.com/emperorofmars/stf-unity-poc/blob/master/MTF/readme.md
Extension System for FBX
This makes FBX (and other formats) extensible by serializing data into a 3d models object hierarchy. It's implemented for Blender and Unity. It shows how easily an extension system can work on current existing formats. This is at best a very heretical band-aid.
Explanation & Repository: github.com/emperorofmars/nna
0 Comments