Blender 2.8 is coming

Unbiased rendering? Check. Realtime rendering? Check. Unified shader model? Check. Class-leading user interface. Check. Free, open source, small? Check. Blender 2.8 offers everything you want in a 3d package and nothing you don’t (dongles, copy protection, ridiculous prices, massive hardware requirements).

There aren’t many pieces of open source software that have been under continuous active development that haven’t gone through a single “major version change” in twenty years. When I started using Blender 2.8 in the early 2000s, it was version 2.3-something. In the last year it’s been progressing from 2.79 to 2.8 (I think technically the current “release” version is 2.79b, b as in the third 2.79 release not beta).

What brought me to blender was a programming contract for an updated application which, in my opinion, needed an icon. I modeled a forklift for the icon in Silo 3D (which introduced me to “box-modeling”) but needed a renderer, and none of my very expensive 3d software (I owned licenses for 3ds max, ElectricImage, and Strata StudioPro among other thins) on my then current hardware. Blender’s renderer even supported motion blur (kind of).

The blender I started using had a capable renderer that was comparatively slow and hard to configure, deep but incomprehensible functionality, and a user interface that was so bad I ended up ranting about it on the blender forums and got so much hatred in response that I gave up being part of the community. I’ve also blogged pretty extensively about my issues with blender’s user interface over the years. Below is a sampling…

Blender now features not one, not two, but three renderers. (And it supports the addition of more renderers via a plugin architecture.) The original renderer (a ray-tracing engine now referred to as Workbench) is still there, somewhat refined, but it is now accompanied by a real-time game-engine style shader based renderer (Eevee) and a GPU-accelerated unbiased (physically-based) renderer (Cycles). All three are fully integrated into the editor view, meaning you can see the effects of lighting and procedural material changes interactively.

The PBR revolution has slowly brought us to a reasonably uniform conceptualization of what a 3d “shader” should look like. Blender manages to encapsulate all of this into one, extremely versatile shader (although it may not be the most efficient option, especially for realtime applications).

Eevee and Cycles also share the same shader architecture (Workbench does not) meaning that you can use the exact same shaders for both realtime purposes (such as games) and “hero renders”.

Blender 2.8 takes blender from — as of say Blender 2.4 — having one of the worst user interfaces of any general-purpose 3D suite, to having arguably the best.

The most obvious changes in Blender 2.8 are in the user-interface. The simplification, reorganization, and decluttering that has been underway for the last five or so years has culminated in a user interface that is bordering on elegant — e.g. providing a collection of reasonable simple views that are task-focused but yet not modal — while still having the ability to instantly find any tool by searching (now command-F for find instead of space by default; I kind of miss space). Left-click to select is now the default and is a first class citizen in the user interface (complaining about Blender’s right-click to select, left click to move the “cursor” and screw yourself is this literally got me chased off Blender’s forums in 2005).

Blender still uses custom file-requesters that are simply worse in every possible way than the ones the host OS provides. Similarly, but less annoyingly, Blender uses a custom-in-window-menubar that means it’s simply wasting a lot of screen real estate when not used in full screen mode.

OK so the “globe” means “world” and the other “globe” means “shader”…

Blender relies a lot on icons to reduce the space required for the — still — enormous numbers of tabs and options, and it’s pretty hard to figure out what is supposed to mean what (e.g. the “globe with a couple of dots” icon refers to scene settings while the nearly identical “globe” icon refers to materials — um, what?). The instant search tool is great but doesn’t have any support for obvious synonyms, so you need to know that it’s a “sphere” and not a “ball” and a “cube” and not a “box” but while you “snap” the cursor you “align” objects and cameras.

Finally, Blender can still be cluttered and confusing. Some parts of the UI are visually unstable (i.e. things disappear or appear based on settings picked elsewhere, and it may not be obvious why). Some of the tools have funky workflows (e.g. several common tools only spawn a helpful floating dialog AFTER you’ve done something with the mouse that you probably didn’t want to do) and a lot of keyboard shortcuts seem to be designed for Linux users (ctrl used where command would make more sense).

