Asset Manager Proposal

The Blender Asset Manager has been in the “idea” stage for a long time. I recently asked Ton if there was any updates, and he suggested I create a design proposal.

I made this video for him, but as he’s on holiday he suggested I post it here to get the discussion going.

Watch the full proposal video

So let’s hear it: What do you like and what do you hate? :slight_smile:

18 Likes

This is very similar to the Assets UI outline from about a year ago: https://developer.blender.org/T54642

I think all that stuff is fairly obvious. But, currently, there is no real consensus on the more technical design issues, ie:

  • What is an asset? Is it an ID block?
  • How is an asset stored? As a blend file per asset or in an assets blend file?
  • should browsing assets be hierarchical or like a database?
  • where is information about the asset stored? On the asset ID itself as tags, or separated?
  • what you’ve outlined here is what Ton sometimes confusingly calls ‘presets’. These are starting points for creating a scene. But another important part of the asset system is linking, if you work in a production. That will have to work quite differently I think, because storage and management must work differently.

Personally, I think browsing assets should work as much as possible like browsing a database. Blender is already database-like, and it’s a nice way to be able to group items without relying on a more file-browser like hierarchy.

I also think that, at least initially, assets could simply be ID’s. It fits with Blender’s overall design, even though there are issues with things like pose libraries (a pose is not an ID really, but could be stored in one). Poses are a special case anyway, because they are typically rig-dependent. So they are not really all that useful as general assets anyway.

Storage in the hard-disk based asset manager (Amber) could perhaps just work with a single assets.blend, although it has the downside that it’s not possible to add assets from the OS file browser then. This is a slightly tricky issue.

10 Likes

I think Blenderkit addon (comes within Blender) has implemented something similar quite nicely. I don’t know much about technical ends but a polished version of this officially being developed would be great. Here is a demonstration:


By the way isn’t this proposal better suited at rightclickselect as stated here and here?

10 Likes

The Async asset loading is a great thing in this video. At least an indication of how long it takes before the assets is fully loaded without a complete software freeze.

4 Likes

I think it’s important that 3rd party devs can easily build bridge add-ons where you can search online databases like hdrihaven or sketchfab inside blender.

There should also be metadata like licenses, names, authors and descriptions stored on the assets themselves.

Having one assets.blend is a bad idea - for the reasons that Andrew outlined, but also because that file would grow massively over time if every single asset is saved in it. It would also require the user to back it up multiple times, because if something happens to that one file every thing is lost.

Having some kind of catalogue file isn’t a good idea either in my opinion.

Users should be able to just copy their file into their directory without having to convert it to any format like .blend or so first - maybe that happens automatically once you’re importing them for the first time.

4 Likes

That has already been planned from the beginning. It’s why there is the concept of an ‘Asset Engine’, which can work in a multitude of ways and pull in from multiple sources.

3 Likes

Suggestion:
it is better to handle materials and objects separately,
For importing materials: Blender 2.8 already have functionality to drag and drop images from folder in Shading tab. Let’s add shade/material import functionality from blend files. (when user clicks on blend file, it opens list materials with thumbnail)
For importing objects/assets: Lets add a functionality in Modeling tab. Features:
*right click and save functionality for objects (without shades)
*when user clicks of blend file, list out objects with thumbnail(without material)
*separate tab for listing objects.
I’m a blender beginner, I really don’t know whether these things are possible :slight_smile:

I think this is a good proposal, but it feels more like a Filtered Library than a full Asset Manager.
How does it works when we have a team working on it? I mean, multiple pcs, network, multiple platforms, different working folders path, local files, online files, etc.
Or working on different projects? Should projects share the same assets library? Can we have more than one library and specific libraries for each project to be more organized?
Should we follow the way other softwares does it, specifying a project folder? (Maya, Unity, Unreal, etc.)
If we lost link, can we manage to fix it? Or easily edit the linked collection separately with something like double click/ edit button in property bar? And how about orfans and hidden data we lost track?
An example: for me, being possible to reuse the same rig in 10 characters and being able to do fixes in the original so it will propagate to all is a way of asset management. It can be call nested prefab or something else already planned. Or even poses. Poses was a great example from @billrey as well.
To have a better way to see and organize materials, poses, textures, meshes, etc. would be nice as well. Being able to add assets repositories, like blendswap, Polygon, BlenderMarket, Blender Cloud config and assets would be a way to add a new layer on the management. As local assets on Unity plus Unity Asset Store, for example. BTW, Unity has a good way to manage its assets, even creating packages to ealisy download, import ou export. It is not perfect, but pretty organized.

I may wrote things that probably isn’t asset management area alone, but I guess Asset Manager is not something apart, but integrated with how Outliner and all other Blender areas works. And just writing all this questions I can see how difficult and big it is.

4 Likes

in your video, when choosing a custom thumbnail, if we can choose a thumbnail directly from the RenderResult slots it could be cool, otherwise we would waste extra click to save as image on a specific place in the browser, find it, and then delete it because you dont need ti anyway.

also what about drag and drop hdri inside of the scene ? drag and dropping matcaps ? drag and dropping brushes ? drag and dropping textures ? drag and dropping nodegroups ?

2 Likes

