This page provides a summary of VTK's role in the NA-MIC Toolkit. To learn more about VTK or to download VTK, click here to visit the VTK Website .
The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization used by thousands of researchers and developers around the world. The major objective of VTK is to support the visualization process: mapping data into perceptual forms (typically visual). VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. In addition, dozens of imaging algorithms have been directly integrated to allow the user to intermix 2D imaging / 3D graphics algorithms and data. VTK also supports direct data interaction in the form of 3D widgets, which are 3D representations that interactively modify data, or provide input to filtering algorithms.
Role in NAMIC
VTK is a core software component used by major applications such as Slicer.
VTK is a toolkit, meaning that there is no application per se. Rather, the developer uses VTK to build applications by assembling the many classes available in the toolkit.
VTK is written in C++ but has bindings for Java, Python and TCL. These bindings are produced automatically during the software build process. Java, Python and Tcl are powerful languages for rapid software development and provide many modules for creating applications (GUI builder tools, numerics packages, etc.).
VTK runs on most Unix, Linux and Windows platforms. Mac OSX is also supported (Jaguar or later.)
All platforms require CMake to build. CMake is a cross-platform software build tool. It uses hardware, compiler and operating system neutral configuration files to generate Makefiles, workspaces or projects particular to a particular development environment, so developers can use standard development tools on their target platform.
Documentation, Tutorials and Examples
The VTK source code distribution contains an extensive set of working examples. Once you download VTK, the VTK/Examples directory contains examples written in the C++, Tcl, Python and Java languages.
Doxygen generated, on-line VTK class documentation is also available. Method descriptions, inheritance and collaboration diagrams, and other implementation details are available to users developing VTK applications.
Two books are available to learn VTK. The VTK User's Guide describes in detail how to work with the software. The Visualization Toolkit An Object-Oriented Approach to 3D Graphics is a higher-level theory book that describes important data structures and algorithms used in VTK. Both books can be purchased through Kitware or Amazon.com.
File Formats Supported
Some of the files that VTK reads include 3D Studio, AVS Unstructured, BMP, BYU, DEM, DICOM, EnSight, JPEG, OBJ, PDB, PLOT3D, PLY, PNG, PNM, SLC, STL, TIFF, VRML, and VTK XML and simple file formats.
Some of the files that VTK writes include BMP, BYU, CGM, IV, JPEG, PLY, PNG, PNM, PostScript, Renderman, STL, TIFF, and VTK XML and simple file formats.
VTK uses CVS to manage the source code. Instructions for accessing the VTK source repository can be found here.
Size of Community
There are over 2500 subscribers to the vtkusers mailing list.
The VTK copyright is an open-source, Berkely-style license. It allows unrestricted use, including use in commercial products. (The only exceptions are software modules found in the patented software directory.)
VTK is a rapidly expanding software toolkit. While many changes are underway, there are two major areas that impact on NAMIC. Please follow the links to gather more information.
- [InformationVisualizationInVTK|Information visualization] can be used to explore and interact with non-spatial-temporal data. Examples of such activities include exploring image metadata, performing document analysis, or displaying graphs of biological interactions.
- 3D interaction widgets enable the user to directly manipulate and probe their data. Example uses of widgets include manually segmenting data, cropping data to view interior details, and placing fiducials or annotations.