Asset Browser

This section describes the Asset Browser. It was introduced in Blender 3.0, and will be improved and expanded over multiple subsequent releases.

The following blog posts were written during the design & development of the asset browser. They are linked here for historical reasons, and to give some more context to the current design.

What is an Asset?

An asset is a data-block with meaning.
Ton Roosendaal

A .blend file is a database with multiple data-blocks: objects, textures, materials, etc. When planning to re-use or share these, the data needs a meaning. What is this? What is this for? Assets are curated data-blocks that are meant for reuse.

The general term "asset" often also refers to other file types, such as images, sounds, video files, etc. These are currently not supported as asset in Blender. For more info, see Future Development.

What is an Asset Library?

An Asset Library is a directory on your harddisk that is registered in the Preferences as an asset library. Registering it means that you give the library a name (like "Sprite Fright") and the location on disk (like /home/sybren/projects/sprite-fright/assets).

TODO: add image of preferences, so that it's clear what things look like and where the settings are.

Once registered, you can select the asset library in the asset browser. All the .blend files in the asset library will be scanned for assets, and all those assets will be shown in the asset browser.

Note that this scanning process may take a while, depending on the number of blend files and the number of assets contained within them. Blender 3.1 will add indexing of these assets, greatly improving the speed at which an asset library can be reopened. See T91406 for more info.

The .blend files can be directly in the asset library's top-level directory, or in any sub-directory. The on-disk organisation of asset libraries is all up to you. Regardless of which .blend file contains the assets, each asset can be assigned a catalog. For more info about how to organise your assets this way, see Asset Catalogs.

Asset Types

Assets can be broadly divided into two types: primitive and preset assets. Which is which depends on the data-block type.

Primitive assets are data-blocks that are either linked or appended to the current file. Examples are Objects, Materials, and Worlds. These can be dragged from the asset browser into the scene (Objects and Worlds), or onto existing objects (Materials).

Preset assets are data-blocks that are loaded and then applied to something. An example is a pose asset. When applying the pose, the data-block is loaded from its blend file, and then the pose is applied to the active Armature.

In the future, the asset type definition will be expanded; see Future Development for more info.

The Current File Asset Library

To help with the management of assets in the current blend file, you can set the asset browser to show the Current File asset library. This always shows the assets in the current file, even when the current file is not saved in an asset library. This also makes it possible to create assets and use them in the same file, for small single-file projects.

When the current .blend file is part of an asset library, you can also see its assets in that library, of course. The assets that are in the current file are marked with an icon; only those are editable.

Design Limitations

Blender is not allowed to write to other .blend files than the one you have currently open. This means that to edit an asset, you have to open its blend file. Fortunately this is only a single click away, both in the left-hand side-panel of the asset browser and in the asset context menu.

This also means that Blender does not copy assets into the asset library for you. You are responsible for placing the blend file with the asset in an asset library directory, and marking the asset as such. See Asset Pushing for more on this topic.

Life Cycle of an Asset

This section describes how to create, edit, share, and use assets.

Creating an Asset

To create an asset, first create the thing you want to turn into an asset. That is, create the Object, Material, World, or pose your character. The next step depends on the type of asset (see Asset Types above).

For primitive assets, use the Mark as Asset operator. It can be found in the data-block selector, in the outliner, and for Objects in the 3D Viewport Object menu. When using Mark as Asset, an automatic preview is generated. If you want, you can also change replace this with an image of your own choosing; use the folder button next to the preview image in the right-hand side-panel of the asset browser.

For preset assets, there will be a dedicated button for the different asset types. Currently poses are the only preset assets; use the Create Pose Asset button in the Action editor. This will copy the pose of the selected bones into a new Action, mark it as asset, and put it into the currently active asset catalog if there is an asset browser open.

After creating the asset, make sure the current .blend file is saved in your asset library. Blender does not copy the asset into the asset library for you.

Editing Assets

Since assets are regular data-blocks, with just a little bit of meta-data attached, they can be opened like any other Blender data. Just open the file and edit the Object, Material, World, etc.

For poses assets, this is also possible. With the pose library file open, just click the Assign Action button to assign the pose action to the currently selected armature. Then you can use all of the animation tooling to edit the pose, remove or add keys, etc.

