Dev:Source/UI/guidelines

提供: wiki
< Dev:Source‎ | UI
移動先: 案内検索

Blender User Interface Principles

The Purpose of This Document

This document does not aim to provide specific solutions or suggestions, but instead to provide overarching guidelines for Blender UI development. It is a starting point to agree on before delving into specifics.

Blender Is For Artists

It’s important to keep in mind that Blender is a tool for artists to create animated films or games. It can be used as a complete pipeline solution or as part of a larger pipeline. Blender is not a programming API or scripting environment; these are secondary to the main focus.

Design Is How It Works

It's easy to dismiss user interface design as being the outer layer, only the veneer, or just the visual component of an application. However, successful UI design is much deeper than that. It's not about how it looks, but how it works. One must consider the user experience from the start, and then work to make that possible through engineering and visual communication.

User-Centric, Not Code Centric

The UI and termiology should focus on ease of use for users and reflect the users' mental model. Case in point: The 'redo' panel. Calling it the 'redo' panel makes no sense to the user. Conceptually you are tweaking the current tool, even though internally it may be stepping back and then re-doing operator. We should start with the user in mind.

Using Established Standards vs Being Better

Standards help to ensure consistency across applications for users, thus reducing learning time and helping to prevent user errors.

A user can reach maximum automaticity quickly if he/she is able to get started with Blender, using standards that he/she already knows. This is what an intuitive interface means: relying on what users already know (from the real world or from other apps) to lessen the amount of new things they have to learn.

However, we must also acknowledge that the only way to make Blender a better app than the competition is to be different in certain ways. You can only be better by being different. This does not mean that being different is necessarily better either.

Blender should strive to use established standards for interaction unless we find a superior solution, in which case we should not hesitate to use that.

New Users vs Experts

It turns out that most users are neither beginners, nor experts. Most users are beginners for a small amount of time, and spend most of their time as intermediate users, before finally becoming an expert.

The length of time they are beginners is the responsibility of the user interface, and as such it should strive to make it as easy as possible to progress. Likewise, Blender should focus on efficiency, to let users accomplish tasks with as little fuss as possible.

Non-modal

From UsabilityFirst: A type of interface where the user is free to perform any action in the interface and the interpretation of user input is the same at all times. That is, mouse clicks always have the same effect and keystrokes always have the same effect. This is particularly in contrast to modal interfaces, where the interpretation of input can vary depending on the current state or current settings (the “mode”).

Blender should strive to be as non-modal as possible. Modes means more than the explicit modes in Blender (Object Mode, Edit Mode etc): It means that tools and settings are presented in non-blocking areas instead of popup menus that block the users workflow. This eliminates guesswork, because the user is able to see the result of a setting immediately in the context of the scene.

Deference

Blender is a tool for creating visual content. The UI should get out of the way, and not steal attention or valuable screen space. We should not confuse and distract users with too many boxes and dialogs that obstruct the users main locus of attention: creating artwork. This also means we should make sure the UI doesn’t take up too much room. The user should have maximum space for concentrating on their artwork without feeling cramped by UI elements competing for attention.

Tools

Blender should provide a visual and spatial way to access tools. Hotkeys may be used, but never as the only or primary way to enable a tool.

In Blender we use the Select -> Tool -> Tweak interaction model. This means that the user is presented with options to tweak settings *after* a tool is invoked. Case in point: Subdivide. First you select an item, then invoke the Subdivide tool, and finally you set the amount of subdivisions.

The advantage of this paradigm is that the user is able to see the result of the setting immediately, and is able to inspect the result while making changes to the active tool.

Visual Scanning

In Blender we have many settings and options. With such a large list, we should optimise for scanning through lists to check settings on and off. This means optimising for vertical eye scanning down long lists.

Direct Interaction

Whenever possible, allow direct interaction in 3D space rather than abstract number fields and setting lists. Imagine only being able to translate using numerical values - this would be annoying, because you’d loose your sense of where your object is in the scene. This can be extrapolated to many other tools which are currently driven by numerical input rather than visual interaction. Direct, visual manipulation is preferred over numerical input.

Motion

Motion in UI’s can help make transitions between UI states easier to comprehend for the user. It gives the user a sense of place, and clarifies relationships and the movement of objects. An example of this working well is when changing views in the 3D View. The view graciously animates from its current to selected angle to maintain a sense of space.

An example where this works less well is with reordering modifiers: They jump instantly from their prior place to the selected place, which makes reordering modifiers an unnecessarily confusing experience.