Page MenuHome

Asset Manager “Basics”
Confirmed, HighPublicTO DO

Authored By
Dalai Felinto (dfelinto)
Jan 24 2020, 5:16 PM
Tokens
"Love" token, awarded by cabaleirog."Love" token, awarded by DimitriBastos."Love" token, awarded by penguinburger1."Love" token, awarded by Edmis."Love" token, awarded by Raimund58."Love" token, awarded by gritche."Love" token, awarded by benkl."Love" token, awarded by Jaydead."Pterodactyl" token, awarded by duarteframos."Love" token, awarded by softyoda."Love" token, awarded by Misaelcornell."Love" token, awarded by the_avg_guy."Love" token, awarded by marcuspollio."Like" token, awarded by Kdaf."Love" token, awarded by WillyWonka."Love" token, awarded by WeezY."Love" token, awarded by mindinsomnia."Love" token, awarded by ogierm."Burninate" token, awarded by radi0n."100" token, awarded by Brandon777."Pterodactyl" token, awarded by filibis."Love" token, awarded by arcdipesh."Love" token, awarded by Anubis."Love" token, awarded by Okavango."Love" token, awarded by Kickflipkid687."Love" token, awarded by gilberto_rodrigues."100" token, awarded by MARodionov."Love" token, awarded by Lynchon."Love" token, awarded by richeyrose."Love" token, awarded by gusdleon."100" token, awarded by karmaral."Love" token, awarded by ofuscado."Like" token, awarded by julperado."Pterodactyl" token, awarded by Simto1."Love" token, awarded by silex."Love" token, awarded by Juangra_Membata."Love" token, awarded by KtRN."Burninate" token, awarded by Dir-Surya."Burninate" token, awarded by Altha."Like" token, awarded by nfguler."Love" token, awarded by Schamph."Love" token, awarded by stormrider."Love" token, awarded by ILJI."Love" token, awarded by Fureloka."Burninate" token, awarded by cgeugene."Love" token, awarded by AonoZan."Love" token, awarded by drx."Baby Tequila" token, awarded by lordodin."Love" token, awarded by harvester."Burninate" token, awarded by Taros."Dat Boi" token, awarded by shader."Love" token, awarded by samytichadou."Love" token, awarded by kpavicic."Love" token, awarded by viadvena."Love" token, awarded by kynu."Like" token, awarded by klutz."Love" token, awarded by pablovazquez."Love" token, awarded by filedescriptor."Love" token, awarded by kvick."Love" token, awarded by pierogo."Love" token, awarded by Scio."Love" token, awarded by printerkiller."Like" token, awarded by higgsas."Love" token, awarded by Alumx."Love" token, awarded by RyanJEC."Burninate" token, awarded by sopranoo."Love" token, awarded by Peine_Perdue."Love" token, awarded by merwin."Love" token, awarded by jc4d."Love" token, awarded by greyoak."Love" token, awarded by RodDavis."Burninate" token, awarded by aliasguru."Love" token, awarded by mistajuliax."Love" token, awarded by Eric_Medlen."Love" token, awarded by juantxo."Hungry Hippo" token, awarded by lopoIsaac."Like" token, awarded by Constantina32."Burninate" token, awarded by Goldwaters."Love" token, awarded by brilliant_ape."100" token, awarded by anonym."Love" token, awarded by Shimoon."Love" token, awarded by einsteinchen."Like" token, awarded by Maged_afra."Love" token, awarded by Bit."Love" token, awarded by aditiapratama."Love" token, awarded by nunoconceicao."Love" token, awarded by xdanic."Love" token, awarded by ReinhardK."Like" token, awarded by Fracture128."Love" token, awarded by symstract."Like" token, awarded by Ztreem."Like" token, awarded by Frozen_Death_Knight."Love" token, awarded by CobraA."Like" token, awarded by MetinSeven."Love" token, awarded by andruxa696."Love" token, awarded by Alrob."Love" token, awarded by Tetone."Love" token, awarded by xrg."Burninate" token, awarded by billreynish.

Description

The description was moved to the #asset_browser project description (click the tag to see it), the Milestone 1 description to #asset_browser_milestone_1.


Milestone ?: Online Repository

Here we want to be able to append assets from an online repository like the Blender Cloud, BlenderKit and similar.

There would be a Python API to register custom asset repositories as part of add-ons. The main operations would be to provide a list of assets and metadata, provide .blend with an asset to append/link into the scene, and functions to add/remove/update an asset.

Milestone ?: Usability

Once the asset manager is working for the basics and the UI can do its job, we can start to make things nice. This includes better handling of thumbnails, re-configuring the ID browser to allow for asset browsing, a nice UI widget for managing tags and tag-based filtering.

A key part of making the UX nice, is to make it effortless to drag assets into the scene. When dragging in objects & meshes, they should be able to snap to surfaces. When dragging in materials, the underlying target objects should highlight on rollover. You should be able to add multiple assets at a time.