The blender 2.8 documentation is pretty good but also incomplete. E.g. I couldn’t find any documentation of particle systems in the new 2.8 documentation. There’s plenty of websites with documentation or tutorials on blender’s particle systems but which variant of the user interface they’ll pertain to is pretty much luck-of-the-draw (and blender’s UI is in constant evolution).

Expecting a 3D program with 20 years of development history and a ludicrously wide-and-deep set of functionality to be learnable by clicking around is pretty unreasonable. That said, blender 2.8 comes close, generally having excellent tooltips everywhere. “Find” will quickly find you the tool you want — most of the time — and tell you its keyboard shortcut — if any — but won’t tell you where to find it in the UI. I am pretty unreasonable, but even compared to Cheetah 3D, Silo, or 3ds max (the most usable 3D programs I have previously used) I now think Blender more than holds its own in terms of learnability and ease-of-use relative to functionality.

Performance-wise, Cycles produces pretty snappy previews despite, at least for the moment, not being able to utilize the Nvidia GPU on my MBP. If you use Cycles in previews expect your laptop to run pretty damn hot. (I can’t remember which if any versions of Blender did, and I haven’t tried it out on either the 2013 Mac Pro/D500 or the 2012 Mac Pro/1070 we have lying around the house because that would involve sitting at a desk…)

