Difference between revisions of "WidgetDesign2010"

From NAMIC Wiki
Jump to: navigation, search
Line 190: Line 190:
 
* Enhancements
 
* Enhancements
 
*# Anchor point and configurable line for any widget which includes a text actor
 
*# Anchor point and configurable line for any widget which includes a text actor
*#* Decouple measurement widget from text label
+
*#* Decouple measurement widget from text (label and measurement value)
 
*# vtkDistanceWidget: 3D representation
 
*# vtkDistanceWidget: 3D representation
 
*# Cloned versus non cloned representations
 
*# Cloned versus non cloned representations

Revision as of 14:13, 4 November 2010

Home < WidgetDesign2010
Back to events
Slicer4 Architecture Diagram.

Overview

  • What: Review of the wish lists for vtkWidget integration and development.
  • When: Nov 4-6, 2010
  • Where: Kitware office in North Carolina, 101 East Weaver St, Suite G4, Carrboro, NC 27510 (see below)
  • Who: Those involved in or hoping to provide direction and priorities for vtkWidget work for NAMIC.
    • Confirmed: Daniel, Jc, J2, Nicole, Steve, Will, Stephen (Thurs/Fri), Ron (Sat aft)
    • Can't go: Kilian, Alex, Wendy

Related Links

Schedule

  • Start: Thursday, Nov 4 at 9am
  • End: Saturday, Nov 6 at 3pm

Thursday November 4, 2010

  • Morning Agenda
    • Declare users and define use cases
      • Users:
        • Measurements in radiological workstations
          • Bi-dim, length, angle
        • Carving bone model for surgical simulation
          • Operations on meshes
        • Segmentation editing
        • Registration manipulation
      • Developers:
        • Extensible
          • Assign a CLI-plugin to a widget (interactive CLIs)
          • Easy to define new widgets by combining existing widgets
      • Not
        • Touch interface for Slicer
      • Modules and elements of Slicer that use widgets:
        • Annotation module (vtkDistanceWidget, vtkBidimensionalWidget, vtkTextWidget, vtkSeedWidget)
        • Volume Rendering/ROI
        • Overall Slicer GUI "place-pick mouse modes"
          • Lasso mode
        • Slice reformat
        • Editor
        • Corner Annotations
        • Possible 3D Editing
        • Scalar bar for color tables
      • Easily tied to CTK widgets
    • Review status in 3.6
    • Relationship between 3D Widgets and 2D GUI
      • example: KWWidgets scalar bar
      • expose all hidden functionality that is currently accessible with modifiers or hotkeys***