Sharing Assets

Because assets are simply stored in .blend files, they can be shared by sharing their .blend file. Be sure to include the Asset Catalog Definition File as well.

There is currently no functionality to extract selected assets and save them (together with their catalog definitions) into a different .blend file. This could be implemented as an add-on.

Using Assets

As a general rule, an asset can be used by dragging it to the desired location. Objects and Worlds can be dragged from the asset browser into the scene, Materials can be dragged onto the object that should use them. The use of pose assets is described in Using The Pose Library.

There are several things that can happen when an asset is used, depending on the Import Type configuration of the asset browser:

Link
Same as File > Link
The asset will be linked to the current blend file, and thus be read-only. Subsequent changes to the asset file will be reflected in all files that link it in.
Append
Same as File > Append
All of the asset and all its dependencies will be appended to the current file. Dragging a material into the scene three times will result in three independent copies. Dragging an object into the scene three times will also result in three independent copies.
"Dependencies" in this case means everything the asset refers to. For an object, this could be its mesh and materials, but also other objects used by modifiers, constraints, or drivers.
Since the file now has its own copy of the asset, subsequent changes to the asset file will not be reflected in the file it's appended to.
Append (Reuse Data)
Specific to the asset browser.
The first time an asset is used, it will be appended, including its dependencies, just like described above. However, Blender will keep track of where it came from, and the next time the asset is used, as much data as possible will be reused. Dragging a material into the scene three times will only load it once, and just assign the same material three times. Dragging an object into the scene three times will create three copies of the object, but all copies will share their mesh data, materials, etc.
Since the file now has its own copy of the asset, subsequent changes to the asset file will not be reflected in the file it's appended to.

Note that all regular Blender operations are available after the asset has been added to the current file. For example, you could choose to link an Object to the scene; this will also link its Mesh and its Materials. Subsequently you can make the Object itself local (Object > Relations > Make Local > Selected Objects), while keeping the Mesh and Materials linked to the asset files. This will result in a local, and thus editable, Object, and keep the Mesh and Materials automatically up to date with any changes in the asset library.

Future Development

This section describes interesting avenues for further development. Even though it is not an exhaustive list, it might help to better understand the current functionality of Blender's asset browser.

Non-data-block Assets

Non-blender assets, such as image or audio files, will likely be supported in a future version. For such files, asset metadata is then stored in XMP sidecar files, similar to what other software is also doing. Importers (USD, glTF, FBX, …) could add support for their file types as assets this way too. Furthermore, it should become possible to enrich an asset with a Python script, which can then provide code to be run when the asset is used.

Cross-Blendfile Editing

As described above, Blender itself is not allowed to write to other .blend files than the currently open one. This rule helps to limit complexities; for example, it is hard to reliably implement an undo-system when manipulating other files. The rule does get in the way of mass-updating assets when they are stored in various .blend files.

Since there is already tooling that can manipulate .blend files outside of Blender itself (see Blender Asset Tracer), it's possible to also create an external tool for doing such cross-blendfile edits. Such a tool might even be implemented via Blender's application templates system, or as an add-on; the rule above applies to Blender itself, not to its add-ons.

Asset Pushing

Asset pushing is a way of getting assets into the asset library, where you’re working on some file and want to copy the asset from that file into the library. This is a concept that appears deceptively simple. In certain cases it is actually simple, but often enough it gets quite complex. For example, when you want to push an object into an external asset library, should that also copy the materials? What about the texture images referenced by those materials? What about objects referenced by custom properties, constraints, or modifiers? And in which files would they have to go? Do they all go into one big assets.blend, individual Blend files, or into a directory per asset type? Blender should not be making such decisions for you.

For specific cases, these things are all solvable. The Pose Library has been created as enabled-by-default add-on for this reason. Studios with specific needs can disable the add-on and implement their own functionality; the building blocks are all in Blender's core, and thus do not need to be copied for this. Furthermore, add-ons can write to other blend files, so they could make the decisions for users.

Asset pushing is desirable. Because of the questions above, it is unknown how to implement this well, in a way that still allows artists control over their assets.