I got to agree with Mangojambo in many points. My 2 cents from a vfx/bigger production point of view -

  • Project/shot based filtering would be pretty useful. Let’s say for a project I have 30 IBLs and 200 light rigs, I probably won’t use them anywhere else and it’d be a pain to browse through all of them.
  • I think it’d be handy to have tags as well, to do project unrelated searches.
  • Version numbers would be quite handy, sometimes clients like to roll back changes or I could have different generic assets for different type of projects which I wouldn’t necessarily wan’t to rename. (i.e. a generic human topology which I use across show’s)
  • The ability to add notes/descriptions would also be useful (i.e baked whatever colorspace into these textures because this and that, model is split to use with xy rig, etc.)

Generally I think there’s a blurred line between asset browsers and more complicated project management systems, but Weta’s Athena, ILM’s asset browser in Zeno would be good examples, or maybe even Prizm.

Depending on what the goal is of course.

1 Like

My wish for an asset manager is in first place to show all materials which are in a .blend file. As it is by now, its very uncomfortable to merge different material duplicates. When I append a model from another .blend which has the same material, Blender make a duplicate. To get rid of them, I have to manually replace it. It would be really handy if a just could Alt+drag and drop a material on its duplicate and all the materials get merged. I saw this behavior in c4d and i think it’s very handy.

Also renaming and editing materials would be great from one central (asset) shelf.

I think that appending models or textures is not that hard as it is right now.

My 2 cents. Cheers.

2 Likes

I really like the idea of an asset manager built into Blender. I would look for the following features:

  1. Works (create, read, update, delete) seamlessly when the asset file(s) are on a server and shared by multiple clients
  2. Versioning each asset (custom or using an existing VCS like git)
  3. Ability to modify assets within a project and choose whether those modifications are propagated to the asset library or remain local
  4. Moderately fast import of models into the scene but, for materials, drag and drop (on to an object) would be extremely cool
  5. Some ability to share assets with others, with permission controls but without having to manually share the asset file(s)
  6. I would very much prefer (the option of) one file per asset because a) less chance of corruption b) decentralization of file lookups c) easier sharing of specific things
  7. Many different types of assets. Here are some examples:
  • Meshes
  • Materials
  • Textures
  • HDR backgrounds that automatically get put in the world shader nodes when selected
  • Smoke caches
  • Fonts
  • IES lights
  • OSL shaders
  • Python scripts
  • Text blocks
  • Modifier configurations or entire stacks
  1. A system to avoid duplicates
  2. Getting this feature done as soon as possible!!!
3 Likes

I never saw this till now, and in many ways I actually prefer it to mine :stuck_out_tongue: I like being able to add custom tags, and link to different repositories.

What happened to this proposal? Any reason it didn’t proceed?

I asked Ton this very question, and he said that we could indeed make each asset it’s own .blend. This sounds like it would be necessary anyway, since a single .blend containing everything would get insanely large.

I’m not familiar with IDs. Would this be storing the specific data “type” (material, object, collection etc.)?

That’s awesome! I researched existing blender asset plugins, but somehow I missed this. The concept of displaying a placeholder while the download finishes is perfect.

This is where I need the community’s input, because I have little experience with blend file collaboration.

What functionality do teams want? What about a project repository whereby an asset could be saved and live-linked to other blends?

Can you link to a video that shows this? Coz I’m not understanding from your description alone.

" I asked Ton this very question, and he said that we could indeed make each asset it’s own .blend. This sounds like it would be necessary anyway, since a single .blend containing everything would get insanely large."

I would suggest both, being able to tag multiple objects in a single blend as assets, and multiple blend files as well. We have about 20-30 asset files, with each having 100s of files in each. If this was individual blend files, that would be around 5000 individual blend files. Hard to keep a track of once it gets quite nested.

2 Likes

Should we perhaps reach out to larger studios to hear their input? For example, the studio that made Next Gen.

3 Likes

There you go:

Merge

1 Like

It was a target for 2.80. Exactly why progress halted is also a mystery to me, but at least partially because there was never a consensus on the underlying technical design in terms of how the storage system should work.

Yes, that has the advantage that you could easily manage your assets from the file system. But, there are potential issues with where the database of assets is stored and cached - I’m not sure.

Yes. Blender has different data-types, such as meshes, textures, materials, curves, Collections, etc. The simplest thing, at lease initially, is if assets have to fall into one of these buckets. But since a Collection can contain all of these things, it should be fairly flexible.

Yes. Project/linking requires a somewhat different approach. Internally, this will likely be handled by a different ‘asset engine’ which uses a project-oriented approach.

The idea is that all these various asset engines can use the same overall UI, but can customize it in several ways.

Thanks for this Bill. I’ll forward this to Ton to hear if he has any suggestions for getting this project started.

Asset manager should not be restricted to “static meshes”,textures…etc that seems limited ,everything can be an asset, from lighting setups, skeleton meshes, HDRI,anim clips, hair, Particles and many more, i think it should encompass as much as possible like game engines do, maybe something like unreal engine’s content browser and be expandable for other discplines like VFX,Medical Research to add their own type of Assets.
here an example from another 3d software.

6 Likes

All the examples of assets you gave can be covered by collections, objects and images.

2 Likes