VTK

Visualization toolkit

By Elaine Jiang

Edited Spring 2021 By Kota Soda

Description

VTK is an object-oriented system. The two major components of VTK are the visualization pipeline and the rendering engine. The visualization pipeline includes obtaining or creating data, processing the data, and writing the results to a file or passing the results to a rendering engine or display. The rendering engine is responsible for creating a visual representation of the data.

There are a couple commonly used objects in the rendering engine that will be useful to know to get started. These are:

  • vtkProp - visual depictions of data that exist in the scene. The most common subclass of vtkProp for displaying objects in 3D are vtkActor.

  • vtkAbstractMapper - provides the actual rendering functionality of input data. Props such as vtkActor use a subclass of vtkAbstractMapper to render data.

  • vtkProperty - holds parameters (e.g. color, texture, opacity) that control the appearance of the data

  • vtkCamera - contains the parameters (position, focal point, and up vector) that control how you view the scene

  • vtkLight - stores the position and orientation of lights in the scene, as well as the color and intensity

  • vtkRenderer - responsible for managing the rendering process for the scene; all the objects that make up a scene are collected together in a vtkRenderer

  • vtkRenderWindow - provides a connection between the operating system and the VTK rendering engine; responsible for opening a window on your computer

  • vtkRenderWindowInteractor - responsible for processing user events such as mouse, key, and timer events


Official Resources

Official Documentation: VTK Textbook

User Support: VTK User Guide, VTK Mailing List

Installation Guide: Provide a link to the official installation guide or create one that you made on your own


Usable Environments

Recommended System Requirements

  • VTK works best with Windows, Mac, and Linux with the most up to date OpenGL

Metrics

Accessibility: The estimated time for someone to create Hello World in VR

  • Beginner: No coding or graphics experience | 5+ hours

  • Intermediate: Some coding or graphics experience | 2 hours

  • Advanced: Both coding and graphics experience | 1 hours

  • Expert: A lot of experience with computer graphics | 20 min

Power: The engine's power - i.e. how much one can do with this

  • High: Intended for developers with years of graphics experience

Usage: Evaluation of software's use for the following purposes

  • Science - main field of use for VTK

Software Performance

Data Visualization Summary

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.

Filters

Overview: 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.

Required Skillset/Experience Level:

Expected Time:

Bugs:

Graphics System

Overview: 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.

Required Skillset/Experience Level:

Expected Time:

Bugs:

Data Model

Overview: 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.

Required Skillset/Experience Level:

Expected Time:

Bugs:

Data Interaction

Overview: 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.

Required Skillset/Experience Level:

Expected Time:

Bugs:

2D Plots and Charts

Overview: 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.

Required Skillset/Experience Level:

Expected Time:

Bugs:

Parallel Processing

Overview: 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).

Required Skillset/Experience Level:

Expected Time:

Bugs:

Cost

  • Free (Open source)

Sources

Visualization Toolkit. 2018 Kirware, Inc. www.vtk.org

The VTK Users Guide: 11th Edition. 2010 Kitware, Inc. https://www.kitware.com/products/books/VTKUsersGuide.pdf