BREAK FOR LUNCH

  • Afternoon Agenda
    • Review (don't revise yet) plans for beta 4.0
    • Wish list for the future
      • Architecture changes to VTK Widgets
      • Architecture changes to Slicer
      • Architecture changes to loadable modules
      • New widgets to create
      • Serialization
      • See also: http://www.slicer.org/slicerWiki/index.php/Slicer4:VTKWidgets
      • API Changes
        1. Unified APIs for all widgets
          1. Default behavior for all widgets
          2. Programmatic Placement
          3. Hover Event and other events
          4. All display properties publicly available (text, lines and points)
            1. API should consist of a modular hierarchy
          5. avoid SafeDownCasts, add GetXRepresentation
          6. vtkTextRepresentation: (general) Set/Get of display properties
        2. vtkDistanceWidget: SetWorldSpaceTickSpacing
      • Enhancements
        1. Anchor point and configurable line for any widget which includes a text actor
        2. vtkDistanceWidget: 3D representation
        3. Cloned versus non cloned representations
      • Infrastructure Changes
        1. All widgets exist in RAS space
        2. SetCurrentRenderer (for lightbox view)
        3. Mouse interactions (f.e. near vs. nearby in vtkSeedWidget)
          1. Highlight vs. Pick radius
        4. 3D depth ordering of widgets
          1. Handle case of pickable widgets that are hidden by a opaque geometry
        5. Speed up interaction of widgets that have text
          1. possibly timer based level of detail to turn off text during interaction
        6. Anti-aliasing and enhance eye-candy (example: http://raphaeljs.com/)
      • Bugs
        1. vtkDistanceWidget, vtkLineWidget, vtkAngleWidget: GetDistance() and GetAngle() not re-computing
        2. vtkHoverWidget text does not update
      • User-friendly documentation for all widgets
      • Complete testing for all widgets


  • Drink beer
    • What alternatives are there? vtk charts? qt overlays? svg overlays? direct calls to vtk actors?
    • Are 2D and 3D use cases inherently different and do they need different solutions? (e.g. have Qt or web technologies provided high-level functionality while 3D requires a custom solution?)

Friday November 5, 2010

  • Morning Agenda
    • Implementation
      • Current approach in VTK
      • Current approach in Slicer3, Slicer4
      • Testing (how best to write tests)
      • Revisions needed
    • Prioritize list of widgets and features

BREAK FOR LUNCH

  • Afternoon Agenda
    • Set alpha, beta, and release 1.0 thresholds, dates, and responsibilities
      • Discussion of milestones between now and the All Hands Meeting (which fixes can be available ahead of time for incorporation into the Annotation module)
      • Agreement on timeline for changes in VTK to satisfy the widget wishlist for slicer4 (what's feasible in the next couple months, vs what's going to take longer).
    • Drink beer

Saturday November 6, 2010

  • Day 3
    • Summary report for Ron
    • Drink beer

Visiting Kitware in North Carolina

Airports

  • Local Airport: RDU (Raleigh-Durham International Airport)
  • Chapel Hill is about 35 minutes from the airport (50 minutes with "traffic")

Trains, Buses, and Automobiles

  • There are trains and buses from DC and other cities, but they are extremely slow and unreliable.
  • It is a 4.5 hour drive from DC to Chapel hill / Carrboro, NC (Map)

Transportation from Airport

Hotels

  1. The Franklin Hotel
    1. Long walking distance to KRS and UNC (0.7miles / 1km to each)
    2. $180-ish
  2. Carolina Inn
    1. Adjacent to UNC and about 2 miles from Kitware
    2. $170-ish
  3. Days Inn
  4. Sheraton
  5. Holiday Inn

Local Transportation

Directions to KRS ("Kitware Really South")

  • Weaver St Market Building, 101 East Weaver St, Suite G4, Carrboro, NC 27510
  • Google Map
  • Directions for "locals": Park in the lot next to Weaver St Market. Access to the lot is from Main St., and the lot is located across the street from Armadillo Grill. Enter the east end of the Weaver St Market building (glass door nearest the parking lot). Kitware offices (Suite G4) are on the third floor, at the far end of the building (follow the hall).

Misc.

Social Event

Draft Timeline & To-Do list

Beta

  • Mid-December (when the release is cut for the AHM)
  • API Changes
    1. Unified APIs for all widgets
      1. Programmatic Placement
        • Load into a specified state
      2. Hover Event and other events
        • Widget state changes should be exposed
      3. All display properties publicly available (text, lines and points)
        • vtkTextRepresentation: (general) Set/Get of display properties
      4. avoid SafeDownCasts, add GetXRepresentation
        • Mimic behavior of ScalarBarWidget
    2. vtkDistanceWidget: SetWorldSpaceTickSpacing
      • measuring tape behavior
  • Enhancements
    1. Anchor point and configurable line for any widget which includes a text actor
      • Decouple measurement widget from text (label and measurement value)
    2. vtkDistanceWidget: 3D representation
    3. Cloned versus non cloned representations
  • Infrastructure Changes
    1. All widgets exist in RAS space
    2. SetCurrentRenderer (for lightbox view)
    3. Mouse interactions (f.e. near vs. nearby in vtkSeedWidget)
      1. Highlight vs. Pick radius
    4. 3D depth ordering of widgets
      1. Handle case of pickable widgets that are hidden by a opaque geometry
    5. Speed up interaction of widgets that have text
      1. possibly timer based level of detail to turn off text during interaction
      1. Anti-aliasing and enhance eye-candy (example: http://raphaeljs.com/)
      • Bugs
        1. vtkDistanceWidget, vtkLineWidget, vtkAngleWidget: GetDistance() and GetAngle() not re-computing
        2. vtkHoverWidget text does not update

Gamma

Future

  • Default behavior for all widgets
  • API should consist of a modular hierarchy
  • Qt Preferences drive vtkWidget appearance
    • To handle different user interaction interfaces (touch vs mouse)
  • Qt Widgets that parallel vtkWidgets
    • slider to control line length

Notes