Blender 2.5 Alpha 0 is out and ready for download. The servers seem to be pretty much hammered right now. While the “Alpha 0″ part may not inspire a huge amount of confidence, Blender in general is a pretty solid piece of software, so it seems reasonable to expect it not to blow up in your face.
New Features
This is an example of the property browser which is now context-sensitive and sanely organized
Much better UI organization (and appearance). Properties are logically and consistently presented. Lots of context-sensitive controls and functionality.
Easy to customize UI on-the-fly (e.g. add commonly used features as buttons to the main tool palette) — although I haven’t figured out the keyboard shortcut customization (or maybe it’s buggy)
The spacebar menu now lets you quickly search for commands.
Much easier to find commands (the “spacebar” menu now lets you search for commands — so you can get to any command by hitting space and then typing the first few letters of its name).
Tool buttons have tooltips showing you the tools keyboard shortcut and Python equivalent (unfortunately it looks like it’s the Python equivalent that’s used for mapping keyboard shortcuts, which makes sense from an engineering point of view, but isn’t very user-friendly).
Fullscreen mode on Mac
Multiple window (and hence monitor) support
According to the release notes, there’s also cloth and smoke simulation and improved particles (I’d never used Blender’s particles before and it’s a testament to how much things have improved that I was able to get particles up and running in a few moments without looking at any documentation or tutorials).
My experience of Blender 2.5 thus far (pre-alpha) is that it’s quite stable and a lot more usable. The new version includes a 64-bit OS X version (yay!).
Blender's complexity is necessary, but some of the difficulty getting to grips with it stems from gratuitously non-standard UI features or easily fixed foibles.
As my reader knows, I’ve something of a love/hate relationship with Blender. Or perhaps it’s more of a need/despise relationship. If there’s ever a feature I need in a 3d program but don’t have in my current favorite, the answer is always “well, Blender does it and it’s free” (unless the feature is motion blur – Blender’s motion blur sucks … or it did last time I tried to use it).
My favorite 3d tool for the past few years has been Cheetah 3d, which has many virtues, a few flaws, and a lot of missing features. I think it’s important to differentiate between a missing feature and a flaw, the latter being a feature that doesn’t work as well as it should, or isn’t as easy to use as it should be. Blender, measured in the same way, has many virtues, a spectacular number of flaws, and not many missing features (that I can think of).
It’s worth noting that for any given user, sometimes it’s better to have a flaw than a missing feature (if you need that feature, however flawed), while at other times it’s worse (e.g. if that flawed feature creates clutter or confusion and you didn’t need it anyway). Although after over fifteen years of 3d experience I thought myself a pretty advanced 3d artist, I still have a lot to learn, and Cheetah 3d’s simplicity has helped me learn some of it. But, over time, Cheetah 3d’s missing features have become an increasing sore point, while my continued grappling with Blender’s apparent flaws has led me to better understand its significant, but less apparent virtues.
The real problem with Blender, it turns out, is that it has a lot of hidden modes. Most powerful software has hidden modes, and understanding those hidden modes slowly turns the software from incomprehensible to amazing as you have “aha” moments. Sometimes the developers of great software will recognize a few or many of the moments necessary to help you on your way and explain them to you at the right time minimizing the time it takes for you to reach nirvana. Sometimes developers will leverage your understanding of existing software rather than [gratuitously] create new paradigms of their own. The fact that Blender has done neither doesn’t make the software bad, merely the process of grokking it unnecessarily unpleasant.
It’s full of modes!
Clicking this icon in the NLA window toggles between Action and NLA mode. Which mode you're in is not apparent aside from this.
A lot of software today tends to be virtually modeless when used for common purposes. Modes were recognized as a bad thing in user interface design when Apple produced the original Human Interface Guidelines for the Mac.
Even so, the early Mac programs were very modal. For example, if you pressed command-F in MacWrite a “Find Dialog” appeared which was modal. You couldn’t, for example, select some text in the underlying document and paste it into the text field. If you were “finding” stuff and saw a typo you had to leave “Find Mode” to correct it, and then resume “Find Mode”. In MacPaint when you zoomed in you were in “fat bits” mode and the only tools you could use were the pencil and eraser. Much of the complexity in modern software has resulted from eliminating modes — in essence making all things possible all the time.
It’s not acceptable for a modern word processor not to offer all its formatting functionality in headers and footers when, once upon a time, you essentially entered a crippled mini word-processor to modify your header or footer.
The worst kinds of modes are hidden or implicit modes — i.e. modes you can be in without being able to tell. A classic example of such a mode is selecting stuff in Photoshop. If you “make a selection” that’s all you’re doing — making a selection. You aren’t actually selecting anything. If you then “lift” part of the underlying image (i.e. selecting that part of the layer underneath your selection) the user interface doesn’t change even though you’re now in a different mode. Understanding this odd behavior was, for me, the big aha moment in learning to use Barneyscan Photoshop. Before I figured that out, Photoshop just seemed perversely difficult to use.
And, in fact, Photoshop is perversely difficult to use. MacPaint didn’t do things the way Photoshop did, and Deluxe Paint (and later Studio/8 and Studio/32) managed to extend MacPaint’s abilities without breaking MacPaint’s paradigm to the extent that they allowed you to do everything Photoshop managed with its “selections as entities in and of themselves” without requiring users to unlearn their existing habits. No-one cares any more because every graphics pro knows Photoshop and has committed all the shortcuts for manipulating selections to muscle memory, but it’s easy to forget how perverse Photoshop seemed to people who knew how to use other graphics programs back in 1990.
Blender Revealed
To my mind, figuring out Blender requires at least two major realizations. Perhaps by documenting them I may help someone else “get over the hump” faster than I have.
The first realization is that Blender is built around the concept of a 3d cursor. You need to learn how to work with the cursor. (Shift-C snaps the cursor back to the origin, and learn to use the Shift-S menu — it’s wonderful.) The 3d cursor is a very powerful concept — analogous to a text cursor — but other 3d programs make do without such a concept, so realizing that Blender has this concept and is to a considerable extent built around it is analogous to understanding Photoshop’s concept of a selection as an entity of itself — once you realize that Photoshop is all about selections and learn how to work with them everything becomes second nature.
Aside: one thing I tried early with Blender was switching its mouse behavior over so that left-click selects and right-click sets the cursor. Unfortunately, Blender becomes somewhat broken with this option. In my opinion Blender would be a much easier program to use (and master) if left-click selected, and if — indeed — major thought were put into making more common actions left-clicks and less common actions right-clicks. This may be addressed (at least by preferences) in 2.50, but don’t hold your breath.
The second realization is that Blender is full of modes, that most of these modes are hidden, some modes stick to specific objects while others affect the entire program, and that in some cases which mode you can enter is itself a modality. This isn’t as easy to wrap in a nutshell — but it’s probably helpful to know that if Blender is acting in a weird or apparently unpredictable way, you’ve probably managed to trip over a hidden mode.
Blender is difficult, but most of that difficulty is necessary
When I say Blender is full of modes, these are modes in every sense — menus change, the way things are displayed changes, what you can select and do changes, etc. etc. etc.
And when I say hidden, I mean that how the user interface behaves can be completely changed by a setting on a panel you can’t see, or by the mode you previously got into when you had something else selected.
Here’s a particularly hairy example: there are two distinct animation modes in Blender, “Actions” and “NLA” (Non-Linear Animation).
The idea is that you animate a figure’s basic reusable behaviors (e.g. walking, jumping, waving) as individual “Actions” and then you build longer animations using the NLA window which treats actions as layers (much like video layers in After Effects or Final Cut Pro).
Whether you’re in NLA mode (where what you see happening and what you are modifying is happening in the non-linear animation context) or Action mode (where what you see and do affect a specific action) is not necessarily visible or apparent at any time. Oh, and, each action you’ve created is, itself, a different mode (and which you’re in is not apparent unless you happen to have the right display visible and the right hierarchy disclosed and scrolled into view).
Now, let’s suppose you’re editing vertex weights in the course of “rigging” a model.
What does this mean? Well, you’re trying to choose how the vertices in a mesh are affected by the movement of the bones in its animation rig — a virtual “skeleton” made of “bones”; the model is the mesh, the rig is the skeleton, and to say a model is rigged is essentially to say that it has had a skeleton built for it and has been attached to that skeleton using vertex weights).
Sounds pretty complicated, right? Well it is, and so it’s kind of stupid to expect the user interface for this to be simple or particularly straightforward. I think it’s fair to say that no similarly conceptually complex task is explicitly supported in, say, Photoshop or Word or Excel, each of which has a pretty complex user interface in its own right.
The usual way of showing bone weights is to show a “heat map” indicating how tightly bound vertices in a mesh are to a given (selected) bone. This is how the mind-bogglingly complex Blender does it. This is how the beautifully simple Cheetah 3d does it. But in Blender, to select a bone you … select the bone. In other words, you right-click (because selection is done by right-clicking) on the bone and voila. Pretty neat, huh? In Cheetah 3d you look for the skeleton deformer modifier tag in the hierarchy view, click on it, and then find the bone in a scrolling list in the properties browser.
Now, in Blender it’s important to make sure that the armature (or “skeleton” of the model you’re working on is in “Pose mode” — armatures can be in one of three modes) and then select the mesh and set it to “Weight Paint Mode”. If the armature is in the wrong mode, the mesh won’t be posted while you’re finessing vertex weights, which means you won’t be able to see whether what you’re doing is working. Also, you may not be able to directly select the bones you’re interested in. This is all horribly complex, involves hidden modes, and is utterly counter-intuitive. But the benefits (you can paint weights on a posed model and see the changes in real time, and you can select bones directly) are absolutely huge.
My first successful character animation in Blender. (Rendered in Cheetah 3d.) Getting there was much harder than in Cheetah 3d, but I can actually reuse and make tweaks to the rigging and the animation itself which are impossible or very difficult in Cheetah 3d. Flaws vs. Missing Features.
Eating My Own Words?
I’ve ridiculed Blender’s lack of usability in the past, and probably will in the future. Even some of my praise for Blender in this post probably seems close to ridicule. It’s a ridiculously — and often unnecessarily — difficult program to get into. Almost all of my complaints (and then some) are as true now as ever. There are so many simple things that could easily be fixed in Blender to make it easier for new users that it’s not even funny. The same was true for Photoshop when it came out, and — over time — Adobe changed some things to be less non-standard while others eventually asserted their dominance. Even today I’m pretty sure any Deluxe Paint or Studio/32 thinks that the keyboard shortcuts for Photoshop are idiotic compared to those for their cherished bitmap editors. I know I do.
The fact is that Blender is an incredibly capable, rock-solid piece of software (I can’t remember when it last crashed on me). Its user interface foibles are stupid and ugly, but you can get past them, and in the great scheme of things it’s certainly worth never having to pay for another 3D Studio Max upgrade or figure out how to replace that burned out ElectricImage dongle.
Who knows? Maybe in five years I’ll be writing a similar article about my newfound love of GIMP.
Addendum: Blender Hints
Simple things that may make Blender easier to use.
Oddly enough Preferences are accessed by “dragging down the menu bar”. WTF? Well, that’s how it works.
Having opened up preferences, you probably want to go to Edit Methods and go to Add new objects: (on the left) and turn off Switch to Edit Mode and Aligned to View which may be on by default (because they used not to be options). Aligning new objects to your view is hardly ever what you want, and many users have the shortcut for (a) switching out of edit mode, (b) clearing a newly created object’s rotation, and (optionally) (c) returning to edit mode burned into muscle memory.
You’ll also probably want to change your default directories to minimize the amount of navigation you have to do in Blender’s (horrible) file requester.
Once you’ve learned how to create a nice setup in Blender you may want to build a good default scene and File > Save Default Settings.
Often, especially when going through tutorials, there’ll be reference to a command that I just can’t locate in a menu. If the command has a hotkey you can find it using the Hotkey and Mouse Action Reference (Help menu) — which has a search command. Then you can at least find out the keyboard shortcut, even if you still won’t know where the heck to find it in the menus.
The Essential Blender (book) is really very good, although it does contain quite a few errors (so if something just isn’t working, maybe the command’s name or the keyboard shortcut is incorrect).
If a bunch of things suddenly disappear or become uneditable you may have inadvertently messed with the scene layer settings (which the standard number keys are shortcuts for, so it’s easy to do). If you don’t use layers deliberately the chances are pressing 1 (above the Q, not on the numeric keypad) will restore everything. If you do then you’ll already know how to deal with this.
Armatures and bones have their own independent layer system, so be prepared for completely orthogonal confusion when working with rigs.
In many cases, Blender reuses key commands in different contexts. E.g. G (grab) is used to move objects in 3d, keyframes in the Action editor, and action layers in the NLA window. N (transform properties) brings up a numeric transform floater in 3d views, and similarly useful floaters in (some) other views. A (select all/nothing) selects all or nothing where appropriate, in the hierarchy view it collapses/expands everything.
It’s well worth learning “root” shortcuts which bring up menus. E.g. Shift-S (“snap”) brings up a menu — usually the next number you type selects the commands (in order) in that menu. In some cases (e.g. G and R) you can press X, Y, or Z to constrain your action to an axis.
Keyboard commands in Blender apply to the panel the mouse is over, which can be very confusing (especially since each pane has its own menu bar and hence its own keyboard shortcuts).
Selecting things is an action (which you can undo). Changing a view is not an action (and you can’t undo it) — unless you moved a camera.
Blender’s camera controls are pretty annoying (absent?), but if you manipulate a camera object in a 3d view with the transform orientation set to “Normal” or “Local” you can dolly the camera around in a relatively intuitive fashion. (If there’s a command to, for example, create a camera from a current user view, I haven’t found it. Shifty-F lets you fly a camera around, but when you leave Fly mode your camera is back where it started.) Edit: a reader notes that Ctrl + Alt + 0 snaps a selected camera to the current view, which is very handy.
I use Blender on a (Mac) laptop quite a bit, so it’s worth knowing the view navigation controls for folks with no MMB (middle mouse button). Option-drag to orbit, option-shift drag to pan, and scroll-wheel (which Mac laptops do just great) zooms.
Blender supports “virtual screens” internally — three complete viewport layouts (more if you want) that can be accessed via control-left and control-right. Very handy given how cluttered things can get.
The render buffer (F11) can be zoomed and panned using the usual keyboard shortcuts. There are actually two render buffers (containing the current render and the previous render) and you can toggle between them with the J key (very useful for checking what effect that last tiny change had). Click and hold in a render view for an RGBA value.
Note especially for Unity developers: the FBX exporter “bakes” subdiv modifiers (at “render” level) into meshes on export, so beware!
And there’s a ridiculous number of useful tips and gotchas here.
Blender’s built-in rendering engine is getting pretty decent. Here’s a quick test render of frosted glass.
Blender 2.5 is still under development. The main thrust of Blender 2.5 is user interface customization. If you’ve read my previous rants posts on the topic you’ll know that I consider Blender’s user interface to be, well, bad. Blender’s UI is customizable, but not to the extent that you can “fix” it. E.g. it has a 3D cursor (its equivalent of the text insertion “caret” you use in word-processors) which determines where new objects appear and which is repositioned by clicking with the left mouse button. See, 3D is just like text editing!
Except that Blender doesn’t take the analogy far enough (you can’t select stuff by left-click dragging, the insertion point doesn’t position itself in the spot “left” by something you’ve just deleted, the view doesn’t scroll to frame the cursor, and so on). Most 3D programs don’t have a “3D cursor” because the concept is, essentially, idiotic (until we have true 3d interfaces so that we can actually see and control cursor placement). Given that Blender does, it would be nice if the idea worked properly.
Anyway, you can customize Blender to switch the left and right mouse button behaviors (so that left-clicking selects and right-clicking sets the cursor) but this has the bad side effect of borking the camera controls (which use the middle and right mouse buttons) and wasting a perfectly good mouse button for a perfectly useless operation.
This test render shows off Blender’s volumetric lighting (it’s not that great, and only supports spotlights) and its sub-surface scattering (which is pretty wonderful).
Blender 2.5 plans to address some or all of this by allowing true, low level UI customization. Hopefully, when it shows up there will Maya, 3D Studio Max, or whatever “themes” that make it easier for those not up to speed with The Blender Way to get things done.
Meanwhile, Blender 2.46 RC1 managed to fix one of my gripes with earlier versions. When you create a new object it is, by default, aligned to the global coordinate system rather than the current view (which, as I pointed out, is almost never what you want). This problem has been around so long that many tutorials include steps for removing the random transform applied to each newly created object as appropriate. This is a pretty huge win for the Blender UI. Another 10-20 improvements of this magnitude and the default Blender UI might not suck so bad.
Of course by trying to keep my list short, I either left out a things (we’ll get to the most important item in a sec) or left a bunch of stuff as a corollary.
0. Function As Intended
There’s no point being usable if you aren’t useful. This should be obvious but it needs to be said. Blender obeys the zeroth law (in spades!), and it’s free and open source, making it sad that it disobeys laws 1 to 11.
Example corollaries:
Visibility (as stated) implies reduce clutter, organize things sensibly, use visual hierarchies. If I put each of these in as a law in I’d have 50 or more laws and no-one would read to the end of the list. This would make the list less usable.
A classic example of the Visibility law in action is that if you try to say delete something in a good program, the dialog’s buttons will be captioned “Delete” and “Cancel” (or similar) rather than “Yes”, “No”, “Abort”, “Retry” or “Fail”. Putting the most important information in the first place someone will look is a corollary of the Visibility law.
Blogs are kind of like Usenet where you get to avoid the flamewar. I tried posting on Blender’s forums about its atrocious UI and quickly gave up since the responses were idiotic, hostile, or despairingly sympathetic. You get the picture.
Having come up with my 11 simple rules of usability, I can now beat Blender over the head in my own private (public … but who’s reading?) venue.
1. Consistency.
Blender isn’t consistent with (a) itself, (b) any other major 3d app, (c) graphics apps in general, or (d) GUI apps in general. Where do I start? Guess what the keyboard shortcut for Undo is? Don’t bother, it’s “U”. Now just imagine trying to convince the genius who came up with that one that it’s a bad idea. (Obviously everyone else needs to change…)
2. Progressive Disclosure
Let’s assume you want to create a new material for your model. Typically you might like to set the material to have a color and a shininess initially, and then maybe add a bitmap instead of a flat color.
Here is the icon toolbar thingy in material mode in blender:
Aside: A slightly edifying story.
A “usability expert” once told me about his “rule of three”. It takes three design iterations until you can “get something right”. He’d apparently confirmed this “rule” by giving students Rorschach ink blots, asking them what they thought they looked like, and telling them to modify the ink blots just enough to make their opinion obvious to anyone else looking at the inkblot, then ask ten people what they thought it was, and if they got disagreement, make changes, etc. until they got ten positives. He said most of the time, three iterations were needed.
I said I could do it first time every time. How? I’d make my changes and add a freaking caption.
Now, having identified the correct pair of icons to click on in order to add a material, you are faced with this:
No shame if you missed this while clicking randomly on icons looking for something that might seem related to adding materials. But let’s assume you figured out that this was your holy grail. Note what you’re shown and not shown.
Heaving found your holy grail and clicked Add New, you’d finally get somewhat closer to the business end…
At least now this looks like it might have something to do with materials or shaders. Note the words “Preview” and “Material” and “Shader” and “Texture” being bandied about with abandon. Yup, this is it. Now — WTF do I do?
3. Forgiveness
In Blender you can create a cube by pressing space (over a viewport, because Blender obeys someone’s idea of X-Windows conventions … yup if you’re going to pick something to be consistent with, make it something hardly anyone knows, likes, or can remember), then navigating the menu that appears: Add > Mesh > Cube.
Now try to Undo that (press “U”, remember? Neat huh how it’s mnemonic. Pity you’re wired for command-Z by thousands of hours of practice because operations you do all the time don’t need to be mnemonic, they need to be efficient … hmm I need to add that as rule 12 … and undo, cut, copy, and paste are all next to the cntrl/apple key for a damn good reason).
Yup … you guessed it. Even if you remember Undo, it doesn’t work for some obscure things, like … I dunno … creating cubes. (In case you think I’m not being sarcastic, pretty much the first thing you do when modeling anything using subdiv modeling is create a cube.)
Oh, if I manually delete the cube in Edit Mode I can undo it (the deletion, not the creation).
Correction: a reader has pointed out that ctrl-z works just fine in Blender, it just isn’t reflected in the menus. And since Undo doesn’t work consistently (e.g. if you create a cube you can’t undo it) you might be forgiven for thinking you didn’t know the correct undo shortcut, look at the menu, and conclude Blender was perverse (which it is, but in a whole new way).
The same reader said the same is true for ctrl-x, ctrl-v etc. This is a stretch! Create a cube, type ctrl-x (and you get the “OK? Erase All” dialog). Now ctrl-v — nothing. Again, in some cases Blender may behave kind of consistently, but this level of consistency is almost worse than none at all. It’s like making a bike with “back pedal” drum brakes, but decorating the handlebars with lever-operated brakes that work 75% of the time.
So I really shouldn’t belabor the “U” for undo thing. Instead I should point out that Blender doesn’t use standard OS file requesters, say, or doesn’t actually have an “Edit” menu to put the dysfunctional clipboard and undo commands in, or — heck — just belabor the fact that undo doesn’t work consistently.
If I manually delete the cube in Object Mode and try to undo the deletion I get a dialog titled “Single User” with four options, none of which (a) make sense, or (b) appear to do anything.
4. Visibility
Go back to item 2 and look at the pictures.
Did I mention that one of the things you’ll need to do is click “Add New” in textures? Then you’ll need to select a different tab (go ahead, try to guess which one) to see the texture you’ve created…
5. Beauty ∧ Simplicity
Look at the icons. QED. This is a freaking artists’ program. Every new version has a beautiful new splash screen.
6. Maximise Generality, Minimise Steps
Go back to item 2.
7. Smart Defaults
Go to items 2 and 4. Imagine that when I create a texture all the obvious features are populated by default. Consider 3D Studio Max which randomly assigns a simple texture to each newly created object (with a random color).
8. User Errors are Crashes
Under this metric, Blender crashes almost constantly. Luckily, undo sometimes does nothing. Most actions that cannot be undone (along with many that can be undone — grrr), however, have nearly invisible confirmation dialogs that appear under the cursor and can accidentally be confirmed.
9. Avoid Preferences
Actually, Blender is less customizable than most high-end 3d programs. The most useful customization is to make the left mouse select things rather than reposition the 3d cursor (something most people will accidentally do all the time and which can be very inconvenient, can’t (as far as I can tell) be done precisely, and can’t be undone.
10. Wizards
Blender actually doesn’t use Wizards per se. While as an exercise in Usability it represents an almost utter failure, at least it doesn’t insult you with wizards that navigate the UI doing things you have no way of doing or fixing yourself.
What Blender does have is some standard scripts, with names like “UV Copy from Active” and “Object Name Editor” that sound like non-graphical wizards offering functionality that ought to be a native part of the program and placed somewhere logically rather than lumped together in the scripts folder.
11. Online Help
Blender has lots of online help and tutorials (thus virtually proving the rule — when Usability fails, document your user interface). Given how terrible it is, Blender has some really good tutorials. You’ll need them — probably more than once.