Toolkit (VTK) An Introduction

 An open source, freely available software system for 3D computer VTK:Interaction and GUI graphics, image processing, and visualization  Implemented as a ++ class library, with interpreted layers in Tcl/,  Integrates seamlessly with other windowing systems, including , Java, Python FLTK, wxWindows, Tcl/Tk, Python, Java, etc.  700 C++ classes, 350K lines of source code, 215K lines of wrapper  Supports a variety of interaction styles: trackball, joystick, cus- code tomized interaction styles  Multi-platform implementation (Windows, Unix, MacOS)  Implements a command/observer event handling mechanism; sup- ports a sophisticated event model.  Visualization Techniques: Scalar, Vector, Tensor, Texture, and Volu- metric methods  Includes an extensive set of 3D widgets including point, line, plane, implicit plane, box, sphere, scalar bar, etc.  Modeling Techniques: Implicit modelling, Polygon reduc- tion/simplification, mesh smoothing, cutting, contouring, and Delau- nay triangulation  Extensible system ITCS 6010:Biomedical and Visualization 1 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 2 VTK Primer

VTK:3D Graphics Model VTK:3D Graphics Model (contd)

 Surface Rendering  Lights illuminate the scene  (ray casting, texture-based, VolumePRO)  Cameras define viewpoint  Rendering Primitives: points, lines, polygons, triangle strips, volume  Actors specify geometry/properties  Interactive Viewer/Renderer: 3D Widgets for interaction  LOD actor (manual/automatic generation) for interactive rendering  Attributes: local reflection model, transparency, textures,  Assemblies group actors into arbitrary hierarchies flat/Gouraud shading  Mappers define geometry/link into visualization pipeline  Lights: infinite, spot  Renderers coordinate lights, cameras, actors to create image  Cameras: parallel/perspective projection  Volumes : special actor with special properties

ITCS 6010:Biomedical Imaging and Visualization 3 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 4 VTK Primer VTK:Visualization Data/Primitives

VTK:Visualization Data/Primitives

 Data Types: polygonal data, images/volumes (structured points), structured/unstructured grids, rectilinear grids  Cell Types: vertex/poly-vertex, line/poly-line, triangle(strip), pixel/voxel, quadrilateral, tetrahedron, hexahedron, pyramid, wedge  Attributes: scalars, vectors, tensors (3 × 3), normals, texture coords, field data

ITCS 6010:Biomedical Imaging and Visualization 5 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 6 VTK Primer

VTK:Visualization Algorithms(contd) VTK:Visualization Algorithms(contd.)  Modeling Algorithms ◦ Primitives: sphere, cone, cube, line, plane, triangle strip gener-  Scalar Algorithms: Color mapping, carpet-plots, iso-contours ation (marching and dividing cubes), thresholding ◦ Implicit modeling, swept surfaces/volumes  Vector Algorithms: hedgehogs, streamlines, streampoints, stream ◦ Glyphs, cutting, clipping surfaces, stream polygon ◦ textures (boolean), texture thresholding  Tensor Algorithms: tensor ellipsoids, glyphs, hyper streamlines ◦ Decimation, 2D/3D Delaunay triangulation, mesh smoothing  Modelling Algorithms ◦ scattered point visualization, reconstruction, append- ing/merging/cleaning data  Data Interface:Readers/Writers, Importers/Exporters

ITCS 6010:Biomedical Imaging and Visualization 7 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 8 VTK Primer VTK: Example Visualizations VTK: Example Visualizations

ITCS 6010:Biomedical Imaging and Visualization 9 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 10 VTK Primer

Implicit(Demand Driven) Execution

VTK:Visualization Pipeline A process object executes only if its input or local parameters change

A E’s output requested Backpropagate E−D−B−A Execute A−B−D−E  Visualization pipeline demand-driven data-flow with automatic net- B work updates C D  Reference counting to reduce memory requirements E  Sources, filters, mappers to start, process, and terminate network Network looping and feedback supported  Update: Object requesting new output examines its input objects;  recurs until source objects are reached  Strong type-checking to enforce filter connectivity  Execution: Starting from source objects, all objects in the path to the  Supports multiple input/multiple output filters requesting object are executed  Advantage is simplicity and locality, but inconvenient for parallel ex- ecution.

ITCS 6010:Biomedical Imaging and Visualization 11 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 12 VTK Primer VTK:Imaging

 Features: ◦ Uses cached, streaming pipeline, can operate on gigantic datasets. ◦ Imaging filters are multi-threaded for parallel execution ◦ Fully integrated with 3D graphics/visualization pipeline  Filter types: diffusion, Butterworth, dilation/erosion, convolution, magnitude, gradient, distance xform, FFT, histogram/threshold, Gaussian, Fourier, Sobel.

ITCS 6010:Biomedical Imaging and Visualization 13 VTK Primer ITCS 6010:Biomedical Imaging and Visualization 14 VTK Primer