Tuesday, February 9, 2016

CNY2016 "Monkey" - Blender Bugs Retrospective

As usual, while trying to actually make some art with Blender, I came across a whole bunch of bizarre and sometimes nasty bugs which got in the way a bit. Since posting the video, I've begun investigating and fixing these - though in a few cases, it's not so straightforward to fix.

While some of these are the big usual suspects (e.g. it would be really great for poor draftsmen like myself to have "autocomplete" working, and the having the ability to parent strokes to objects/bones would really help for doing things like calculating motion paths), there were also a number of interesting "smaller" issues which came up repeatedly.

As this list was starting to get a bit long, I decided to split it out into its own post instead.

High Frequency/Priority:
* Numpad-0KEY to return to camera view after accidentally bumping the view. Currently requires entering and exiting continuous drawing mode.  (In fact, many other forms of camera navigation would be really good at this point).

* Review how brush sizes are set for eraser and sculpt. I ended up wasting heaps of time trying to resize those in a "safe" way, by adjusting the size in an empty area before moving forward. 
  -> For eraser sizing, I should probably go ahead and move the settings to tool settings (from the user prefs), and then make the eraser brush controls easily accesible.
  -> For the interactive "FKEY" tools, I'll look into making them print what setting they're modifying, as it's currently impossible to know if you've used the right hotkey to modify what you thought you were modifying.
  -> I'm beginning to think that instead of adjusting view zoom, scrollwheel should default to adjusting eraser size first, and zooming second. Even better though would be if we could properly use the Wacom Tablet API's and make it so that the 4 preset modes for the wheel on the tablet could be put to good use for controlling this instead.

* If a layer has zero opacity, its points should not be editable. Sculpt brushes and the like should not create new keyframes in those cases, as they shouldn't be operating on those layers at all.

* Smoothing/Autocomplete/Thicker+Softer Strokes/Unified Anim+GP Dopesheet - Yeah, I know, they're really needed... Drawing currently feels a bit "limited" in places. However, these are also some rather complex issues... so, don't expect any quick fixes for 2.77 here (unlike the others, which are generally small enough to be easily fixed)

* The "speaker" icons in the Dopesheet for GP Layers don't mute the animation, but instead hide the layers!  Dunno how many of you noticed this (or didn't) and got confused/miffed when things started going wrong. Sorry guys - major fail on my part here... argh! :/

* We need another way to quickly activate the eraser - (operative word here) a thin eraser - that can be activated while drawing a stroke, that is able to get into tight spots. Sometimes, pivoting the pen to eraser is a pain (and can result in loss of control, especially if the eraser brush turns out to be the wrong size!).

 (The RMB option turned out to be quite buggy when I tried... Still, that wouldn't solve the wrong eraser size issue.  That said, while fiddling around with my tablet settings the other day, I found an interesting option where instead of hovering as you use the side button, you can make it so that those act more like modifier keys, where you need to still press down on the tip to use those. I really should give that a test run one of these days - or, maybe someone with a wacom may like to try this on our behalf and report back their findings!)

Medium Priority - Confusing/Annoying but not Fatal:
* Renaming layers doesn't trigger updates in the Dopesheet channel list immediately

* Deleting keyframes in the Dopesheet sometimes didn't refresh the view until the mouse was moved

* I've finally come around to the idea that perhaps the Dopesheet should show the extents of the current frame range. The question now is, how do we modify the Preview Range drawing so that it's more obvious when it is enabled, to avoid having a confusing situation that we don't currently have.  (My first thoughts here are to try doing a dotted orange line to delineate the endpoints...)

* Mode confusion - I was stumped for a while after appending/linking in a group why I couldn't move anything. It turned out that I had been accidentally transforming a whole bunch of different verts all over the show for a few seconds, as I was still in strokes editmode.  Oops!  (Short of actually increasing the number of GPencil editmode checks all over, this may be a harder problem to solve)

* Viewport DOF and Grease Pencil drawing is out of whack. No matter what I did, I couldn't get my strokes in focus, while the background stuff kept refusing to blur (unless the FStop was set to 0, and blurred out the strokes too)

* Perhaps we need a "gather" brush, to pull clusters of parallel strokes inwards together to form a single clearer stroke. The pinch brush didn't quite seem to do the trick, while "Push" kept leaving stragglers

* Maybe there is something to configure this, but for some reason, the direction of scrolling seems to be inverted for the tablet scrollwheel - CW was decreasing, and CCW was increasing! Maddening...

Bizarre Bugs
* For a brief period, I couldn't use E+LMB (sculpting) via the mouse. I could only do so when using a tablet. The most bizarre part of this whole affair though was that E+LMB was somehow activating the eraser instead when this would happen!  (While I had been thinking that perhaps the "thin eraser" could be nicely activated by using EKEY in continuous drawing mode, I was less than impressed to see it reappear here... and even less so when the accidental eraser invocations also brought back the eraser size invalidation bugs)

Random Ideas
1) Would anybody be up for using a brush that can "paint convex-hull fills"?  Kind of like painting blobbies, which would be implemented as filled poly's?   Watching Daniel or Matias's work (e.g. see the Caminandes storymatics for examples) of how they create fills, it feels like we should have another way of doing this...

2) While waiting for a proper autocomplete facility, it might be an idea to introduce some features to make it easier to cause strokes on frame B to move towards those on frame A.... hang on, that's exactly what the autocomplete does... gah!

Closing Words
Every time I try using Blender to make some art, I never fail to be surprised by the kinds of weird tiny quirks (some of which turn out to be really evil and insidious) are actually lurking out there, and which apparently most artists don't seem to run into (on one hand, yay! on the other... crap!)

However, for me, these often seem to stick out like a sore thumb... Maybe it's because I'm just more familiar with trying to pick out things like this when they happen (much like animators are better able to detect subtle nuances of quirks in the way things move - things I'm often blind to currently). Or maybe, it's because I really enjoy this kind of "product development" work. Or maybe, it's because I know full darned well that if I come across anything sufficiently small like this, that there's a really good chance that it'd be one of those things that's dead easy for me to fix, making not fixing it kindof a bad thing... case in point, my first Firefox Addon (now official approved... maybe the events of my previous rant were because their servers hadn't fully flushed everything through!)

So, the lesson that devs can take out of this: You really need to "dogfood" your work from time to time! That is, you don't just do a "I'm just going to fiddle around with a few buttons and call it a day", but rather, "here's a little project that I'm going to get finished today.... oh, and it has to have x, y, z, and to do that, features a, b, c, d, and a few more that you don't realise yet need to be exercised". Keep a notepad at hand for jotting down anything that seems vaguely "off", confusing, or buggy as you're working, and then commit to reviewing and addressing these after you've completed your project. Chances are, you'll end up with a decent stash of things that need attention!


  1. On "paint convex-hull fills," I expect you're talking about something like the brush tool in Flash and Toon Boom, which would be a dream come true for us hand drawn animators.

  2. Second the flash 'brush' tool, it's one of the best digital drawing tools ever!

  3. Hi there

    I would really like to help you with the "Random Ideas" (about using a brush that can "paint convex-hull fills")
    but I don't know what you are talking about. :(
    I am a basic user of Blender (I mean GreasePencil), Win8.1 with an Huion tablet...
    So, if any help I am here (well not right now since I went into a surgery, but after recovering, by the end of this month