利用者:BeBraw/UI Discussion

提供: wiki
移動先: 案内検索

WIP!!!

In this document I will try to go through the main strengths and weaknesses of the current user interface and provide some possible ways in which to develop it further. First I will discuss about various user groups which Blender has. After that I will current functionality and form an overview. Finally I will build on this and provide some alternatives for future development.

History

I have been using Blender since 2.37a (c. 2005). I don't have significant experience with 2.2x and series released before. I have tried older versions in some occasions though. It seems Blender has retained some aspects from those. These aspects include windowing system and screens. One of the biggest changes introduced to 2.3x series was the panel approach in the Buttons Window.

Since 2.37a I have witnessed immense growth in sense of functionality. I have contributed tiny bit to this growth myself. Blender has reached its commercial counterparts in this sense and in some cases even surpassed them. On the other hand this has meant that the growth has been organic, not as planned as it should have been perhaps. On user interface level this has meant that the it has become more complex and new interaction ways have been created. This has caused some redundancy in terms of functionality and made some parts of Blender inconsistent with each other.

Often Blender is referred as software that is hard to learn. This is true to some extent. One of the factors contributing to this is its inherent paradigm on which it is based upon. Blender was originally an inhouse production tool which meant it was optimized for working speed user interface wise. This meant that it took an approach to 3D that no other popular suite has done. Blender is much different than the mainstream suites in use. This is both benefit and curse. It is also something that cannot be totally alleviated.

User Groups

Blender is used by many different groups of users. It has both hobbyist and professional users those of which hobbyist ones form most of Blender's userbase. Blender has a strong user community that has helped it to grow and to sustain development. This is evidenced by multiple of Blender related sites available and especially by major projects such as Orange, Peach and Apricot.

Besides those two main groups there are subsegments for both of them. It is possible that the user is only interested in modeling for instance. Another one may use Blender only for compositing and third one for editing videos. Some of the users might use Blender just once or twice each year. Some might use it every day.

Different users value different things. Needs of different user groups may contradict with each other. Does requirement for speed contradict with learnability? Often people use word "intuitive" in this context. Essentially "intuitive" means that the user is able to use existing mental models to learn something new. In other words the learning phase is immensely shorter than it would otherwise be.

It is interesting to note that what might seem intuitive to one, is not that to some other. In this case it is possible to say that something is actually counter-intuitive to the user. The user has to relearn and get rid of the old mental model to become effective. This makes learning considerably harder and might help to explain why especially people coming from other 3D suites find Blender especially hard. This might also explain why people picking Blender as their first 3D suite find it easy after they tackle the learning curve.

Current Functionality

Currently Blender offers a wide range of functionality. This functionality is split to multiple different window types. Current user interface is centered around the Buttons Window where object settings and some tools exist. Blender's functionality can be extended by using Python. The users can write their custom scripts to add functionality they need. Also texture and sequencer plugins are supported.

...

3D cursor

One of the main features of Blender separating it from the rest is its 3D cursor. It is considered so important that left mouse button is bound to it by default. 3D cursor is often used as a reference point. I tend to use it most of the time by snapping it around without actually clicking anywhere. This is the reason why I once wrote a patch that allowed locking it and making it possible to use left mouse button to select (box, lasso, etc.) instead. 3D cursor lock might not be the best way to make 3D cursor more powerful but I believe it is a step to the right direction. I believe the concept of 3D cursor should be explored further.

Panels

  • size problem (ie. some are wider/taller than others -> not good with hori/vert layout)

Tools

  • tools in both menus and buttons window -> accessibility
  • tool options sometimes only in buttons window!!! (not a good thing as the user might skip them altogether. see remove doubles for instance). a solution might be to have options in 3d viewport itself
  • important to have atomic, easily programmable tools (tool is just a node tree consisting of operations linked together) that work dynamically with the ui. this could also help in maintaining consistency! (needs way to map tools in different contexts to each other in some way)

Buttons Window

  • restrict buttons window to contain only settings???
  • rethink layout (can be made simpler, more efficient)

Python

  • current support not taking all the advantage out of it
  • Python could function as a glue for Blender (ie. define UI (panels + bind hardcoded funcs to UI))
  • allow further customization, specialization (not all users need all features. might be nice to have Blender lite for learning purposes (disable physics, provide nice defaults etc.))

Misc.

  • proper support for templates essential!!! (rendering templates etc.)
  • empower community to build/customize Blender (community aspect of open source. make user your developer (actually happens now, not just on level that is possible to attain)
  • first impression counts (make blender more welcoming to new users. welcome screen? saner defaults?)
  • don't dumb things down. retain good things and provide nice defaults while allowing user to make mess of his own if he wants to
  • make it possible to abstract functionality (good for learning). it's important to remember that the user has to learn what abstraction is about at some point though should he want to understand the issue better... generally software tends to drift towards more abstract presentation ...
  • modes: -get rid of hidden modes (see IPO window, keyframe mode in 3D view)?
  • hidden functionality! expose hidden functionality better
  • rethink menu approach (should menus actually contain brief description about func when mouse is hovered on it?)
  • remember to look at the big picture. don't get stuck at details! -> consistency, coherency, clarity, clear architecture design to enable developers to make right things easier (compare to current architecture -> leads to mess sometimes :P )
  • stacks. currently Blender contains ~many~ different presentations of stacks. it should be possible to make this more coherent
  • IPOs. currently select channel -> create IPO. why not to think other way? create IPO curve -> link it to wanted channels (nodal approach would work for this? see OOPS for reference -> generalize linking even further?)
  • layers/groups/render layers -> redundancy -> simplify/unify