This page catalogs some of the important features of VTK with links for further exploration.
VTK is free for you to obtain and use for any purpose. Technically, VTK has a BSD-style license, which was chosen because it imposes minimal restrictions on using VTK for both open- and closed-source applications.
VTK is designed to be platform agnostic, and it should be possible to compile and run it just about anywhere. Our CMake build scripts adapt the source code and use the native compiler or cross-platform compiler toolchain to build it to run everywhere.
The core functionality of VTK is written in C++ to maximize efficiency. That core is then wrapped into other language bindings to expose VTK’s functionality to a wider audience. Currently, VTK’s build system has built-in support to generate primary bindings to Python, Java, and Tcl. External bindings to Ada and C# are also available.
VTK’s core data model is able to represent almost any real-world problem with which physical scientists are likely to work. The primary dataset classes are vtkImageData, vtkRectilinearGrid, vtkStructuredGrid (finite difference grids), vtkPolyData, and vtkUnstructuredGrid (finite element meshes).
VTK applications are largely constructed by connecting vtkAlgorithms together. Each algorithm (a.k.a. filter) inspects the dataset or datasets it is given and produces some derived data for the algorithm (or algorithms) connected to it. The connected set of filters forms a data-flow network.
The modeling algorithms are the loose assortment of filters that manipulate data geometry and topology. These shape-altering functions are very useful in visualization practice, as they let you manipulate information into a more visually comprehensible format.
In the context of visualization, image processing is most often used to manipulate image content (either two- or three-dimensional images) and improve the results of subsequent processing and interpretation. VTK is quite capable at working with images.
VTK adds a rendering abstraction layer over the system’s graphics library (OpenGL for the most part). VTK’s graphics system primarily exists to create surface and volume renderings of scientific datasets. But, in VTK, there are a great number of support classes provided that help you create compelling visualizations.
VTK can do more than just draw qualitative pictures of the data. For starters, picking and selection allow for interactive querying of the data. VTK has its own suite of MPI-scalable statistical analysis algorithms and interfaces to external tools like Python and R.
Displaying data is good, but interactively manipulating it is better, as it helps provide you with a greater understanding of its shape and meaning. The vtkRenderWindow subclasses provide a unified interface to displays tailored to the interfaces of a variety of Operating Systems and GUI toolkits.
VTK’s data flow pipeline has proven to be quite effective for the more general task of working with arbitrary, not spatially-situated, data. This is called Information Visualization, or InfoVis.
VTK has excellent support for distributed-memory parallel processing under MPI, as exemplified by ParaView. Here, we make use of the aggregate memory of the many nodes in a cluster or HPC machine, perform a depth composite during rendering, and are, thus, able to process and visualize extremely high-resolution datasets.