Milestone ?: Collection Variations

Not strictly part of the asset manager since this would be a core feature of Blender also usable without the asset manager. We would like to support variations for all datablock types, but the first step could be collections (it's effectively like automatically toggling visibility on subcollections to show only one).

Once this is in the place, the asset manager will need to be modified to understand variations.

Milestone ?: Project Repositories

Up to this point the asset manager will handle only the use case of appending files from a local or online repository. The next step would be making it works also for projects.

  • The root project directory would contain a .blender_project file indicating that it is a project (similar to e.g. .git)
  • When opening a .blend file within the project folder, Blender will automatically know which project it is part of
  • Folder structure, file names and file saving are left to the user. The asset browser will not add or remove .blend files in the project. That's all done using File > Save and file browsers as usual.
  • The assert browser will have a "Project" repository that can be chosen, which will show all assets within the project
  • The user will have to mark relevant datablocks as assets in each .blend file in the project so it shows up in the asset browser.
  • Assets can be linked between files within the same project. This is different from other repositories, where only append is possible. Linking between projects or to other repositories should not be possible, a project must be self-contained and not link to any .blend file outside of it.
  • The project folder would be indexed exactly like other asset folders.

The idea here is that we don't want to make many assumptions about how users might structure their project. It should be possible to simply add or remove files, reorganize project directories, and the asset browser should keep working. It will merely provide a view on the existing project structure, and functions to create links to other assets in the project. It will not introduce an alternative linking system as an earlier iteration of the asset manager design did.

This system does not preclude a studio from making an add-on that takes more control over file saving, version control, partial repository checkouts and so on. Such an add-on would likely need to integrate in various places in the Blender user interface, one of which can be the asset browser. For example it might include a custom asset repository to browse assets that are not on the artist's computer, and right before the user links an asset into the scene, download the corresponding .blend file.

But for most projects that are not e.g. feature films, the built-in project repository and automatic indexing system should already be quite powerful.


Further links:

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

What would be really useful to me as someone currently having to knock together an asset manager as part of an addon to use until this is done:

  1. a firm decision about what meta data will be stored per asset.
  2. knowing how this will be stored (presumably on each data block)
  3. a way of pulling just this metadata in to the current .blend file without linking in the actual asset. Currently as far as I'm aware the only thing we can pull in is the asset name.

How assets themselves are stored (1 per .blend, multiple assets per .blend, file structure etc.), UI etc. is all stuff that is secondary. But the above three things are really crucial and mean that if you want to do an asset manager currently you either need to store asset metadata separately as i.e. a JSON file and keep it in sync with your assets, or link all your assets in to the file which is impractical. I really hope this actually goes somewhere this time and doesn't get booted into the long grass yet again.

What would be really useful to me as someone currently having to knock together an asset manager as part of an addon to use until this is done:

  1. a firm decision about what meta data will be stored per asset.

The meta-data will be configurable. Current plan is to make them regular custom properties.
Different asset-engines have different needs (e.g. local asset manager vs. Blender Cloud one vs feature film studio X one). They should have full control over the meta-data.
There are probably some defaults that we can have builtin support for (preview image, description, tags, author, etc).

  1. knowing how this will be stored (presumably on each data block)

I might actually add a new "asset" data-block type that can reference the data-block, I see some technical benefits for this. But as long as you can get the list of assets, their meta-data and the corresponding data-block reliably and efficiently, the exact way this is implemented is an implementation detail in my mind.

The actual assets will be stored in an external data-base, which may just be a folder with .blend files and a caching system (e.g. JSON file). This is outlined in above's description and in this blog post.
Other asset-engines may want a different data-base design, e.g. we know some feature film studios using SQL data-bases. This should eventually be supported.

  1. a way of pulling just this metadata in to the current .blend file without linking in the actual asset. Currently as far as I'm aware the only thing we can pull in is the asset name.

Like said above, plan is to have some way to cache meta-data for the asset data-base. The Asset Manager will work with that mostly.

Julian Eisel (Severin) triaged this task as High priority.Jul 2 2020, 5:54 PM

@Julian Eisel (Severin)
Thankyou. That gives me some confidence that my hacky placeholder will be easily replaceable by your proper asset manager when the time comes and I won't have programmed myself into a corner!

Just a note, I'm currently experimenting with some technical design approaches that need to be evaluated still. I'm also writing a document for these that I'd like to present and discuss soon.

Julian Eisel (Severin) updated the task description. (Show Details)

Personally I would like to see this get merged into master as soon as its any what useable. The sooner we have anything that saves us from having to append blend files manually the better!

Gotta give credits on the design work done so far <3 Looks clean and powerful.

Julian Eisel (Severin) added a project: Restricted Project.Oct 20 2020, 5:13 PM
Kdaf (Kdaf) added a subscriber: Kdaf (Kdaf).
Julian Eisel (Severin) moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Oct 22 2020, 7:09 PM