Difference between revisions of "Slicer3:UIDesign"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(277 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Slicer3:Interface_Design|Return to Slicer3 Interface Design and Usability ]]
+
<big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:UIDesign  here]</font></big>
 
 
= 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 schematic of the main application GUI: [[Media:GUIMap.png ]]
 
* Current schematic of a Slice Viewer and Controller: [[ Media:SliceGUI.png ]]
 
* Design sketch for the 3D navigation & Slice magnifier widget [[ Media:NavZoomWidgetSketch.png]]
 
* Early look and feel draft [[Media:SlicerLookFeelDraftSmall.jpg]]
 
* First sketch of the GUI layout design [[Media:LayoutSketch.gif]]
 
* Link to a running [[Slicer3:VisualBlog|visual blog ]] highlighting progress in the Slicer3 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 ===
 
 
 
We are currently deciding a good paradigm for controlling mouse modes in Slicer's
 
3D viewer and 2D slice windows. We'd like the paradigm to:
 
 
 
* be consistent in all slice windows and 3D viewer
 
* be intuitive and easy for beginners
 
* be 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
 
* clearly support both '''view transformation''' (rotate, pan, zoom) and '''mouse actions''' (select, put, or select within region).
 
 
 
---
 
 
 
====Current problems in existing implementation:====
 
 
 
* Mouse motion always in "view transform" mode
 
* Relies on three mouse buttons (for rotate, pan, zoom, slice scroll)
 
* Relies on hot-keys for non-transform mouse actions (tough for novice users, or forgetful intermediate users)
 
* 3D viewer bindings and Slice viewer bindings not entirely consistent
 
* Would like to free up right mouse button to invoke the display a 'context menu'.
 
 
 
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
 
 
 
* 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
 
 
 
---
 
 
 
====Proposed approach:====
 
 
 
We are looking for user feedback on one 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. 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. 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 -- in context of the workflow, and enter any feedback you have in the bottom section. Thanks for your help!
 
 
 
[[image:mouseModeMockup.png | 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.
 
* Current mouse mode can be overridden with hot keys.
 
* Rely on one (left) mouse button only.
 
* For expert users, current mouse mode can be temporarily overridden with simultaneous hot-key ( for instance, if current mouse mode = 'pan', but a user presses control-t in the viewer, they see the mouse mode button temporarily display the 'put' mode, and they can put down a fiducial with a left mouse click; when control-t is released, mouse-mode goes back to 'pan'.)
 
* This behavior is consistent with other 3D software packages.
 
 
 
 
 
'''Workflow(s):'''
 
 
 
When transforming a scene, this paradigm would require a user (novice or expert) to:
 
* click the rotate mouse-mode icon,
 
* rotate a view,
 
* then click a pan mouse-mode icon,
 
* then translate the view,
 
* then click a zoom mouse-mode icon,
 
* then zoom the view.
 
 
 
(or)
 
 
 
* click the rotate mouse-mode icon,
 
* rotate view,
 
* hold down control-t (or some appropriate hot-key) and translate the view,
 
* hold down control-l (or some appropriate hot-key) and zoom the view.
 
 
 
---
 
 
 
Below are SketchUp's interface, and Maya Interface, and the Slicer mouse-mode icons (selected and deselected) as proposed.
 
 
 
[[image:sketchupInterface.png | SketchUp Example ]]
 
 
 
[[image:mayaInterface.png | Maya Example ]]
 
 
 
[[image:mouseModeMockup2.png | 3D Slicer Mouse mode ]]
 
 
 
---
 
 
 
'''Please contribute your comments here: '''
 
 
 
<br />''' Return to TOC '''
 
 
 
[[Slicer3:Interface_Design|Return to Slicer3 Interface Design and Usability ]]
 

Latest revision as of 18:05, 10 July 2017

Home < Slicer3:UIDesign

Note: We are migrating this content to the slicer.org domain - The newer page is here