Cranked up, Eevee is able to render well-beyond the requirements for broadcast animated TV shows. This frame was rendered on my laptop at 1080p in about 15s. Literally no effort has been made to make the scene efficient (there’s a big box of volumetric fog containing the whole scene with a spotlight illuminating a bunch of high polygon models with subsurface scattering and screenspace reflections.

Perhaps the most delightful feature of blender 2.8 though is Eevee, the new OpenGL-based renderer, which spans the gamut from nearly-fast-enough-for-games to definitely-good-enough-for-Netflix TV show rendering, all in either real time or near realtime. Not only does it use the same shader model as Cycles (the PBR renderer) but, to my eye, for most purposes it produces nicer results and it does so much, much faster than Cycles does.

Blender 2.8, now in late beta, is a masterpiece. If you have any interest in 3d software, even or especially if you’ve tried blender in the past and hated it, you owe it to yourself to give it another chance. Blender has somehow gone from having a user interface that only someone with Stockholm Syndrome could love to an arguably class-leading user interface. The fact that it’s an open source project, largely built by volunteers, and competing in a field of competitors with, generally, poor or at best quirky user interfaces, makes this something of a software miracle.

Making Blender Usable

Blender 2.69 in actionOne of the biggest changes in Blender over the last two years has been major changes and reorganization of its user interface. The goal was to address Blender’s glaring usability issues, and indeed many of them have been addressed. Yet Blender remains a dauntingly difficult program to use, and — worse — a difficult program to remember how to use. I’d say that to me (and I am hardly an expert user of any) Blender is now still somewhat harder to use and more disorganized than, say, Modo (I have Modo 601) or Cinema 4D (I have v11 XL) but that’s not saying much.

All serious 3D applications, and Blender unquestionably qualifies as a serious 3D application, are plagued by the intrinsic complexity of what they’re trying to do, combined with a lack of agreement on the “right way to do things”, and the fact that real technical improvements are constantly being made in 3D graphics, leading to proliferation of overlapping tools and terminology (consider that there are multiple implementations of subdivision surfaces — such as Catmull-Clarke and Stam-Loop — and it’s important for a 3D program to support as many as possible if it’s to be compatible with other 3D programs. Similarly, there are many different tools for modeling organic objects and curved surfaces, including NURBS, subdivision surfaces, deformation lattices, and multiple approaches to sculpting (including voxels and displacement).

The “Right Way” isn’t obvious

Wordperfect 5.1 for DOS (image from Note the F3 for help (F1 was more of a "standard"). While it has an Edit menu, "cut and paste" weren't supported (it had block and move functions instead). And bold was F6 rather than ctrl-B.
Wordperfect 5.1 for DOS (image from Note the F3 for help (F1 was more of a “standard”). While it has an Edit menu, “cut and paste” weren’t supported (it had block and move functions instead). And bold was F6 rather than ctrl-B.

If you go back to the era of DOS word-processors there was a similar lack of agreement — Word Perfect, for example, had a completely different paradigm for editing and formatting text than did Microsoft Word, and on the Mac side MacWrite and FullWrite used a “ruler” formatting paradigm while WriteNow and Microsoft Word used “styles” (but each wrapped them in a unique user interface and terminology). Pages and Microsoft Word, by comparison, are virtually identical in how they solve most problems, the differences coming down to nuances. The Mac toolbox (along with excellent free software such as MacPaint and MacWrite, and — eventually — written Human Interface Guidelines) standardized basic text editing operations (selection, inserting the caret, clipboard operations, and undo) but it took close to ten years for the world to settle on the next level of convention — word and paragraph styles with “spot” overrides. (And indeed, Windows still hasn’t quite settled on clipboard or text edit field behavior standards.)

And then let’s return for a moment to the point that — unlike with word-processing — almost every aspect of 3D technology is constantly churning. With word-processors and even page layout programs there have been some technical improvements to be sure (e.g. typefaces have become more sophisticated with things like multiple master fonts and automatic ligatures, there’s Unicode of course, and compositing has improved markedly) but these have been relatively simple changes conceptually, and in general they have just made things easier (e.g. instead of having to render a drop shadow in Photoshop, export it as EPS, and then embed a reference to it in Quark XPress, you can now perform the entire operation in a click or two in your page layout program or word-processor). Contrast this with the world of 3D which has seen  major new technologies emerge in pretty much every piece of core functionality from modeling to rigging to texture-mapping to lighting to rendering — and all these different technologies have to live side-by-side, inter-operate, and somehow fit into a single user interface.

As you’ll discover if you visit Blender’s website right now, Blender is now 20 years old, and that means it has 20 years worth of functionality clogging up its user interface. It supports NURBS and subdivision surfaces and multi-resolution displacement sculpting. Similarly it has support for rigging using bone envelopes, vertex-painting, and heat-mapping. It has three built-in renderers. It has two different node-based shader architectures (or is it three?). I’m sure you’re getting the picture.

Left-Click to Select

Blender remains unusually bad at a fundamental level because it refuses to adhere to such cross-application conventions as do exist. The most hilarious example is left-click to select. It’s almost impossible to find another application anywhere that uses left-click for something other than selection (unless there is no concept of selection at all). It’s simply bizarre. What’s worse, left click is used to position the 3d “cursor” object — which is actually a very clever concept — except that it’s a far less common operation than simple selection, and doing it by accident is really annoying.

(If you consider the behavior of a text cursor, clicking somewhere in a body of text positions the cursor rather than selecting anything. The cursor position determines where stuff you type will appear. This is the exact behavior of the Blender cursor. But it’s not the behavior of any 2D or 3D graphics program I’ve ever seen. But to select text you left-click and drag or double-click — this is definitely not how Blender works, so justifying Blender’s weirdness by analogy to text doesn’t get you very far.)

Now I need to note that Blender does allow you to make left-click into select as a preference, but the program really doesn’t work properly in this mode (and you need to reset the preference when you upgrade Blender) so that’s not a satisfying solution. Just to give you one example: there’s a shortcut in Blender to allow you to “lasso select” using ctrl+left-mouse (why left-mouse when selection is normally with the right mouse?) — this becomes ctrl+right-mouse if you’ve set left-click to select. What I want is to select stuff with the left mouse button. Not flip a ridiculous set of defaults and create a different ridiculous set of defaults. On the whole, I end up sticking with right-mouse to select simply because it means not having to reverse engineer every tutorial I find.

If it were up to me, selecting something (with the left mouse button) would also, by default, position the cursor at the selected object’s local origin (sometimes referred to as its “pivot”). You could explicitly position the cursor with the right mouse button (or perhaps setting the cursor could be a mode or tool), and there would also be an option to lock the cursor (many 3d programs effectively have a “cursor” locked at the origin). This would actually maximize the conceptual mapping between the 3d cursor and the text cursor — left clicking sets your insertion point – and not compromise users’ familiarity with programs other than Blender.

More Annoyances

There's a small + widget for disclosing the Tool Shelf and Properties panels in the 3D viewport.
There’s a small + widget for disclosing the Tool Shelf and Properties panels in the 3D viewport.

Once you've toggled a panel on, there's no widget to make it go away.
Once you’ve toggled a panel on, there’s no widget to make it go away.

So you either need to size the panel down to zero or learn the keyboard shortcuts (you won't learn the keyboard shortcut by hovering over the original widget though).
So you either need to size the panel down to zero or learn the keyboard shortcuts (you won’t learn the keyboard shortcut by hovering over the original widget though).

Blender’s improved user interface — and it is definitely improved! — has two more major annoyances from my point of view. First, contextual tool panes have been added to the 3D view (which is great) but the process of showing them and hiding them is asymmetric. To disclose them you click on a little + widget — which then disappears. To hide them you either need to learn the keyboard shortcut, or use the mouse to scale them down to nothing (which causes the little + widget to reappear).

Screen Shot 2014-01-05 at 12.59.55 PM
To switch the viewport mode to a rendered preview, first you need to switch renderers.


Then you'll need to change the viewport shading mode to Rendered.
Then you’ll need to change the viewport shading mode to Rendered.

The render preview looks terrific but no UI affordances show up except for the damn cursor.
The render preview looks terrific but no UI affordances show up except for the damn cursor.

Second, with the advent of the new Cycles renderer, to get a live-rendered viewport you need to switch to the Cycles renderer (one step) and then in a completely different place you need to set the viewport mode to Rendered. For your trouble you are rewarded with a wonderful live-rendered view that gives you no UI affordances (e.g. you can’t tell what’s selected) but remains live for editing purposes. Ugh. So to make this workable, you then need to create a new viewport and tweak its settings.

And unlike every other place in Blender, the render settings are at the top while preview is at the bottom (this is the subdivision modifier settings)
And unlike every other place in Blender, the render settings are at the top while preview is at the bottom (this is the subdivision modifier settings)

To alter the render preview quality you'll need to dive deep into the render tab to Sampling (which is not only near the bottom, but collapsed by default).
To alter the render preview quality you’ll need to dive deep into the render tab to Sampling (which is not only near the bottom, but collapsed by default).

Finally, to modify the quality of Cycles renders — and spent quite a bit of time googling to figure this out — you need to delve deep into the rendering panel and — slightly hilarious — the place where you determine how many samples to obtain for a render is the only place I know of in Blender’s interface where the preview settings are at the bottom and the final render settings are at the top. If you’re used to Blender’s “conventions” everywhere else (e.g. subdivision settings) it’s always the other way around.

New functionality is being added to Blender with a much higher standard of usability than the older stuff.
New functionality is being added to Blender with a much higher standard of usability than the older stuff.

These are most of the first order problems in Blender today (as of 2.69). Clutter and ambiguity are also first order problems — I’d suggest that a lot of that could be improved simply be making a decision as to which slabs of functionality to hide by default. I hope we can some day get to second order issues, but on the positive side most of the new stuff getting added to Blender seems to have a much higher standard of usability than older features. E.g. to do a physics simulation you simply click on the Dynamics tab, select your objects, assign them some properties (e.g. passive rigidbody) and then click the play button in the timeline panel and it just works. More of that please! Similarly, the node-based material system associated with Cycles is very easy to work with (indeed, you don’t really need to use the nodes at all) although right now it’s missing a lot of functionality.

Blender 2.5 alpha 0

Sintel early render from Project Durian
Sintel early render from Project Durian

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
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.
    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!).

How I learned to stop worrying and love Blender

Blender's complexity is necessary, but some of the difficulty getting to grips with it stems from gratuitously different design decisions or easily fixed mistakes.
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
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.

[ Javascript required to view QuickTime movie, please turn it on and refresh this page ]

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.

  1. Oddly enough Preferences are accessed by “dragging down the menu bar”. WTF? Well, that’s how it works.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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).
  7. 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.
  8. Armatures and bones have their own independent layer system, so be prepared for completely orthogonal confusion when working with rigs.
  9. 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.
  10. 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.
  11. 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).
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. Note especially for Unity developers: the FBX exporter “bakes” subdiv modifiers (at “render” level) into meshes on export, so beware!
  18. And there’s a ridiculous number of useful tips and gotchas here.

Blender Revisited

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.