Slicer3:UIDesign

From NAMIC Wiki
Revision as of 14:27, 31 January 2007 by Wjp (talk | contribs) (→‎Workflow(s))
Jump to: navigation, search
Home < Slicer3:UIDesign

Return to Slicer3 Interface Design and Usability

Slicer3 design & usability goals

1. Enable a user to understand and effectively use the content and tools being presented;

2. Enable a user to accomplish a principle task by following an appropriate and satisfying workflow or a curiosity-driven exploration, at an appropriate pace;

3. Enhance and support the developer’s experience with GUI infrastructure and guidelines that simplify and clarify their work.

Core values

These are the established core values of the 3D Slicer software and development effort:

Software associations:

  • Clarity & usability
  • Control & Precision
  • Information richness
  • Interactive & responsive
  • Reliable & Trusted
  • Easily extensible
  • Open source & cross-platform
  • Showcase for advanced research

Effort associations:

  • Advancing scientific research
  • Assisting treatment/therapy
  • Established and long-term

Embodiment

Current status and TO-DO

The existing base classes form a basic framework for the UI. For the Alpha/Beta releases, we provided a main application window with the general layout described in our current design. For the Release deadline, we plan to complete the overall application GUI. Things we are focusing on:

  • make default font size a function of display size.
  • implementing functionality for view control widgets,
  • implementing lightbox viewer
  • implement GUIs for specification of oblique views.
  • design/implement mouse-mode interaction paradigm (using one mouse button, hot-keys, and view xform or action mouse-modes).
  • design mouse-mode icons and mouse-mode cursors.
  • copyright Slicer base icons and logo (all versions)

Working problem: controlling mouse mode in Slicer's Viewers

We are currently deciding a good paradigm for controlling mouse modes in Slicer's 3D viewer and 2D slice windows. We rely on mouse interaction to transform the view, and to perform explicit actions like placing a fiducial, selecting and moving a fiducial, collecting voxel-value samples, and so on. The challenge is to give a user a simple way to make their precise intention explicit. We'd like the interaction paradigm to have the following features:

  • Consistent in all slice windows and 3D viewer
  • Intuitive and easy for beginners
  • Fast for intermediate and expert users
  • Rely on only one mouse button (since some mice have only two, and some laptops give us less to work with)
  • Support direct manipulation
  • Provide clear visual feedback
  • Support both view transformation (rotate, pan, zoom) and mouse actions (pick, manipulate, place, etc...).

---

Current problems in existing Slicer3 implementation:

  • Mouse motion always in "view transform" mode
  • Relies on three mouse buttons (for rotate, pan, zoom, slice scroll) which aren't always present
  • Relies on hot-keys for non-transform mouse actions (tough for novice users, or forgetful intermediate users)
  • 3D viewer mouse event bindings and Slice viewer mouse event bindings not entirely consistent
  • Would like to free up right mouse button (and/or space bar) to invoke the display of a 'context menu'.
  • Would like intuitive one-handed mouse-only interaction to be possible AND hot-key assisted shortcuts to be available.

In addition, in Slicer2, special keys were used in place of application-wide paradigms for actions. For instance, Fiducials used 'p' to place a fiducial, 'q' to select it. Other modules might redefine these key-bindings. By default, Slicer3 will adopt this interaction paradigm too, unless a application-wide strategy is designed.


Current bindings (not entirely consistent across 3D Viewer and Slice Viewers):
  • 3D viewer: left mouse button >> rotate
  • 3D viewer: middle mouse button >> pan
  • 3D viewer: mouse wheel button >> zoom in/out
  • 3D viewer: right mouse button, pull drag >> zoom in
  • 3D viewer: right mouse button, push drag >> zoom out
  • Slice viewer: left mouse button >> select/move a fiducial point
  • Slice viewer: middle mouse button >> pan
  • Slice viewer: mouse wheel button >> scroll slices
  • Slice viewer: right mouse button, pull drag >> zoom in
  • Slice viewer: right mouse button, push drag >> zoom out
  • special key-bindings enable placing of fiducials

---

How Actions and View Transformations are done in Maya

Maya is a very heavily used professional 3D animation package. Basic mouse bindings are:

  • Rotate: alt-left mouse button
  • Pan: alt-middle mouse button
  • Zoom: alt-right or alt-right-and-middle mouse button
  • Actions: always left mouse button, specific action depends on current mode
  • Context menu: space bar

The advantage of this approach is that the left mouse button is freed up for many possible tasks such as selection, grabbing widget handles, etc. Disadvantage is that it requires two hands to operate. (A free copy of an almost-fully functional version of Maya is available for testing ).

How Actions and View Transformations are done in Blender

Blender is an Open Source modeling and animation package similar in many ways to Maya (almost like GIMP is to Photoshop). Basic mouse bindings are:

  • Rotate: alt-left mouse button OR middle mouse button
  • Pan: shift-middle mouse button
  • Zoom: control-middle mouse button
  • Actions: mostly left mouse button
  • Context menu: space bar

---

Proposed approach:

We are looking for user feedback on a proposed approach to solving the problems listed above, in a manner that echos what other 3D modeling packages do: providing explicit mouse modes which clearly differentiate whether a user is transforming a view, or performing some "action" by clicking or dragging the mouse. Please have a look at the interaction paradigm we're proposing and the description of the workflow it would generate for novice users and for expert users. This way of interacting is a little different from Slicer2's paradigm. Also see the analogous interfaces from Maya (a popular 3D modeling and rendering software package) and also SketchUp (which does some simple but powerful 3D modeling). Then, have a look at the 3D Slicer interface with the mouse-mode buttons -- with the workflow in mind -- and contribute any feedback you have in the bottom section. Thanks for your help!

