A developer designing a user interface for a 3D application has to resolve some issues that don't arise in 2D user interface design. 3D applications have to provide easy and intuitive interaction in three dimensions with a 2D pointing device. Also, because users of 3D applications often need convenient access to all sides of the objects they view, many applications need to offer more than one way to view or edit scenes or objects.
This chapter provides general information that's useful for designing a 3D application that is consistent and behaves in ways that users expect. It covers these topics:
“Making 3D Functionality Available” provides general guidelines for mapping functionality to the mouse buttons and for using modifier keys.
“Pointer Shapes for 3D Functions” discusses the appropriate pointer shapes for some common functionality in 3D applications.
“Resizing the 3D Viewing Window” describes how the contents of the 3D viewing window changes as the user resizes the window.
Because of their general nature, the guidelines discussed in this chapter are especially relevant if you can't find a guideline for a specific situation and therefore need to extend existing guidelines.
A 3D user interface designer typically has to make 3D functionality easily available within the constraints of a 2D input device and standard keyboard. This section provides an overview of two primary ways of doing this:
Guidelines for specific cases, for example, use of modifier keys during viewing, are discussed in detail in later chapters, where applicable.
The section “Mouse and Keyboard Hardware” in Chapter 1 discusses the rules for mouse input that apply in 2D applications. They can be summarized as follows:
The left mouse button provides basic functionality such as selecting and dragging objects.
The middle mouse button is reserved for primary copy and paste operations and for advanced user shortcuts, which are also accessible through some more obvious interface.
The right mouse button is reserved for popup menus.
The most important functionality is mapped to the left mouse button. For example, if viewing is the user's primary task, the left mouse button provides access to viewing functionality such as navigating through a scene. If editing is the primary task, the left mouse button provides access to editing functionality such as selecting and manipulating objects.
Modifier keys used in conjunction with the left mouse button provide additional functionality. For example, if the user is performing free translation (the default), no modifier keys are required. For constrained translation along one axis, the user has to hold down both the left mouse button and the <Shift> key. See “Free and Constrained 3D Manipulation” in Chapter 15.
The right mouse button is reserved for popup menus which provide access to important functionality. See “Popup Menus” in Chapter 8.
Using modifier keys allows you to map additional functionality to the left mouse button. Each modifier key extends the available direct manipulation functionality in a consistent way without compromising the functionality of the other mouse buttons. This consistency helps users learn when to use each modifier key. Table 12-1 lists the “3D definitions” for the <Shift>, <Ctrl>, <Alt>, and <Esc> keys.
Constrains or unconstrains the default behavior for the left mouse button. For example, shifts from the default unconstrained translation in two dimensions to constrained axial translation in one dimension, or from the default constrained rotation in two dimensions to unconstrained free rotation in three dimensions. (See Chapter 15, “Manipulating 3D Objects,” for how the <Shift> key modifies the default translate, rotate, and scale behaviors.)
Provides an alternate behavior that isn't thought of as constraining or unconstraining the default behavior for the left mouse button. For example, if users drag a translation plane using the left mouse button, the object moves along the plane (the default behavior). If users hold down the <Ctrl> key while performing the same drag operation, the object moves perpendicular to the plane. (See Chapter 15, “Manipulating 3D Objects,” for how the <Ctrl> key modifies the default translate, rotate, and scale behaviors.)
Provides access to a view overlay as long as the <Alt> key is pressed. Returns the user to the previous mode when the <Alt> key is released. (See “View Overlay” in Chapter 13.)
Performs mode switches, for example from view mode to edit mode. Note that this use of the <Esc> key is consistent with the OSF/Motif Style Guide, which recommends using <Esc> to cancel an operation. In effect, you are canceling (exiting) one mode and entering another. (See “Separate View and Edit Modes” in Chapter 13.)
If your application uses the <Shift> key to constrain or unconstrain actions and uses the <Ctrl> key for alternate behavior, make the combination of the two available where it makes sense.
For example, the <Shift> key constrains scaling to enlarge or shrink the object in only one dimension rather than the default uniform scaling operation (enlarging or shrinking the object simultaneously in all three dimensions). The <Ctrl> key provides the alternate behavior of scaling around the opposite scaling handle rather than the default behavior of scaling around the center. Using the <Shift> and <Ctrl> keys in combination allows the user to perform constrained scaling around the opposite plane. (See “Scaling 3D Objects” in Chapter 15.)
To provide mouse functionality that matches user's expectations in a 3D application...
Assign primary functionality to the left mouse button.
Use modifier keys in conjunction with the left mouse button to make additional functionality available.
Reserve the middle mouse button for primary copy and paste operations and to provide access to advanced user shortcuts that are also accessible via a more obvious user interface.
Reserve the right mouse button for popup menus.
When deciding on the use of modifier keys in a 3D application...
Use the <Shift> key to constrain or unconstrain the default behavior of the left mouse button.
Use the <Ctrl> key to allow alternate behaviors that aren't thought of as constraining or unconstraining the default behavior assigned to the left mouse button.
Use <Shift> and <Ctrl> together where it makes sense to provide alternate behavior that's also constrained or unconstrained.
Reserve the <Alt> key for a view overlay (see “View Overlay” in Chapter 13).
Reserve the <Esc> key for mode switches, for example, switching from view mode to edit mode.
General guidelines for pointer feedback for all applications in the IRIX Interactive Desktop environment are discussed in “Pointer Shapes and Colors” in Chapter 11. This section discusses additional pointer shapes specifically designed for 3D applications.
Using the correct pointer feedback is crucial in a 3D application because users typically need to work with a great variety of functions, and these functions are often accessed using the left mouse button in conjunction with modifier keys. To help users recognize which function they are currently accessing and to help them learn the mapping between modifier keys and available functions, display standard pointer shapes whenever the user accesses common 3D functions. Table 12-2 provides an overview of the common 3D functions and associated pointers; it includes references to the relevant sections in later chapters. See Table 13-1 for an overview of 3D viewing functions and the associated user interface.
User is moving a scene closer or farther away in view mode. See “Dollying” in Chapter 13.
User is moving a scene up, down, left, or right without rotating it. User is in view mode. See “Panning” in Chapter 13.
User is moving through a fixed scene as if walking or flying. User can view objects but not edit them. See “Roaming” in Chapter 13.
User is tilting head up or down in a scene without moving through the scene. User is in view mode. See “Tilting” in Chapter 13.
User is sidestepping to the right or left in the scene being viewed or is moving up or down as if on an elevator. User is in view mode. See “Sidling” in Chapter 13.
User selects an object or target in view mode, and is then automatically moved closer to that object with each click. See “Seeking” in Chapter 13.
User can select and manipulate objects, for example, translate, rotate, and/or scale them. See “Viewing and Editing in 3D Applications” in Chapter 13. This is also the “default” pointer shape when no special function is taking place.
To help users stay oriented while working in your 3D application...
Use the standard pointer shapes to indicate specific 3D functionality. Display these pointers whenever the user accesses that functionality.
Use the standard pointers used in 2D applications as needed (for example, the watch pointer to indicate an operation is in progress).
When users resize the viewing window in a 3D application, its contents changes based on whether or not the resize operation keeps the same aspect ratio:
If the user keeps the same aspect ratio, the contents of the window stays the same but the scene in the viewing area gets proportionally bigger or smaller depending on whether the user made the window bigger or smaller.
If the user changes the aspect ratio, the size of the objects in the scene stays the same but more of the scene becomes visible when the user makes the window bigger and less of the scene is visible when the user makes the window smaller.
When designing the resizing operation for the viewing windows in your 3D application...
If the user resizes the window and keeps its same aspect ratio, make the scene in the viewing area of the window proportionally bigger or smaller based on the resize action.
If the user resizes the window and changes its aspect ratio during the resize operation, display more or less of the scene being displayed based on the resize action, but don't change the size of the objects in the scene.