Superpowered Asset Browser
(EDIT: Added images. May add more! EDIT 2: There has been some great feedback regarding a few sections of this proposal. Internally debating whether to revise this post or create a "Revision Reply" without all the conversation? Either way, its too late/early to consider that right now 🤣 )
It may just be my imagination but the Asset Browser, in its current state, is far more effort than its really worth. Yes, I realise it is in its "first" iteration but it missing some pretty basic functionality that really ought to have been there from the beginning:
Create new libraries without having to manually create .blend files and mess with preferences.
At the moment having to manually create a .blend file then faff with preferences is more than a little dumb. There should be a big [+] button next to, or about, the drop-down where you can select a user library. You get prompted to give your new library a name and Blender takes care of creating the actual .blend file and storing it (in a location specified in preferences).
This could have its own Asset Browser menu item: Library > New
Adding libraries without having mess with preferences.
Similar to above, there should be a [folder] button next to, or about, the [+] button which does exactly what you'd imagine: Lets you select a pre-prepared .blend file to add as an asset library. No messing about in preferences.
This could have its own Asset Browser menu item: Library > Add
Removing libraries without having mess with preferences.
My own preference is that this option would only be accessible from within the Asset Browser menu structure (Library > Remove) to prevent accidental clicks. However, since it would only remove the library from the library listing, and never delete the underlying .blend file, I guess having its own icon wouldn't be too bad (an accidentally removed library could easily be re-added. See above).
Adding libraries should come in with their own catalogue structure(s).
If I have gone to the trouble of curating a .blend file of materials, marked them all as assets, and carefully sorted them into their appropriate sensibly ordered catalogues (while under "Current File") then that catalogue structure should be reflected in the Asset Browser whenever I (or anyone I've shared the library with) add that library to the asset browser.
Of course, users should still be able, in most circumstances, to change a libraries catalogue structure (and the asset sorting within), to their own taste, but I would suggest one caveat: Asset pack creators should be able to "soft lock" a catalogue structure by being able to set a flag, when manually editing a .blend file intended to be used as an asset library, which would prevent changes to the catalogue structure for that library when viewed in the Asset Library from another project.
Naturally a user would still be able to directly open that .blend file, unlock the catalogue structure, and save the file again, if they really wanted to do that but at least it would give asset pack creators a fighting chance of consistent presentation if they so wish.
Current file catalogue
unlocked:
Viewed as library - User
able
to edit catalogue:
Current file catalogue
locked:
Viewed as library - User
unable
to edit catalogue:
All catalogues remain
independent
of each other:
EDIT: It has just occurred to me that this would necessitate a change in where Blender stores the catalogue definition files. If the creator of the .blend file pre-prepares a catalogue for a library (while in "Current File") then the library will need to be stored within the .blend file. If the creator chooses to leave the catalogue unlocked (or the user manually opens the .blend file and unlocks it themselves) then any subsequent changes made to the catalogue should be saved to a separate file in the same directory as the library .blend file and use the same name as the .blend file (but with a different extension, of course).
Example .blend file name: My_Procedural_Materials.blend
Example catalogue file name: My_Procedural_Materials.assets.cats.txt
Soft Lock libraries
Similar to the previous suggestion, asset pack creators should be able to set a flag (while in "Current File") which prevents a user from adding to or removing assets from that library when it is viewed as a library in the Asset Browser (for the same reasons as above)
Again, determined users can directly open the libraries .blend file, unlock the library and save it again if they so wish.
Screenshot: Imagine the ones above but with an additional "Lock Library" checkbox :)
Adding assets to specific libraries without diving into individual .blend files
I'm in my current project, have created a procedural material that I really like and know I will want to use again in the future. So I want to add it to my "Procedural" material asset library - right now, so I maybe don't forget to do it later - but I have to:
- Save my current project.
- Open my "Procedural" asset .blend file.
- Append the material from the project I was working on.
- Mark that material as an asset.
- Save my "Procedural" asset .blend file.
- Go back to the original project I was working on.
What I should be able to do is:
- Right click on material.
- "Add asset to..." > "Procedural"
And BOOM! Its right there in my "Procedural" asset library. It won't be sorted into an appropriate location in that libraries catalogue but since it will be sat in that libraries (automatic) "unassigned" category I can easily switch to the Asset Browser then drag it to wherever I think it should live in that libraries catalogue.
Drag and drop asset management
It should be possible, with two Asset Browser viewport instances, to drag and drop an asset from one library to another and Blender automatically takes care of moving the actual asset from the source .blend library (file) to the destination .blend library (file).
Conclusion
None of this is revolutionary, its absolute basic functionality that should have been, as I said previously, there from the beginning. At the moment the Asset Browsers implementation seems to be more about "Yes, we have an asset browser" rather than "We have the easiest to use, most intuitive, Asset Browser" which, sadly, seems indicative of Blender Foundations rush to get a new version out ever other nanosecond (but that is an altogether different conversation).
And yes, I realise much of this would require Blender to manage data within other .blend files in the background - invisibly to the user - but since nothing from those files is actually being rendered or compiled moving data in or out of them shouldn't be too resource intensive (unless the .blend file(s) used in the asset library have ballooned into the multi-Gb territory. But .blend files used for assets shouldn't really get that big... he says, laughing nervously! lol)
Thank you for coming to my Ted... oh, wait! 🤣
5 Comments
developer.blender.org/project/board/132/
developer.blender.org/project/board/130/
developer.blender.org/T91138
You should probably participate in the activities instead of posting on right-click-select.
devtalk.blender.org/t/collection-assets-feedback/23789
The real super power would be searching through all libraries at the same time.
A library is a folder containing many .blend files, not just a single .blend file.
Catalog structure is stored in a text file in the library folder . This allows multiple .blend files to share/use/edit the structure.
To share the catalog structure you have to share the text file from the library folder . So, just share the whole library folder.
Marking the
blender_assets.cats.txtfile as read only should probably accomplish the goal of locking the catalog structure. Your proposed UI around that looks good enough to me. Click the Lock Catalog checkbox to mark theblender_assets.cats.txtas read-only on disk.I feel like your thought process is too focused on a single .blend file being a Library . 20 high quality beds and couches in a single .blend file results in 'file too large for destination file system' error for poor people like me stuck with old external storage drives formatted as fat32.
This is probably going to require blender running a separate process in the background because what I've been told is they won't let Blender modify other blend files without actually opening them so it will have to be another process doing that job. So, it's planned but who knows when they'll get around to it.
You don't have to close it though.
You should be able to copy and paste the nodes (this doesn't always work for some reason) or copy and paste an object with the material, skipping the append menu steps.
... are you aware of how many people are actually writing code for the asset browser and how many other areas of blender they are also writing important code for?
I have 600 bajillion complaints about Blender but I know what it's like to be the sole person working on a big part of a big project so as long as I'm too cheap to donate money to Blender I just keep my complaints limited to the bugs and I try to keep my requests limited to what I feel is reasonable for such a small dev team. Most importantly I try to have patience because if I was really impatient about some stuff I'd wind up throwing money at them.
Yes, we have experimental adaptive subdivision and displacement rather than intuitive adaptive subdivision. Does anyone know how many years it has been?
It's a development strategy that has worked wonders for thousands of other software. Looking at the release history though, things don't seem to be that much more frequent than in the past. For example starting with April 2011 it goes April, June, July, August, October, December, February, April, October, December, February, May, July, October 2013. That feels as frequent if not more frequent than the current release schedule. If you don't like it, you can stick with LTS versions.
Yes, but that creates the problem of not being able to address an individual file within that folder, which in turn creates problems for implementing sending assets directly to a specific file and drag & drop.
Imagine I have a folder with three .blend files; one containing materials I have made (My_Materials.blend) and two containing materials created by other people (Materials_by_X.blend and Materials_by_Y.blend) and, since they're all in one folder, they all create one giant library. As it stands everything is "Unassigned" and I have to go to the trouble of going through it and sorting everything into catalogues. Depending on how many materials are in each .blend file that could potentially be a nightmare.
However, having thought about this, if treating each individual .blend file as its own library is not preferred, I guess a compromise could be that each .blend file within a folder would have its own (automatically created) 2nd level entry within that libraries catalogue structure...
In the above example the top level "All" does exactly what it does now. Inside that each .blend file gets its own automatically created 2nd-level entry. Each 2nd-level automatically gets its own "All" and "Unassigned" category too.
With specific regard for each 2nd-level entry:
"My Materials" - I pre-prepared the catalogue structure while in "Current File" (which was saved in that .blend file) which gets automatically used by the asset browser. Any subsequent changes made to the catalogue structure specific to "My Materials" (while viewing as a library) gets saved to an external cat file adjacent to that specific source .blend file (
my_materials.asset.cat.txt). In all instances Blender would look for an external cat file for each .blend first before falling back to the pre-prepared version within the .blend file."Materials by X" - The creator didn't specify a catalogue structure and didn't lock the catalogue (while in "Current File"). User is free to edit the catalogue for that entry and, same as before, those changes are saved to an adjacent cat file, etc, etc.
"Materials by Y" - The creator pre-prepared a catalogue structure however they also "soft locked" the .blend file to preserve the presentation of their "asset pack". Of course, as previously, stated users should still be free to directly open that .blend file and unlock the catalogue if they so wish.
Additionally, when it comes to permanently "pushing" changes to an entries catalogue structure the adjacent .asset.cat.txt files (for catalogue unlocked entries) will be moved in to each relevant .blend file and the adjacent cat file deleted.
EDIT: We're going to have to come up with new terminology for that 2nd-level entry for each .blend file. Perhaps that could be the "Catalog" and all its sub entries for each Catalog would be "Categories"??
In light of this revised method to accommodate multiple .blend files in a single folder, and instead have them individually accessible in the catalogue structure here is a revised proposal for the "Add Asset to..." menu pop-up menu item...
But I don't want to share the whole library folder. I want to share one .blend file from within that folder and I don't want to share the cat file for that folder which may have entries not relevant to the single .blend file I actually want to share. Whether pre-prepared, or subsequently pushed into the .blend file, it should only be necessary, for the sake of simplicity and user experience, to share one file with the assets and catalogue for those specific assets inside.
Are OS level read-only flags transferable across different OS and file-systems? As I understand it file read-only flags are handled by the OS/file-system file table (or a separate file to hold that data) and not stored as part of a file itself.
Besides which I personally can't see the problem of storing the "Lock Catalog" flag in the .blend file itself since it already carries a lot of extra non-3D related data in the .blend file anyway (like workspace tabs, viewport arrangements, open sidebars, etc).
I did consider that (as stated in the Conclusion section of my original post) and it did feel like I was channelling the infamous "no-one will need more than 512kb of RAM" quote when I typed it 🤣 Hopefully my revision above addresses that?
Yes, I considered that too and again sort-of mentioned that in my original conclusion.
Thats good to know. Hopefully they'll get around to it sooner rather than later because adding functionality which would improve the UX of the Asset Browser immeasurably entirely depends on it.
True.
Don't get me started on that. I'm one of those that have never been able to copy & paste node setups between two instances of Blender. It properly aggravates me! 🤣
I genuinely never thought of that doing it that way!
Picard_Facepalm.gifStill, doing a (revised for my revision above) "Add Asset to..." > "Materials" > "My Materials" would be much much quicker than having to mess about with two instances of Blender and copy & pasting.True, but some areas of Blender feel to me, personally - I don't pretend to speak for anyone else - like they were big ideas for the next big thing but quietly got forgotten about when the next big idea for the next big thing came along. Case in point, the video sequencer; I've read of many people giving it a go but their experience leaving them with nothing more than a resounding shrug of the shoulders. Its stuff like that which diverts resources from areas where it really matters, like an Asset Browser which is missing some pretty basic functionality and really lacking in the UX department.
I respect your comments about this but, as I said, this is a different discussion for a different place/time and, respectfully, I'd prefer this thread not to get derailed by such discussion because I rather enjoy reading feedback, giving further consideration, and attempting to find solutions to potential problems 👍
EDIT: Nearly forgot... depending upon further feedback I may edit my original proposal with any revisions to reflect that feedback. Basically, from a UX perspective, I'm trying to propose something that doesn't require the user to necessarily go delving into the preference and folders unless they really, really need/want to. All feedback is welcome.
They definitely need to add more features related to the fact that the library consists of multiple blend files. I like most of what you describe. I know there are plans to add features to the .blend file format to assist with assets so they probably should add the lock flag in the .blend file itself. Also they are working on features to have multiple catalog description files in multiple places all get updated when you modify catalog contents. It should be possible to apply that same work being done to the multiple blend files themselves and keep all catalog info within the .blend files eventually if we can convince them to do that (if they haven't considered it already).
Things like adaptive subdivision, all of the new grease pencil stuff, most of the apple hardware support, most of the nvidia hardware support and probably all of the AMD hardware support and many other things were contributed from outside of the Blender organization. There aren't that many resources internally to divert as far as I can tell.
You just described ALL of Blender.