Posts Tagged ‘open source’

How I learned to stop worrying and love Blender

Friday, May 8th, 2009
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.

Xee

Wednesday, April 22nd, 2009

I came across Xee while following a link on Reddit (“PSD is not my favorite file format“). It’s an open source replacement for Apple’s Preview app. Also linked to this page is The Unarchiver, a replacement for OS X’s built-in unarchiving software. It’s not that either of these programs is especially deficient, but Xee and The Unarchiver are simply brilliant. Xee not only runs fast and light, it opens almost any image format you can think of, while The Unarchiver does the same for archives.

The only thing I don’t much care for are their icons.

Edit: actually Xee has two major annoyances.

  1. It won’t let you disassociate file types. Once you assign it a file type, you’re stuck with it.
  2. It’s missing a lot of the newer features of Preview (notably editing features).

The Unarchiver still rocks though.

Illustrator Replacements, Cont’d

Wednesday, May 28th, 2008

It seems like this is a popular topic right now. In Drawing Conclusions Jon Whipple provides a very thorough comparison of Intaglio, Vector Designer, LineForm, and ZeusDraw (he dismisses some contenders for being too expensive, or having terrible websites, and InkScape for running on other platforms — which seems a bit odd since Illustrator runs on other platforms and is expensive). I do like the fact that Mr. Whipple is well aware of Illustrator’s numerous shortcomings (unlike some reviewers who simply assume it’s superior to its competition in all respects).

It’s a long article, so I’ll cut to the chase and say he picked ZeusDraw as his favorite. I’d not heard of it before and will check it out , but he found pretty crippling limitations in all the programs (as did I).

Afterword: after using ZeusDraw for five minutes, I’m pretty irked by the interface. Some things are great — it’s amazingly easy to set up custom brushes, although there aren’t a bunch of nice presets — but the user interface is unstable (it morphs into different forms based on the selected tool, and often deselects the object you’re working on for no reason) and the bezier tool is gratuitously different and worse (i.e. less interactive) than the one we’re all used to.

 

Illustrator Replacements

Friday, May 23rd, 2008

While Photoshop is seeing a bit of competition from Core Image based apps, Illustrator is seeing a lot more competition thanks to Cocoa’s excellent support for typography and Quartz’s support for PostScript (i.e. PDF). The serious contenders I’ve come across so far are:

  • Intaglio — the closest thing to a lightweight Illustrator replacement
  • Lineform
  • VectorDesigner
  • DrawIt
  • EazyDraw

And then there’s Inkscape, which is free, open source, and cross-platform, and — despite being built on X11 — quite usable (unlike The GIMP, showing us that The GIMP’s UI isn’t X11′s fault).

The best discussions of Illustrator alternatives I’ve come across are this head-to-head comparison on The Unofficial Apple Weblog and this collection of interlinked reviews from MacLife. Neither review discusses all the available options.  TUAW’s article covers DrawBerry, which I don’t consider a serious option. Neither review mentions Inkscape (screenshot below):

All of these programs have free demos (or are plain free) and are worth a look. DrawIt has the most radical interface and, if it actually allowed you to import and export vector files (such as SVG and editable PDFs) it might be a lot more useful. VectorDesigner suffers from this problem and the inability to transform more than one vertex at a time. Lineform is hampered by a lack of useful primitives (such as polygons and stars) but this doesn’t affect its use for freeform illustrators.

In general, for simple stuff, most of these programs are remarkably less annoying to use than Illustrator, but remarkably less precise. Illustrator offers powerful snap and guide options that none of these programs come close to matching, and explicit control over the rendering of stroke joins, dashed lines, and so on. Ultimately, I think two of these programs (Intaglio and Inkscape) are perfectly useful for almost anything , but ultimately only Inkscape offers anything approaching Illustrator’s precision.

In this case, the best option also happens to be free. Interesting times ahead for Adobe.

Ubuntu vs. Vista

Thursday, May 8th, 2008

I started to install Ubuntu 8.04 LTS on my Vista laptop but ended up bugging out. I’m writing this blog entry in Ubuntu having not installed it, but running it off the optical drive on my Dell laptop. The reason I bugged out is that Ubuntu can’t tell me what’s on the partitions it sees during installation, and can’t resize NTFS partitions (or mount them). From what I can tell of Ubuntu, it’s very slick, but I do have a number of observations based on what little I’ve seen so far.

Screen real estate, especially vertical real estate, shouldn’t be wasted, especially in these days of wide screen displays. Ubuntu’s default Gnome setup wastes quite a bit of vertical real estate:

  • First, there’s the global Apple-like menu bar. Unlike Apple’s menu bar, it’s essentially just an app launcher, which means that 99% of the time it’s just wasted space. Not only is this a waste of vertical real estate, it’s a waste of a screen edge (very valuable — see Fitt’s Law). The Mac’s UI remains the only non retarded implementation of a menu bar in a major OS.
  • Ubuntu still wastes title bar space even for maximized applications. Windows also commits this sin, but at least it doesn’t have the pointless app launcher above it.
  • Edit: I forgot to mention Ubuntu wastes space for a “start bar” at the bottom of the screen even though that functionality is actually provided by the space wasted up top for the app launcher.

