Page MenuHome

Brushes Storage
Open, NormalPublic

Tokens
"Like" token, awarded by Alumx."Love" token, awarded by jfmatheu."Like" token, awarded by Oleg."Love" token, awarded by franMarz."Like" token, awarded by knightknight."Love" token, awarded by dcvertice."100" token, awarded by Frozen_Death_Knight."Like" token, awarded by xrg."Love" token, awarded by mendio."Love" token, awarded by JulienKaspar."Love" token, awarded by Mets."Yellow Medal" token, awarded by duarteframos.
Assigned To
None
Authored By

Description

In Blender, one of the core issues with brushes, is that they are currently stored inside the blend file. This is not very useful, because it puts a large burden on users to then manually save and load brushes for each project or blend file.

Instead, we would like for brushes to be stored centrally, so that they will be accessible from any blend file on the user's system.

Here's how this could work:

  • Brushes are stored in a central location, much like LookDev HDRIs
  • Adding or removing a brush will affect this central repository
  • Any local changes to a brush is not saved unless users explicitly choose to do so, otherwise any temporary change would overwrite the main brush in the repo
  • Brushes are stored as 1 brush per blend file, so it's easy to manage them and share them, but will be cached in an index for fast loading and browsing.

Note: For brushes to be more useful and work well, we will also need to;

  • Create automatic dynamic previews of the brush, so you can see the opacity, spacing, texture, falloff, and so on. Otherwise browsing brushes will largely be a guessing game
  • Have a way to see brushes for all tools, and let selecting the brush set the tool
  • Have some way for users to categorize brushes (the primitive method would be to use file system folders - a nicer way could be via the asset browser)

Open Questions:

  • Should brushes tie into the assets system somehow, and should you be able to manage them in the asset browser?

Details

Type
Design

Event Timeline

William Reynish (billreynish) lowered the priority of this task from Needs Triage by Developer to Normal.Oct 1 2019, 10:05 AM

One technical issue is how to deal with image, textures and node group datablocks used by brushes. Those could be saved along with the brush into the asset .blend file. The problem is that the Blender user interface and operators very much assume that any datablock like that is part of the current scene .blend file, not existing separate from it. So being able to edit those will require some potentially deep changes.

Should brushes tie into the assets system somehow, and should you be able to manage them in the asset browser?

I think we should try to use the asset manager to handle the saving, loading and indexing. On the UI side it's a little less obvious how this integrates in the asset browser, since the typical operations are different than most assets. There is no drag & dropping of brushes into the scene and it's also not like browsing datablocks in the current scene, since the brushes wouldn't be part of the scene at all.

The asset browser could be made to work as an alternative view of whatever brush management UI is in the tool settings, but it's probably a secondary thing and not a priority.

Are brushes stored in a single brushes.blend file, or do they use 1 brush per blend, or are they stored in a different format altogether?

This is a question for asset manager design in general. I think having individual files is better from a user point of view. Then you can easily add/remove assets with just a regular file browser or zip/unzip a subset of asset files to share. Integrating with add-ons or studio pipelines is easier when you can just point Blender to a folder and it automatically presents all .blend files in there. Managing assets can still be done from the Blender UI as well, but I don't it should be the only way. There is also nothing preventing users from saving multiple assets in one .blend file, but when you create a new brush from within Blender I think it makes most sense to save that to its own .blend file.

The main challenge is performance. We can do optimizations to make individual .blend files smaller, stripping unused DNA. Mainly what we need is to have those files indexed so they can be presented quickly in the UI, and only open the actual .blend files when you use the brush (or asset). Automatic indexing is probably fine for personal assets, for files on some network folder or a big production repository, I imagine there will be some manual refresh either by pressing a refresh button in the UI, or letting a more specific asset engine handle it.

@William Reynish (billreynish) We want to make a cleaning of the Grease Pencil brush settings, because now some of them are obsolete with the new function. I think you could add a subtask for this.

EDIT: As this is more specific to Grease Pencil, we will keep this new task separated in GPencil module.

One of the problems that I see in the brush system is that when you have hundreds of brushes, you must to fight with this textures in any context. Making the use of the texture field menu difficult in simple projects.

@Brecht Van Lommel (brecht) Why not simply write them as xml instead of inside a blend file ?

Because writing them as .blend files is much simpler, as we can reuse all our existing infrastructure and not have to maintain two separate code paths for storing asset like data.