Asset System FAQ¶
Common questions regarding the asset system, and how to use it on the technical side. This is not meant as artist level documentation, such questions should be answered in the user manual.
How to port my asset add-on to the Asset Browser/System?¶
One of the main goals of the asset project is to bring a standardized user and developer interface for a consistent asset browsing experience. There are numerous add-ons that implement their own asset management/browsing UI. Via the asset system, everybody should be able to use the native Asset Browser as the main place to access assets instead. This includes assets stored on the web, with on-demand downloading.
The asset system is still in early stages of development, and the Python
API is only in the initial planning phases. That means, although this is
a main goal of the overall project, we are by far not there yet. Blender
is currently only able to recognize data-blocks as assets stored on the
user's hard drive. This may already be enough for your use-case. Users
or an add-on can download .blend files containing assets, and the
blender-assets.cats.txt to some directory. This directory can then
be registered as an asset
There is also a way to display assets that are not stored on the hard
drive. For that an add-on can generate .blend files with dummy
data-block assets (with metadata and previews). After dragged into the
scene, the add-on can download the actual asset and replace the dummy
one with it. Many existing asset add-ons already worked this way, so it
should be easy to move towards the Asset Browser. This is a workaround
for until there is a proper asset system API for add-ons to use.
At this point, there is no proper Python API for the asset system yet, it is still in the planning. There are still ways to achieve commonly requested functionality through other parts of the Python API however.
How do I load custom previews?¶
There is no simple
asset.load_custom_preview(filepath) method or
similar available. But there are still two ways to do the job:
bpy.ops.ed.lib_id_load_custom_preview(): Attempts to load an image file from a
filepathproperty (opens a File Browser if not set) to the active ID set in context.
For example:Or to call the operator from a button: