Wednesday, March 11, 2015

Some design proposal I made recently on open source projects

It's been a quiet month for me. You can say that there has been some progress on a personal game project I am working on.

Blender - getting auto focus curves of selected channels and auto-hide unselected channels functionality
Meanwhile the thread I started at blender artist proposing better workflow for animators has grown into something productive.
Severin has implemented one of the features that I proposed. it got a lot of support from another ex-Maya animator Fahr.
The feature is to add the "Auto-focus curves of selected channel(s)"  functionality in blender. It works like this:

1. First you enable it from the "view menu" (new entry)
2. Then you get this new behavior. Every time a channel or multiple channels are selected, Blender auto-focuses their curves.
The other ex-maya animator Fahr also requested that we add to the feature another useful behavior from Maya and some other 3d software- The ability to also "auto-hide unselected channel curves".

You see Blender by default makes the user manually hide the channel curves they dont want to see. As a result by default it shows all channel curves and you have to do a lot of manual clicking if you want to only see the channel curves that you are working on. When other channel curves are visible, they get in the way because you can accidentally select another curve or its keyframe while working. It also creates a lot of frustrating visual clutter in the graph editor. In contrast Maya shows only the curves that are of the selected channels.

So what happened was that Severin actually implemented those two features as one. 
You can grab a blender build and try it out for yourself here:
I proposed some changes of course:
The patch was however met by a lot of opposition from two die hard blender animators/developers. I suggested that we split this into two auto-view features that are optional. And what ensued was a long conversation that turned the proposed new feature patch into a design task.

Two ex Maya, now blender animators (me and Fahr) are trying to convince two Blender developer/animators (Cessen and bassamk) that if the feature is not implemented as a workflow mode, it will loose a lot of it's convenience and usability.
It seems like the argument is mostly on the "hide unselected channels" part of the feature and how that is being triggered.
Their stance on the subject is that:
  • It is cluttering the view menu - it is already cluttered enough already!
  • It's not their preferred way of working , but they see some merit in it.
  • it might confuse some users who enable it by mistake- as it changes the show/hide behavior of the software- merging selection of channels with their visibility toggle switch.
--a proposal was made to make this work by holding a modifier key each time when clicking on the view icon rather than the channel name to trigger the hiding of other channel curves and the focusing on the selected ones.
Our stance is:
  • The view menu should be cleaned up anyway with nested menus. This should not be a reason to complicate its design so much.
  • We are confused as to why there is so much opposition, since it does not nullify their preferred workflow at all. It is optional.
  • We firmly believe that this is not a problem, since it is already done that way in other software and is even a preferred way of work to many animators who are converting to blender. Since it is not going to be the default behavior, the user will need to toggle it on and it's name is self explanatory and clear enough to communicate to the user what is being enabled.
    • Both me and Fahr strongly oppose that proposal to changes in the design since it makes our proffered way of working very inconvenient as compared with how it is done in other software and was originally done in the initial patch.
      • It enforces the need to hold a modifier key each time, which gets even more convoluted when you want to apply the behavior on multiple channels- holding multiple modifier keys to do it.
      • To add to this, the proposal to click on the "view" icon rather than the channel itself also reduces the clicking pixel space.
Trying to salvage what we have, and following on a suggestion from blender artist I proposed that we add both the auto-view behaviors and also have the same functionality triggered by holding a modifier key (as Cessen and Bassamk suggested). If you are an animator using blender and have in the past used Maya, surely you know why this feature is extremely useful and why forcing a modifier key would mean that it is no longer automatic. If so, please take the time and write down what you think at the blender artist thread. We need suggestions as to how to solve this problem.

Sometimes politics is part of it and you have to be careful. For example if you post any links to videos showing how a feature works in another 3d package, that is met with a lot of disapproval on the blender bug tracker. They take it as a literal request to make blender be like the other software. Instead what needs to be the case is explaining why feature X and Y is very useful and why it makes other software a better tool for the job. I tried to do that and it didn't seem to change their minds. 

Solution to the fake user problem with Actions
At least that is something that I managed to get Aligorith to address and change with a lot of help from the blender artist community and some of the other blender developers. So in the end, blender devs do listen to their userbase. Even if we tend to get annoying and melodramatic at the forum some times. :)

X-sheet dock design - an alternative way to manage layers. Layer tagging 

Now moving on, here is another wild proposal I made to both Drawpile and Mypaint developers.

I took the time to create a quick mockup and explanation as to how it could work:

Under the hood x-sheet dock is just managing the same layers that are in the layer's dock. It's just doing it in a radical new way!
key pose drawings can occupy frame ranges. So When you extend a drawing to occupy three frames instead of one, the x-sheet dock technically creates two new copies/clones of that layer above or bellow it (depending on which of the two arrows the user dragged)
when playing from xsheet, mypaint can operate in solo layer view: like the "hide" feature, but hides all other layers except the selected one.
Onion skin mode: hide all layers above the selection and show the ones below it with adjusted opacity
The ability to scribble annotations is very very nice, but not a must have.
Copying and pasting+insert drawings could be done with the right click menu.
Deleting a drawing should move all the drawings bellow it upwards- filling its spot, so as not to have a missing drawing in its place.
moving a drawing in the x-sheet could be done by just dragging it.
Other features needed:
Export to animated GIF
Export individual layers (this already exists in a way: ORA files are actually zip files containing the >layers in PNG format)

In any case, I always find it fun to make proposals to open source projects. More often than not it is very important the way you make it. Having a mockup certainly helps a lot to communicate the ideas. Having other software case examples does as well. 

No comments:

Post a Comment