Slicer3:UIDesign

From NAMIC Wiki
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

This is a working list of the core values the interface and interaction should reflect/support (please refine). These are not "specifications", but rather, think of them as concepts that our user communities would value highly and which would effectively and honestly distinguish the software. These are the concepts we'd like Slicer3 to strongly project:

  • Simplicity
  • Clarity
  • Control & Precision
  • Information-rich
  • Open source & cross-platform
  • Furthering scientific research
  • Assisting treatment/therapy
  • Advanced research showcase
  • Easily extensible
  • Interactive & responsive
  • Reliable
  • Longterm viability

Embodiment

Current status and TO-DO

The existing base classes form a basic framework for the UI. For the Alpha deadline, we provided a main application window with the general layout described in our current design. For the Beta deadline, we are focusing on:

  • clean up vtkDebug Leaks
  • copyright existing icons and logo
  • working on improving the Theme to enhance module GUI appearance and readability,
  • implementing functionality for view control widgets,
  • implementing lightbox viewer


User feedback request: controlling the mouse mode in Slicer's Viewers (not yet ready for comment)

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 scene, and to perform explicit actions, like place a fiducial, select and move a fiducial, and so on. The challenge is to give a user a simple way to make their intention explicit. We'd like the interaction paradigm to:

  • be consistent in all slice windows and 3D viewer
  • be intuitive and easy for beginners
  • be fast for intermediate and expert users
  • work with on only one mouse button (since some mice have only two, and some laptops give us less to work with)
  • support direct manipulation
  • clearly support both view transformation (rotate, pan, zoom) and mouse actions (select, move, put, or select within region).

---

Current problems in existing Slicer 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 to invoke the display of a 'context menu'.

Current bindings:

  • 3D viewer: left mouse >> rotate
  • 3D viewer: middle mouse >> pan
  • 3D viewer: mouse wheel >> zoom
  • 3D viewer: right mouse, pull drag >> zoom in
  • 3D viewer: right mouse, push drag >> zoom out
  • 3D viewer: mouse wheel >> zoom in/out
  • Slice viewer: left mouse >> select/move a fiducial point
  • Slice viewer: middle mouse >> pan
  • Slice viewer: mouse wheel >> scroll slices
  • Slice viewer: right mouse, pull drag >> zoom in
  • Slice viewer: right mouse, push drag >> zoom out
  • special keys 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
  • Pan: alt-right mouse
  • Zoom: alt-middle mouse
  • 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 OR middle mouse
  • Pan: shift-middle mouse
  • Zoom: control-middle mouse
  • Actions: mostly left mouse
  • 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 mode buttons in the interface which can be selected by clicking or with mouse-keyboard shortcuts. Please have a look at the features we're proposing, the description of the workflow it would generate for novice users and for expert users -- this is different than 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.

3D Slicer Mouse mode

Features of this interaction paradigm:

  • Indicate sustained (but overrideable) mouse modes: pick, put, rotate, translate, zoom, select-region.
  • User selects mouse modes by clicking icons above 3D viewer, and current mode is clearly displayed.
  • OR, user selects mouse modes by using a combination of keyboard keys and left mouse button.
  • Rely on one (left) mouse button only.
  • For novice users, all transforms and actions can be explicitly selected by using the mouse-mode icons above the 3D Viewer.
  • For intermediate and expert users, combinations of keyboard keys and left-mouse can select transforms and actions, and modal feedback is provided from the icons selected/deselected status.

Workflow(s):

When transforming a scene, a novice user could:

  • click the rotate mouse-mode icon, (mouse rotate icon highlights and all others deselect)
  • then leftClick in the 3D Viewer to rotate a view,
  • click the pan mouse-mode icon, (mouse pan icon highlights and all others deselect)
  • then leftClick in the 3D Viewer to translate the view,
  • click the zoom mouse-mode icon, (mouse zoom icon hightlights and all others deselect)
  • then leftClick in the 3D Viewer to zoom the view.

An expert user could

  • ctrl-leftclick in the 3D Viewer and rotate the view,
  • alt-leftClick in the 3D Viewer and pan the view,
  • shift-leftClick in the 3D Viewer and zoom the view.


---

Below are SketchUp's interface, and Maya Interface, and the 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