Below are shown the icons for mouse-mode selection (their appearance when selected and unselected), along with (undecided) hot-keys. (In this example, other mouse-buttons can also be bound to events, but a user without those mouse buttons will still be able to perform all functions.)

---

3D Slicer Mouse modeA

---

Features of One-Mouse-Button interaction paradigm:

  • Interface indicates a persistent mouse mode: pick (selecting a fiducial, picking a value, etc.), pick+manipulate (pick and move a fiducial), pick-in-region (rubber band box), deselect all, put (for placing fiducials, seed points, etc.), view rotate, view pan, view zoom.
  • Novice user can select mouse modes by clicking icons above 3D viewer, and current mode is clearly displayed.
  • Intermediate or Expert user selects mouse modes by using a combination of keyboard keys and left mouse button.
  • Rely on one (left) mouse button only.


Workflow(s)

Below is how a user would use the mouse-mode interface to 1. tumble, track and dolly the camera to get the 3D View to look the way they like, and then 2. put down three fiducial points and adjust their position.

A novice user's workflow is described and an expert user's workflow for the same task is given for comparison.

A novice user's workflow using these mouse-mode icons (top row: selected; bottom row: deselected):

icons

  • tumble: click the rotate mouse-mode icon ToolbarMouseRotate.png --> (mouse rotate icon highlights and all others deselect)
  • then left-Click and drag in the 3D Viewer to rotate a view,
  • track: click the pan mouse-mode icon ToolbarMousePan.png --> (mouse pan icon highlights and all others deselect)
  • then left-Click and drag in the 3D Viewer to translate the view,
  • zoom: click the zoom mouse-mode icon ToolbarMouseZoom.png --> (mouse zoom icon hightlights and all others deselect)
  • then left-Click and drag in the 3D Viewer to zoom the view.
  • place fiducials: click the mouse-place icon ToolbarMousePlace.png --> (mouse-place icon highlights and all others deselect)
  • then left-Click three times at x,y locations in a Slice Viewer to put down three fiducial points.
  • select fiducials: click the mouse-pick icon ToolbarMousePick.png --> (mouse-pick icon highlights and all others deselect)
  • then left-Click on two fiducial points in a Slice Viewer, which highlight.
  • move selected fiducials: click the mouse-pick-and-manipulate icon ToolbarMouseManipulate.png --> (mouse-pick-and-manipulate icon highlights, all others deselect)
  • then left-Click and drag in a Slice Viewer to move these two fiducial points.
  • de-select fiducials: click the mouse-deselect-all icon ToolbarMouseDeselectAll.png --> (mouse deselect icon highlights, all others deselect, all fiducials are deselected).
  • select-and-move fiducial: click the mouse-pick-and-manipulate icon ToolbarMouseManipulate.png --> mouse-pick-and-manipulate icon highlights, all other icons deselect),
  • then left-Click on one fiducial in a Slice Viewer to select it (it highlights), and drag to move it. Click on it again (it remains selected/highlighted), and drag a little more to adjust position.
  • de-select fiducial: click the mouse-deselect-all icon ToolbarMouseDeselectAll.png --> (it hightlights, all other icons deselect, and the fiducial is deselected).


An expert user's workflow using hot-keys (icon state provides visual feedback of mode):

icons

  • ctrl+left-Click and drag in the 3D Viewer, --> (mouse tumble icon ToolbarMouseRotate.png highlights and all others deselect; view tumbles)
  • alt+left-Click and drag in the 3D Viewer, -->(mouse track icon ToolbarMousePan.png highlights and all others deselect; view tracks)
  • shift+left-Click and drag in the 3D Viewer --> (mouse zoom icon ToolbarMouseZoom.png highlights and all others deselect; view zooms).
  • press ctrl-p to switch into mouse-put (or place) mode --> (mouse put icon ToolbarMousePlace.png highlights, and all others deselect),
  • then left-Click on three x,y locations in a Slice Viewer to put down three new fiducial points.
  • press ctrl-s to switch into mouse-pick (select or sample) mode --> (mouse pick icon ToolbarMousePick.png highlights, and all others deselect),
  • then left-Click on two of the fiducial points --> these points highlight)
  • press ctrl-m to switch into mouse-pick-and-manipulate mode --> (mouse pick-and-manipulate icon ToolbarMouseManipulate.png highlights, all others deselect),
  • then left-Click and drag in a Slice Viewer to move these two selected fiducials.
  • press ctrl-u to deselect the fiducials --> (mouse deselect icon File:ToolbarMouseDeselect.png highlights, all other icons deselect, and the fiducials are no longer highlighted.)
  • press ctrl-m to switch into mouse-pick-and-manipulate mode --> (mouse pick-and-manipulate icon File:ToolbarMousePickAndManipulate.png highlights, all other icons deselect)
  • then left-Click on one fiducial point in the Slice Viewer (it highlights), and drag to move it. Click on it again (it remains selected/highlighted) and drag a little more to adjust its position.
  • press ctrl-u again to deselect the fiducial point --> ( the deselect-all icon ToolbarMouseDeselectAll.png highlights and all other icons are deselected, the fiducial is no longer highlighted.)


---

Below are SketchUp's interface, and Maya Interface, and the proposed Slicer mouse-mode icons (selected and deselected) as proposed. Maya's mouse modes switch between object transforms (translate, rotate and scale), object or region select, and an extrude function. SketchUp's mouse-mode icons switch between view transforms (translate, rotate, zoom) and an object extrude function.

SketchUp Example

Maya Example

3D Slicer Mouse mode

---

Please contribute comments here -- Thank you!:


Return to TOC

Return to Slicer3 Interface Design and Usability