specialized widgets for vtk - wright state...

38
3-1 Department of Computer Science and Engineering 3 Specialized Widgets for VTK Specialized Widgets for VTK

Upload: others

Post on 12-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-1 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Specialized Widgets for VTK

Page 2: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-2 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Thanks • National Library of Medicine / NIH

– Dr. Terry Yoo: A2D2 awards (Algorithms, Adaptors, and Data Distribution)

• National Science Foundation

– Visual Journal project

• NIH National Center for Biomedical Computing

– NAMIC

• DOE National Labs

– Sandia

– Livermore

• Contributors

– Will Schroeder

– Karthik Krishnan

– Lisa Avila

– Brad King

– Sebastien Barre

– Dave Cole

Page 3: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-3 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Goals

• Directly interact with data

• Provide complex, potentially 3D interaction techniques

– Probing

– Annotation

– Measurements

Page 4: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-4 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

4

Interactor styles • Everybody has their favorite way of interacting with

Data.

RenderWindow

User Events

Interactor Interactor Style

Events

vtkCamera

Actions

Render()

Page 5: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-5 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Object Relationships

vtkInteractorObserver

vtkInteractorStyle vtkAbstractWidget

vtkRenderWindowInteractor

Page 7: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-7 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Interactor styles (usage)

• Set the interactor style on the Render Window Interactor

vtkInteractorStyleTrackballCamera *style =

vtkInteractorStyleTrackballCamera::New();

renderWindowInteractor -> SetInteractorStyle( style );

Page 8: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-8 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

VTK Widgets

Page 9: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-9 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

VTK - Widgets • Widgets are simply Interactive Props

• VTK currently has widgets to perform

– Measurements

– Annotation and Labeling

– Segmentation

– Registration

– Data interaction

– Scene parameter manipulation: Light, camera, etc.

– Probing underlying data

• Timer support

• Multiple geometrical representations for the same widget

• Reconfigurable key/mouse bindings

• Grouping widgets

Page 10: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-10 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Visualization pipeline

Page 11: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-11 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

vtkRenderWindow

Widget

User Interaction

Events

vtkRenderWindowInteractor

Widgets are interactive props

vtkRenderer Render()

Manipulate one

or more props

Widget Representation

Page 12: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-12 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets – Design goals

• Separate representation from event processing

– Support distributed processing (client-server)

• Reconfigurable bindings

• Support hierarchical use of widgets

• Grouping widgets

• Timer, Hover support

Page 13: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-13 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

RenderWindow

vtkAbstractWidget

vtkWidgetRepresentation

(type of vtkProp)

Events

Renderer

Render()

Widgets Architecture

Behavior Geometry

Page 14: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-14 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

One widget, multiple geometries

vtkHandleWidget vtkPointHandleRepresentation2D

vtkPointHandleRepresentation3D

vtkSphereHandleRepresentation

vtkPolygonalHandleRepresentation

Behavior Geometry

Page 15: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-15 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

15

Configurable bindings: Event Translation

Page 16: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-16 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Event Translation

• Re-configurable keyboard/mouse bindings

• Example:

vtkWidgetEventTranslator *eventTranslator = widget->GetEventTranslator();

eventTranslator->SetTranslation( vtkCommand::MiddleButtonPressEvent, vtkWidgetEvent::Select ); eventTranslator->SetTranslation( vtkCommand::MiddleButtonReleaseEvent, vtkWidgetEvent::EndSelect );

Page 17: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-17 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widget Assemblies • Create composite widgets from several individual widgets

• Children listen to events from Parent. Hence parent can alter

behavior of child

Parent

Child Child

RenderWindow Events

Events Events

Page 18: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-18 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widget Assemblies

• Code reuse

• Component framework:

– Change behaviour / geometry of Line widget by changing the

handle widgets.

HandleWidget HandleWidget

Line Widget

Page 19: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-19 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Timer support

• Widgets may respond to timers

– Hover widget

– Balloon widget

– Timer based hover annotations, Popups (text, thumbnails etc).

Page 20: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-20 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Handle Framework • Handles are often fundamental building blocks of other widgets

– vtkLineWidget2

– vtkDistanceWidget

– vtkAngleWidget

– vtkBiDimensionalWidget

– vtkSeedWidget

– vtkParallelopipedWidget

• Need multiple representations for handles

• Need a framework for constraints on handles

• To plane

• To surface

• To a terrain

• To a region.

Page 21: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-21 Department of Computer Science and Engineering

