The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, modeling, image processing, volume rendering, scientific visualization, and 2D plotting. It supports a wide variety of visualization algorithms and advanced modeling techniques, and it takes advantage of both threaded and distributed memory parallel processing for speed and scalability, respectively.
VTK is designed to be platform agnostic. This means that it runs just about anywhere, including on Linux, Windows, and Mac; on the Web; and on mobile devices.
VTK employs Kitware’s quality software process, which includes CMake, CTest, CDash, and CPack to build, test, and package the system. Combined with a strong distributed developer community, the result is very high-quality, robust code. The core functionality of VTK is written in C++ to maximize efficiency. This functionality is wrapped into other language bindings to expose it to a wider audience. Interoperability with Python is particularly well-refined.
As open source software, VTK is free to use for any purpose. Technically, VTK has a BSD-style license, which imposes minimal restrictions for both open and closed source applications.
For statistics on VTK, please refer to its Open Hub page.
VTK was originally part of the textbook The Visualization Toolkit An Object-Oriented Approach to 3D Graphics. Will Schroeder, Ken Martin, and Bill Lorensen—three graphics and visualization researchers—wrote the book and companion software on their own time, beginning in December 1993, with legal permission from their then-employer, GE R&D. The motivation for the book was to collaborate with other researchers and develop an open framework for creating leading-edge visualization and graphics applications.
VTK grew out of the authors’ experiences at GE, particularly with the LYMB object-oriented graphics system. Other influences included the VISAGE visualization system developed by Schroeder et. al; the Clockworks object-oriented computer animation system developed at Rensselaer Polytechnic Institute; and the Object-Oriented Modeling and Design book, which Bill Lorensen co-authored.
After the core of VTK was written, users and developers around the world began to improve and apply the system to real-world problems. In particular, GE Medical Systems and other GE businesses contributed to the system, and researchers such as Dr. Penny Rheinghans began to teach with the book. Other early advocates include Jim Ahrens at Los Alamos National Laboratory and generous oil and gas supporters.
To address what was becoming a large, active, and world-wide community, Ken and Will—along with Lisa Avila, Charles Law, and Bill Hoffman—left GE in 1998 to found Kitware, Inc. Since that time, hundreds of additional developers have turned VTK into what is now the premier visualization system in the world. Sandia National Laboratories, for example, has been a strong supporter and co-developer, revamping 2D charting and information visualization in VTK.
VTK applications manipulate data with filters. Each filter inspects the data it receives and produces derived data. A connected set of filters forms a dataflow network. A configurable network turns raw data into more visually comprehensible formats.
VTK adds a rendering abstraction layer over the underlying graphics library (OpenGL for the most part). This higher level simplifies the task of creating compelling visualizations.
VTK’s core data model has the ability to represent almost any real-world problem related to physical science. The fundamental data structures are particularly well-suited to medical imaging and engineering work that involves finite difference and finite element solutions.
Interaction helps you understand the content, shape and meaning of data. In VTK, 3D widgets, interactors, and interfaces to 2D widget libraries like Qt enable you to add comprehensive user interaction to your programs.
2D Plots and Charts
VTK has a full set of 2D plot and chart types for tabular data. VTK’s picking and selection capabilities help you interactively query your data. In addition, VTK is very interoperable with Python, including Matplotlib.
VTK has excellent support for scalable distributed-memory parallel processing under MPI. What is more, many VTK filters implement finer-grained parallelism via vtkSMP (for coarse-grained threading) and vtk-m (for fine-grained processing on many-core and GPU architectures).
VTK is an open-source toolkit licensed under the BSD license.
Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Many institutions have taken part in the development of VTK. Some of the most fundamental work came from the following:
If you need more logos (different sizes or background colors), please contact firstname.lastname@example.org.