With the 2.30 launch, we present the first results of work on an improved user interface for Blender. Since most of Blender's code *is* UI, a huge task to accomplish, and something that will grow more mature over the upcoming releases.
Nevertheless, we can proudly present a series of improvements over the last 2.28 release, which will be briefly described and elaborated below.
Feedback
Of course we release to get feedback on our work as well. Please bear an open mind when testing the various new features. Not all is finished nor polished.
We'll schedule a review process in three stages;
1. getting all bugs solved involved with this release, things that don't work anymore, hotkeys or menus that give wrong events, and so on. For this release we had to do a major code reshuffle and cleanup, which enevitable will need some additional testing.
Based on that, we'll release an update (2.31) within a couple of weeks, to make sure there's a good working Blender available, also to be included in the new manual.
2. after that, with a couple of weeks time for everyone to get familiar with what's all new, we'll gather reports and suggestions for further improvements. This then still will be done within the context of the UI Redesign doc, which provides the big picture. Proposals are especially welcome to finalize:
3. what is still pending, and/or what we first need design proposals for is:
More than enough to do still...
Pull down menus
The purpose of pulldown menus in Blender is to give a complete as possible overview of all tools and commands Blender offers. Each window type in Blender will get these, based on the functional context of the window itself. The main header (Info Window) provides the global available options, all other options can be found in the corresponding window headers.
New options:
Cleaning up headers
Apart from solving the intimidating looks - headers with loads of obscure icons - we also needed to create space for future expansion. For this version, only the most important options are displayed in headers; where possible the old icon buttons have been moved to a pulldown menu. We've also added a larger button to indicate the very important current 'mode', like 'EditMode' or 'Vertex Paint'.
The next stage will be to allow a user configurable icon-button setup. For both in header, or for in a small floating toolbar in the window.
Most obvious is the reorganization of icons in the ButtonsWindow header. This had to match a vertical layout (250 pixels wide) as well. Using middlemouse scroll, you can tweak display for a small header though.
We've done experiments with full transparent headers, but this didn't work at all... you can still hide/reveall them with a rightmouse click on a window border.
Buttons window reorganization
To enable flexibility an future expansion, the old and rigid structure for buttons in Blender has been rewritten from scratch. It now allows a flexible hierarchical structure, with three levels:
-> Main Context
In the header, the icon group on the left indicates 'main context' level. Divided now in six categories based on workflow:
1. Game logic buttons
2. Script buttons (for next releases, python scripts can completely fill this in)
3. Shading buttons (materials, lamps, world, radiosity, texture)
4. Object buttons (all related to doing things outside of editmode)
5. Editing buttons (related to editing modes, including paint and UV texture select)
6. Scene buttons (global context-free settings)
For convenience, we kept most of the previous hotkeys for it, but this is a candidate to change later on:
F4: logic
F5: material
F6: texture
F7: object
F8: world
F9: editing
F10: render
You can of course have multiple windows with buttons open, to have 'shading' and 'editing' context visible together.
-> Sub Context
Each 'main context' can have unlimited branches. Most obvious is the Shading group, which updates on selected (activated) Objects, including showing 'World' when a Camera is selected. Going to another 'context' and back will always restore what you had.
At this level actually a decision is made which button panels are visible.
(NB: the current tree is hardcoded still, but a candidate to become dynamically generated, allowing to construct different tree structures on the fly, including Python playing with it all)
-> Panels
This is the most obvious change, organizing all buttons in small groups that can be moved around, collapsed, or merged. After doing some experiments with sizes, we found that a fixed 320x210 size was optimal, both for horizontal and vertical layouts. With only a few exceptions we've used this standard.
For this release we've also deliberately choosen to match a layout as close as possible to previous versions. Expect in upcoming releases results of further 'information design' work on this as well.
Panel features are:
Since Panels reside within the 'context' of the hierarchical tree of the buttons window, they can't be moved outside of the window. Yet...
Floating Panels
Several obscure buttons in Blender have been moved to a location where they actually belong. Most obvious were:
You can invoke this with the new pulldown menu in the headers. It then will display a Panel in the window, working fully non-blocking and live updating changes. The same method has been used for the former 'N-Key' (numerical input) menu, which is a nice Panel now as well. Features of floating Panels are:
Automatic coloring for buttons
In previous Blender versions, coloring of buttons was used to indicate its type. This was all hand-coded, and was not consistantly implemented.
For 2.30 it is replaced with an automatic system, all buttons are colored now based on type. It needs some further tweaking to get some exceptions corrected though, the colors don't always match what we want to communicate.
Toolbox
The new version of a toolbox is in fact mostly based on what the pulldown menus offer in the 3d Window. Again for this a lot of new code had been written, especially to devise a simple scripting style structure, to enable easy experiments with alternatives later on. It's about the latest addition coded, just finished a couple of days before the release, and one of the main issues that need further work.
The main purpose is to give as much context-sensitive information as possible. It's always a subset of the available total of options, and should please power users as much as new ones...
Some things to mention:
Themes
Drag down the top header (mouse over window border) to see the options to tweak color and drawing style of the UI. A couple of features to mention:
Styling
Speed...
Quite some work was done in cleaning up old code. Several old hacks were removed which caused substantial slowdown or CPU load. In general, the new UI should draw faster than ever.
There might be issues with certain Linux window managers though... like minimizing windows, and using desktop switching. Some removed hacks were undocumented, and need careful evaluation again.
Ton Roosendaal
Amsterdam, october 30, 2003.