[Addon] Asset IO: import/export Blender assets

Here it is… Asset IO. It’s the result of a rewrite of my previous node group exporter addon, now using a much better format, which I have called .blib (Blender library). The Blib standard is robust, compact, and extensible, and was designed to be able to hold any type of Blender asset. Despite the file standard’s (theoretical) ability to hold any type of asset, currently there is only a module to import/export Cycles assets (materials and node groups), but there will be further development in that regard.

Note: The Blib standard is very much in its early stages, and thus may suffer changes that break compatibility with previous versions (though assets should be importable by the version they were exported with, so you could import them back into Blender, and re-export them with the newer version). Also the Blib library code itself is very young, and might contain bugs, so use with caution (by that I mean, that for now, you might want to also keep the assets stored in a normal .blend file, not relying entirely on the .blib).

You can download the addon from the latest release page, and find the installation and usage info at the Asset IO homepage.

It is important to state that this addon is just a simple interface for the Blib library, which is the actual “brain” that does all the crunching at import/export, and is my main development focus. Thus this addon’s development will pretty much be limited to bug fixes, as I focus my efforts to the Blib library, and to making it support more asset types. But I am working to get other IO addons (library managers, and such) to use the Blib standard, to try and make .blib a sort of standardized format for Blender assets (until perhaps a native solution in the C/C++ code).

If you encounter any bugs while using Asset IO, you can contribute by reporting them. But make sure you are using the latest version of Asset IO (you can check the latest version on the latest release page), and Blender 2.76 or later. If you have a GitHub account, you can follow the instructions here, on how to report an issue to Asset IO,

Now, some more info about the Blib file standard, and what its current capabilities are:
A .blib file is a self-contained file, with all the required data for some asset, stored within itself, including images, texts, etc.
Here is a list of what is currently implemented for a .blib file to store, per currently supported asset type (I’ll keep this updated):

  • Cycles assets (materials or node groups):
  • The complete node tree of the asset
  • The material settings (Viewport display options, etc.)
  • Nested node groups
  • Images, sequences, clips…
  • Scripts/texts

My next priority is to extend the node group support to any kind of node tree, including compositor nodes, texture nodes… This shouldn’t be too difficult, as most of the node tree code is already there, but it will take some refactoring, as the node tree code is a bit tightly integrated to the Cycles asset code, and would have to be isolated from it a bit.

Anyway, I think that’s it for now, enjoy :slight_smile:

Thanks a lot @Luca_Rood,
A big work, this change of libs?
I wishes you good results for future of your idea.

@Spirou4D: Thanks.
Writing the new lib was a bit of work, yes.
Have you tried the addon? I would greatly appreciate if anyone could give any feedback :slight_smile:

Not yet but after my italia travel next week, I make tests with it, sure!
At soon.

Hi Lucas Rod, I posted in the node group export thread… but I’ll post here as well.

Is it possible for the export to filter the items available to export based on the object selected or workspace being used? This way if my current selection was a node group it would only present the options based on that or if in edit mode it would include mesh/object info.

@Spirou4D: Great, I’ll wait for your feedback. Also, have a nice time in Italy :slight_smile:

@comeinandburn: Thanks for your interest. First, I would like to state that this is not the same addon as the node group exporter, where you also posted your question, and that I am only maintaining this one, as the other has become obsolete.

Now onto your question: Blender has no concept of “active workspace”, as that is just the area where your cursor is currently located, so it is not possible to filter by workspace. As for filtering by selection, Blender also has no exclusive selection per asset type, so you could have a node group active, and a 3d object also active, at the same time, preventing me to use selection to filter asset type.

There is however some context that can be inferred for certain filtering functionalities, but that is beyond the scope of this addon, because as I stated in my initial post, this is just a simple addon that provides a basic interface, to allow people to actually use the Blib library, which is the part that is actually responsible for the export/import itself, and will be where I focus development. The Blib library has a simple API, for any Blender python developer to create an interface around it, and it is expected that other addons will adopt the library.

So for now you’ll have to wait for someone to create a more advanced interface, that uses the Blib standard. You can however, query other developers to support Blib in their IO addons, as the more people show interest in Blib, the higher the chance of others to adopt it in their addons.

Also, I would like to note, that currently Blib has no support for object/mesh assets, as your comment seems to imply that, though I might have misunderstood. :slight_smile:
All the supported assets are listed in my original post.

thanks for taking the time to explain this, and thanks for developing this standard.