3 Specialized Widgets for VTK Various handle representations

(geometries)

vtkHandleWidget vtkPointHandleRepresentation2D

vtkPointHandleRepresentation3D

vtkSphereHandleRepresentation

vtkPolygonalHandleRepresentation

Page 22: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-22 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Constraints – Point Placers

• To map 2D display positions to 3D world coordinates.

Does a 2D display position map to:

– Focal Plane ?

– Point on a surface ?

– Point on a plane / image ?

– Out of bounds ?

• Allows a variety of constraints to be placed the

placement of widgets.

Page 23: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-23 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets

• Handles

Page 24: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-24 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.) • vtkSliderWidget

– 2D

– 3D

• vtkBorderWidget

– Widgets with rectangular borders

• vtkTextWidget

– Position & size text

Page 25: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-25 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• BalloonWidget

– Text and/or image in rectangular popup

Page 26: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-26 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkCameraWidget

– Keyframe &

playback camera

• vtkCaptionWidget

– Text with leader

Page 27: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-27 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkCheckerboardWidget

– Interleave two images

• vtkRectilinearWipeWidget

– Window pane

(2x2 checkerboard)

with movable focus

Page 28: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-28 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkContourWidget

– 2D (on plane)

– 3D (move contours through slices in a volume)

Page 29: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-29 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.) • vtkDistanceWidget

– Measure distance

between points

• vtkAngleWidget

– Measure angles

Page 30: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-30 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkSeedWidget

– Add one or more seeds / markers

• vtkAffineWidget

– Translate

– Scale

– Rotate

– Shear images

Page 31: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-31 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkBiDimensionalWidget

– Tumor response (RECIST vs WHO)

Page 32: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-32 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.) • Box

• Implicit Plane

Page 33: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-33 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.) • Finite Plane • Line

Page 34: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-34 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widgets (cont.)

• vtkScalarBarWidget

• vtkSphereWidget

Page 35: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-35 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Slider Widget Example vtkSliderRepresentation2D *sliderRep = vtkSliderRepresentation2D::New();

sliderRep->SetValue(0.25);

sliderRep->SetTitleText("Spike Size");

sliderRep->GetPoint1Coordinate()->SetCoordinateSystemToNormalizedDisplay();

sliderRep->GetPoint1Coordinate()->SetValue(0.2,0.15);

sliderRep->GetPoint2Coordinate()->SetCoordinateSystemToNormalizedDisplay();

sliderRep->GetPoint2Coordinate()->SetValue(0.8,0.15);

sliderRep->SetSliderLength(0.02);

sliderRep->SetSliderWidth(0.03);

sliderRep->SetEndCapLength(0.01);

sliderRep->SetEndCapWidth(0.03);

sliderRep->SetTubeWidth(0.005);

vtkSliderWidget *sliderWidget = vtkSliderWidget::New();

sliderWidget->SetInteractor(iren);

sliderWidget->SetRepresentation(sliderRep);

sliderWidget->SetAnimationModeToAnimate();

vtkSlider2DCallback *callback = vtkSlider2DCallback::New();

callback->Glyph = glyph;

sliderWidget->AddObserver(vtkCommand::InteractionEvent,callback);

Page 36: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-36 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Slider Widget Example (Cont.) class vtkSlider2DCallback : public vtkCommand

{

public:

static vtkSlider2DCallback *New()

{ return new vtkSlider2DCallback; }

virtual void Execute(vtkObject *caller, unsigned long, void*)

{

vtkSliderWidget *sliderWidget =

reinterpret_cast<vtkSliderWidget*>(caller);

this->Glyph->SetScaleFactor(static_cast<vtkSliderRepresentation *>(sliderWidget-

>GetRepresentation())->GetValue());

}

vtkSlider2DCallback():Glyph(0) {}

vtkGlyph3D *Glyph;

};

Page 37: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-37 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

vtkPointPlacer

Page 38: Specialized Widgets for VTK - Wright State Universityavida.cs.wright.edu/courses/CS399/CS399_3.pdf · 2012-01-12 · Department of Computer Science and Engineering 3-2 3 Specialized

3-38 Department of Computer Science and Engineering

3 Specialized Widgets for VTK

Widget Sets

• Grouping widgets on multiple render windows, relieving the

application of the responsibility of doing so.

RenderWindow

Event Widget

RenderWindow Event

Widget

RenderWindow Event

Widget

WidgetSet Event

Event

Event