Difference between revisions of "WidgetDesign2010"
From NAMIC Wiki
(→Beta) |
(→Beta) |
||
Line 193: | Line 193: | ||
* API Changes | * API Changes | ||
*# Unified APIs for all widgets | *# Unified APIs for all widgets | ||
− | *## Programmatic Placement | + | *## '''Programmatic Placement''' |
*##* Load into a specified state | *##* Load into a specified state | ||
*## Hover Event and other events | *## Hover Event and other events | ||
*##* Widget state changes should be exposed | *##* Widget state changes should be exposed | ||
− | *## All display properties publicly available (text, lines and points) | + | *## '''All display properties publicly available (text, lines and points)''' |
*##* vtkTextRepresentation: (general) Set/Get of display properties | *##* vtkTextRepresentation: (general) Set/Get of display properties | ||
*## avoid SafeDownCasts, add GetXRepresentation | *## avoid SafeDownCasts, add GetXRepresentation | ||
*##* Mimic behavior of ScalarBarWidget | *##* Mimic behavior of ScalarBarWidget | ||
*# vtkDistanceWidget: SetWorldSpaceTickSpacing | *# vtkDistanceWidget: SetWorldSpaceTickSpacing | ||
− | *#* measuring tape behavior | + | *#* '''measuring tape behavior''' |
* Infrastructure Changes | * Infrastructure Changes | ||
*# Pickable when occluded (bug) | *# Pickable when occluded (bug) | ||
Line 213: | Line 213: | ||
*# 3D depth ordering of widgets | *# 3D depth ordering of widgets | ||
*## Handle case of pickable widgets that are hidden by a opaque geometry | *## Handle case of pickable widgets that are hidden by a opaque geometry | ||
− | *# Speed up interaction of widgets that have text | + | *# Speed up interaction of widgets that have text (might be a Mac with Slicer only problem..) |
*#* Consider qVTK | *#* Consider qVTK | ||
*#* Consider LOD | *#* Consider LOD |
Revision as of 17:18, 5 November 2010
Home < WidgetDesign2010Back to events
Contents
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
- 2010 Summer Project Week: vtkWidgets
- VTK's vtkWidget page
- Design Notes
- Slicer vtkWidget wish list
- Slicer vtkWidget Testing (related request list)
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
- Measurements in radiological workstations
- Developers:
- Extensible
- Assign a CLI-plugin to a widget (interactive CLIs)
- Easy to define new widgets by combining existing widgets
- Extensible
- 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
- Users:
- 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***
- Declare users and define use cases
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
- Unified APIs for all widgets
- Default behavior for all widgets
- Programmatic Placement
- Hover Event and other events
- All display properties publicly available (text, lines and points)
- API should consist of a modular hierarchy
- avoid SafeDownCasts, add GetXRepresentation
- vtkTextRepresentation: (general) Set/Get of display properties
- vtkDistanceWidget: SetWorldSpaceTickSpacing
- Unified APIs for all widgets
- Enhancements
- Anchor point and configurable line for any widget which includes a text actor
- vtkDistanceWidget: 3D representation
- Cloned versus non cloned representations
- Infrastructure Changes
- All widgets exist in RAS space
- SetCurrentRenderer (for lightbox view)
- Mouse interactions (f.e. near vs. nearby in vtkSeedWidget)
- Highlight vs. Pick radius
- 3D depth ordering of widgets
- Handle case of pickable widgets that are hidden by a opaque geometry
- Speed up interaction of widgets that have text
- possibly timer based level of detail to turn off text during interaction
- Anti-aliasing and enhance eye-candy (example: http://raphaeljs.com/)
- Bugs
- vtkDistanceWidget, vtkLineWidget, vtkAngleWidget: GetDistance() and GetAngle() not re-computing
- 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
- Implementation
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
- Set alpha, beta, and release 1.0 thresholds, dates, and responsibilities
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
- RDU Transportation info
- Taxi Services
- $$$: Wood Pichard of A1 Executive Coach
- 919-225-2189 phone
- $$: Tar Heel Taxi ($40)
- 919-933-1255 phone
- 919-967-6239 phone
- $$$: Wood Pichard of A1 Executive Coach
Hotels
- The Franklin Hotel
- Long walking distance to KRS and UNC (0.7miles / 1km to each)
- $180-ish
- Carolina Inn
- Adjacent to UNC and about 2 miles from Kitware
- $170-ish
- Days Inn
- Sheraton
- Holiday Inn
Local Transportation
- Buses are free in Chapel Hill/Carrboro
- "F" bus stops in front of Weaver St. Market
- Live map of bus routes.
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.
- Weaver St. Market is in the same building as KRS and a great place to visit
- KRS is in Carrboro, NC
- Learn the language
Social Event
- Dark Beer Tasting Event at Southern Seasons
Draft Timeline & To-Do list
Beta
- Mid-December (when the release is cut for the AHM)
- Today
- 3pm Marcus Charting
- Coding
- Caption Widget
- vtkChart Demo from J2
- Calculate angle and distance - update values (Nicole checked fixes into github)
- Multiple renderers not handled by widgets
- MeasurementTape Widget
- qVTKWidget2
- Tomorrow
- Coding
- Hover Event and other events
- Widget state changes get exposed
- Mouse interactions (f.e. near vs. nearby in vtkSeedWidget)
- Highlight vs. Pick radius
- Hover Event and other events
- Coding
- API Changes
- Unified APIs for all widgets
- Programmatic Placement
- Load into a specified state
- Hover Event and other events
- Widget state changes should be exposed
- All display properties publicly available (text, lines and points)
- vtkTextRepresentation: (general) Set/Get of display properties
- avoid SafeDownCasts, add GetXRepresentation
- Mimic behavior of ScalarBarWidget
- Programmatic Placement
- vtkDistanceWidget: SetWorldSpaceTickSpacing
- measuring tape behavior
- Unified APIs for all widgets
- Infrastructure Changes
- Pickable when occluded (bug)
- Screen rendering or other hint when occluded
- Multiple renderers not handled by widgets
- e.g. lightbox view
- Components of widget split across renderers
- Mouse interactions (f.e. near vs. nearby in vtkSeedWidget)
- Highlight vs. Pick radius
- 3D depth ordering of widgets
- Handle case of pickable widgets that are hidden by a opaque geometry
- Speed up interaction of widgets that have text (might be a Mac with Slicer only problem..)
- Consider qVTK
- Consider LOD
- Timer based level of detail to turn off text during interaction
- Pickable when occluded (bug)
- Bugs
- vtkDistanceWidget, vtkLineWidget, vtkAngleWidget: GetDistance() and GetAngle() not re-computing
- vtkHoverWidget text does not update
- Mouse-over twice and then still only shows old text
Future
- Anchor point and configurable line for any widget which includes a text actor
- Decouple measurement widget from text (label and measurement value)
- vtkDistanceWidget, vtkBidimensionalWidget, vtkTextWidget, vtkSeedWidget
- Consider using: vtkCaptionWidget
- Consider line versus distance
- Programmatic widgets:
- vtkDistanceWidget via
- 2 clicks then appears
- OR 1 click and appears and drags and then click to stick
- vtkDistanceWidget via
- vtkDistanceWidget: 3D representation
- Cloned versus non cloned representations
- Some properties are shared by some widgets (color, shape)
- See seed and line widgets (they work)
- Consider linewidget2 versus distance
- Consider Caption versus Text
- Level of detail manager
- Two representations per MRML node
- Anti-aliasing and enhance eye-candy (example: http://raphaeljs.com/)
Gamma
Future
- Complex widgets
- Challenge is managing hierarchy of events
- 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