Installation

  • During installation, the time zone requester is extremely annoying. I live in Alabama and finding a “dot” corresponding to the time zone I’m in was quite fiddly.
  • During installation, touching the trackpad is treated as a click. This actually led me to accidentally click potentially fatal buttons. Bad. I’d err on the side of not treating random things as clicks in an installer.
  • Not strictly an installation issue, but getting onto my wireless network was needlessly painful. I needed to enter my 128-bit WEP password but it’s too stupid to (a) recognize the kind of password being entered automatically or (b) try all the obvious options automatically, meaning that the proverbial clueless user will have to know that it’s a 64/128-bit hex password and whether or not to use a shared key and so forth. On a Mac you just selected a network and type in a password and your computer, which is good at such things, figures it out. Vista has to be the worst of course, since it makes you confirm the password (like I really wanted to type that damn thing in TWICE).
  • The preceding issue is magnified by some pretty dumb behavior in various nooks and crannies. I have two wireless routers at home and log into them separately (but with the same 128-bit code). Ubuntu’s Mac-like keychain offered to store the settings but stored them incorrectly, so after waking from sleep I lost my network connection and couldn’t restore it without typing the long string in again, which I didn’t have handy. A Keychain tool (there are two and only one seems to work) appeared to let me copy the string, but I couldn’t paste it into the WEP login (and I had previously pasted stuff into it, so I’m guessing the copy operation silently failed in Keychain). But by then I’d deleted the erroneous keychain entries, so I was screwed. At this point I gave up on Ubuntu.

Digital Media

  • When I visited Hulu.com it told me to install Flash and sent me to Adobe’s page. Adobe asked me which of three archive formats to download (gz, rpm, or yum???). I downloaded each and none worked. Later, I tried my own video code (which simply tries to display Flash video naively), which caused Firefox to display a missing plugin graphic. Clicking that automagically installed the right stuff (and now Hulu works). Score one for Firefox/Ubuntu and zero for Adobe.
  • None of the WMV or MOV videos I tried would play. I got a weird looking player interface and a black screen. All the FLV media worked just dandy. I assume that SOME MOV or WMV video will work, but none of the codecs I use, and I tend to use pretty nice codecs.
  • Shockwave stuff doesn’t work… I thought the plugin had been ported to *NIX but apparently not.

Aesthetics

In my opinion, Ubuntu 8.04, despite lacking the GPU-fluff of Vista or even OS X’s understated elegance, is a very attractive OS. It’s tasteful, understated, and tidy in a way that even earlier releases of Ubuntu weren’t. I don’t care for the heron desktop, it seems desperately trendy (with the bezier swirls that seem so popular these days but not so well executed). Someone has gone to the trouble of trying to make all the included apps look reasonably similar.

Final Thoughts

Ubuntu is making Desktop Linux almost credible. I’ve been around long enough to have been excited by FreeBSD distributions. I remember installing a fairly early RedHat on my old PC (it took three of us to even get it vaguely working). The first Linux distribution that even vaguely tempted me was Knoppix (to which the Linux world owes a huge debt, and which should make Microsoft and even Apple pretty ashamed — if one guy can make a self-configuring Linux distro that runs on almost anything, why can’t Microsoft do the same for Windows?)

I’m definitely thinking of quickly rebooting into Vista, backing up any files I really want to keep, and then cheerfully overwriting Vista, but only because I’ve found Vista so annoying. (My major gripe with Vista right now is probably not purely Microsoft’s fault — somehow the permissions policy on my machine have been set such that I can’t install any new software or even updates. It’s a work machine which had Vista Business installed on it for me for testing purposes, but I can’t really use it and our Office is still mainly XP-based so it’s not well-supported.)

All that said, if it weren’t for Flash support, I would find Ubuntu pretty intolerable. One of the few things I find this laptop useful for (aside from testing stuff under Vista using whatever versions of stuff it has on it) is watching Bones on Hulu.com (I’m catching up having just decided I like the show, and this saves me buying the DVD box sets or paying $2/episode on iTunes). If Flash didn’t run under Ubuntu, then I’d probably be rusted on to some flavor of Windows.

That said, it annoys me that Apple doesn’t support Linux with QuickTime. I suppose that QuickTime would make Linux a better alternative platform to the Mac for digital media across the board (and Linux is already very credible in the 3d arena).

Addendum: I just realized that Ubuntu doesn’t seem to know how to put my laptop to sleep. Whoops! If this turns out to be the case, then that’s a show-stopper.

Follow-up: I found the appropriate setting, but it seems that suspend mode is not supported (as I found out later after, apparently, leaving the laptop running all night. That’s a bit of a show-stopper.

Final, Final Thoughts

With the problems I ran into, there’s no way Ubuntu will replace Vista on my laptop just yet.

I haven’t explored Ubuntu very deeply, but I’ve basically looked at three things: the web-browsing experience (fairly crucial, since I’m a web developer), wireless networking, and sleep behavior. In those three areas, respectively, I find:

  • a profound lack of polish (although, in part, this was because of Adobe’s stupidity — why not tell me which install to use with Ubuntu or automatically detect which one to give me versus giving me three options that don’t work) and serious incompatibilities with common digital media
  • usability issues and serious bugs, and
  • complete incompatibility with some pretty common hardware.

Given that free software developers tend to concentrate on the kinds of things they use, and that web browsers, wireless networking, and suspend mode are pretty central to the lives of almost any developer I can think of, it’s hard to imagine that quality and attention to detail will be better in the components of Ubuntu that are less central to a developer-centric world. So I’d rather not find out the hard way right now. Wake me up for the next major release.

Microsoft Vista Business: 1, Ubuntu 8.04 LTS “Hardy Heron”: 0.

Truly final aside: I did the final edits to this post on my Mac Pro, since my Ubuntu laptop has lost its internet connection and I don’t see the point in getting it going again.