by William Reynish
The dust has now fully settled after the major UI changes that happened in Blender 2.80, this gives us a vantage point to look at planning Blender’s forthcoming next UI-related work. For this reason, a few Blender developers met at the Blender HQ in Amsterdam for a two-day workshop and planning-session. Among the group of developers were Ton Roosendaal, Dalai Felinto, Brecht van Lommel, Julian Eisel, Bastien Montagne, Pablo Vazquez and William Reynish.
Rather than going over every little detail that could be improved, we chose to focus on the major areas that will affect the user experience. Here is a summary of the meetings and sessions we had.
Asset Manager
What is an asset?
While the asset manager sounds simple, as you dig down into it, you start to realize that it deeply affects many areas of Blender. Questions like ‘what is an asset’ is not even necessarily straightforward to answer, nor are details such as exactly how are they stored and referenced.

We think of assets as an ID-type (Collection, Object, Mesh, Material, Texture, Node Group, etc) with a special ‘asset’ tag. With the asset, we can also store additional information, like a set of additional metadata tags, the author, rating and so on.
Library and Projects
We discussed the issue of assets by talking about several main use-cases:
- Library: There’s the use-case of using a central repository of assets for use as a starting point. This can either be built-in assets or a user-created asset library.
- Project: The second main use-case is for projects, such as movie. Here you typically link assets between blender files.
The two use-cases share some solutions but also have differences.
For the Library use-case, we had to decide how assets are stored, since we want to present users with something that looks like a library of assets. We think the best solution is to store 1 asset per blend file, since then you can more easily share and delete assets from the file system. However, we would need to create a database cache so that browsing assets is fast and doesn’t require Blender to open each asset .blend to read the contents before you can see it in the browser.
For the Project use-case, we have the core issue that currently Blender has no real concept of a project to begin with. If you use the example of an open movie, you would want to link assets together within each project, but not between projects. And when you open Project A, you would want to automatically be presented with relevant Project A assets – not things that are meant for Project B. For this reason (and others) the first step is to add the concept of a project as a core concept in Blender. This is meant for any time you want to create something that spans multiple blend-files. This concept was also discussed with the Grease Pencil team for the storyboard/VSE project that is planned for the future.
UI Layout and Polish
The UI layer and front end to the asset manager is in many ways the easiest part to design (although not necessarily the easiest to code). We simply want to present users with a great browsing experience that is fast, searchable, and fun to use. Throwing on a wood material onto your model should be slick, interactive and feel tactile. Dragging furniture into a room should stick to the floor and not just float somewhere random in space. We agreed that we’d like to support these kinds of things, even though technically some of those are perhaps not necessarily strictly only for things coming from the asset browser in particular.

Brushes
A big part of the UI workshop was centred around the brush system. Brushes are currently a pain to deal in Blender because they are stored inside each individual .blend file. This means that after users have spent lots of time setting up a nice set of custom brushes, they will be lost when you open a different .blend file, and the user must manually append the relevant brushes every time. That is the equivalent of having to load your brushes every time you would open a new image in an image editing or painting app – it’s not ideal.
Instead, we would like to treat brushes more like we treat Material Preview HDRI’s – as global permanent items that live in your Blender library, and which can be used on any project. This sounds simple, but in practice it opens many questions. HDRI’s can’t be edited and also are very self-contained. Brushes can of course be edited at any time by the user, and can make use of things like textures that live in the scene. Making sense of this is actually potentially a bit complicated, but we think we have an idea of how it should work.
Brushes will be automatically loaded from the main Blender library. Any changes to them will stay local in the current Blender file. However, we would like to add a way to copy or override the brush for re-use later.

For more on assets, see https://developer.blender.org/T73366
Everything Nodes
One of the other big forthcoming changes this year will be the start of the conversion of Blender to become fully node-based. This not only has implications for Blender’s internals, but also the user interface. In particular, for this workshop, we focused on some concrete problems, as listed below.
Node Flow Types
Currently, in the Compositor and with Shader nodes, everything users see is what we call ‘data-flow’ nodes. Each node passes some data to the next node from left to right until we end up in a Compositor or Material Output node. At a conceptual level this is fairly easy to follow.
Because particle nodes is really more a logic-based node system than something like compositing or shading, the challenge for Everything Nodes and in particular the Particle Nodes system, is that we also are introducing two other types of connections that don’t represent data-flow at all: Control-Flow and Effectors.
- Data-flow Nodes
The nodes you already use in shaders and in the Compositor all represent a flow of data. Particle nodes will also include data-flow nodes. - Control-flow Nodes
These don’t represent data being passed from left to right at all. You can think of them is being a ‘condition gate’, and can essentially be read from right to left. - List Nodes
Not a flow, but simply a list. We use these for effectors like emitters, forces and events. They are essentially to be read as a list from top to bottom.

The challenge is to communicate the difference between these node types, their connections and sockets. We brainstormed many different kinds of solutions:



Inputs & Outputs
The other issue that the new node trees expose is the much heavier use of group nodes as a core concept. This is important, especially in tandem with the asset manager, because it means users will be able to more easily re-use node groups, and also that we will ship lots of node group presets for higher level functionality. Group nodes allows us to get a layered interface, where we encapsulate complexity, but these can always be opened and modified if users desire to go a level deeper.

The apparent issue we have here, is how to better handle inputs and outputs from group nodes. Currently they look just like normal nodes, but really they are a very different category. We can think of these as coming from a different dimension in the node tree.

Multi-item Properties
Making it easier to edit and view properties across multiple selected items, has been a long standing desire to address. For this workshop, we wanted to look at this in detail to make sure the proposed design was acceptable.
We already had a design for this, but we decided that we would rather do this the more proper way, rather than try and solve it as a quick hack. Doing this well has many implications for how to treat selections vs active items, and which panels and properties can even be visible when multiple items are selected.

Read here for details: https://developer.blender.org/T54862
The items above are not a comprehensive list of all UI improvements to be done, nor all the work being contributed by the community, but it gives a peek into what some of the core developers are planning over the next period to focus on to further advance Blender’s user experience.
William Reynish
Blender UI Team