I
n this tutorial we introduce basic concepts
behind the Visualization Toolkit (VTK). An
overview of the system, plus some detailed examples,
will assist you in learning this system. The tutorial tar-
gets researchers of any discipline who have 2D or 3D
data and want more control over the visualization
process than a turn-key system can provide. It also
assists developers who would like to incorporate VTK
into an application as a visualization or data process-
ing engine. Although this tutorial can only provide an
introduction to this extensive toolkit, we’ve provided
references to additional material.
What is VTK?
VTK
1
is an open-source (see the sidebar “Open
Source Breakout”), portable (WinTel/Unix), object-ori-
ented software system for 3D computer graphics, visu-
alization, and image processing. Implemented in C++,
VTK also supports Tcl, Python, and Java language bind-
ings, permitting complex applications, rapid applica-
tion prototyping, and simple scripts. Although VTK
doesn’t provide any user interface components, it can be
integrated with existing widget sets such as Tk or
X/Motif.
VTK provides a variety of data representations includ-
ing unorganized point sets, polygonal data, images, vol-
umes, and structured, rectilinear, and unstructured
grids. VTK comes with readers/importers and writ-
ers/exporters to exchange data with other applications.
Hundreds of data processing filters are available to oper-
ate on these data, ranging from image convolution to
Delaunay triangulation. VTK’s rendering model sup-
ports 2D, polygonal, volumetric, and texture-based
approaches that can be used in any combination.
VTK is one of several visualization systems available
today. AVS
2
was one of the first commercial systems
available. IBM’s Data Explorer (DX),
3
originally a com-
mercial product, is now open source and known as
OpenDX. NAG Explorer
4
and Template Graphics Amira
(see http://www.tgs.com/Amira/index.html) are other
well-known commercial systems.
VTK is a general-purpose system used in a variety of
applications, as seen in Figure 1. Because VTK is open
source, faculty at many universities—including Rens-
selaer Polytechnic Institute, State University of New York
at Stony Brook, the Ohio State University, Stanford, and
Brigham and Women’s Hospital use VTK to teach cours-
es and as a research tool. National labs such as Los Alam-
os are adapting VTK to large-scale parallel processing.
Commercial firms are building proprietary applications
on top of the open-source foundation, including med-
ical visualization, volume visualization, oil exploration,
acoustics, fluid mechanics, finite element analysis, and
surface reconstruction from laser-digitized, unorga-
nized point-clouds.
VTK began in December 1993 as companion software
to the text The Visualization Toolkit: An Object-Oriented
Approach to 3D Graphics by Will Schroeder, Ken Martin,
and Bill Lorensen (Prentice Hall). In 1998 the second
edition of the text appeared, with additional authors
Lisa Avila, Rick Avila, and Charles Law. Since that time
a sizable community has grown up around the software,
including dozens of others as developers, often submit-
ting bug fixes or full-blown class implementations.
These community efforts have helped the software
evolve. For example, David Gobbi in the Imaging
Research Laboratories at the John P. Robarts Research
Institute, University of Western Ontario, has reworked
VTK’s transformation classes and is now an active
developer.
Architecture
VTK consists of two major pieces: a compiled core
(implemented in C++) and an automatically generated
interpreted layer. The interpreted layer currently sup-
ports Tcl, Java, and Python.
C++ core
Data structures, algorithms, and time-critical system
functions are implemented in the C++ core. Common
design patterns such as object factories and virtual func-
tions insure portability and extensibility. Since VTK is
independent of any graphical user interface (GUI), it
doesn’t depend on the windowing system. Hooks into
the window ID and event loop let developers plug VTK
into their own applications. An abstract graphics model
(described in the next section) achieves graphics
portability.
0272-1716/00/$10.00 © 2000 IEEE
Tutorial
20 September/October 2000
William J. Schroeder, Lisa S. Avila,
and William Hoffman
Kitware
Visualizing with
VTK: A Tutorial