-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Description
What problem does this solve or what need does it fill?
There are various formats like GLTF, FBX, OpenUSD, etc that allow to transfer meshes, materials, animations, etc. Various tools may need to transfer some additional data to cover their specific needs. For such purposes these formats provide custom properties that can be appended to objects, meshes, materials.. and extend their description. Currently we don't have a builtin solution to import Bevy components from external tools. Custom properties can be used to transfer Bevy components.
Custom properties is commonly used feature and editors like Blender, Maya, Houdini, etc provide interface where custom properties can be specified.
Benefits of supporting Bevy components custom property:
- Users can specify Bevy components in external tool and after importing an asset have all initial components already in place.
- External tools like Blenvy/Skein that currently implement their own hacky Bevy components importers can migrate to Bevy solution and extend it.
- Maya/Houdini/Blender/Skein/Blenvy or any tools that allow to specify (Bevy) custom property becomes compatible. This allows to migrate from one tool to another without loosing specified Bevy components.
- Its much easier to implement external tool/plugin that allows specifying Bevy components.
- ...
What solution would you like?
We already support GLTF custom properties. What is needed is to extend GLTF importer and parse Bevy defined custom property responsible for transferring components. When importing GLTF asset and iterating over asset objects, materials, meshes..the importer should parse Bevy custom property if present and insert parsed component.
Custom property could look something like this:
"bevy_components { MarkerComponent1, ComponentWithFields1 {.. }, ComponentWithFields2 {.. }, ..}"
or we can use an array or something else.
Alternatively our own Bevy GLTF extension can be implemented instead of using custom properties. Or we can implement both.