VTK 7.0.0

The Visualization Toolkit (VTK) development team is happy to announce the seventh major release of VTK. For the source, data, and vtkpython binary packages, please visit VTK’s website. To learn about the VTK 7.0 Release Webinar, which includes a Q&A session and is scheduled for February 3rd at 2 pm EST, read our blog entry.

The big news is that the OpenGL “new” backend  is now the default. The new rendering backend uses less system memory and runs faster than the legacy rendering path for both surface and volume rendering. In addition, for the first time, VTK is compatible with Python 3. The Python 3 update, thanks largely to David Gobbi, extends VTK’s wrapping infrastructure to produce either Python 2 or 3 bindings, depending on the CMake configuration choice for VTK_PYTHON_VERSION.

Other new functionality includes the following:

  • Flying Edges isocontour and clip filters as well as related Shared Memory Parallel accelerated utilities such as vtkStaticCellLocator, vtkStaticCellLinks, and vtkSMPTools::Sort();
  • off-screen rendering through Embedded-System Graphics Library (EGL), i.e., headless and without the need for X11;
  • parametric surfaces such as Kuen’s surface, Pseudosphere, Bohemian Dome, Henneberg’s minimal surface, Catalan’s minimal surface, Bour’s minimal surface, and Plucker’s conoid;
  • multi-threaded Python codes facilitated by VTK’s new and optional protocol for using the Global Interpreter Lock
  • the ability to embed all vtkProps in vtkContext2D renderings via vtkPropItem wrappers;
  • a vtkPUnstructuredGridGhostCells filter that efficiently creates ghost cells in Distributed Memory Parallel contexts (Figure 1);
  • numerous capabilities for the OpenGL2 backend including Super-Sample Anti-Aliasing (SSAA), DepthOfField, and ShadowMap passes; user-specified shaders for vtkPointGaussianMapper; and scale and opacity piece-wise mapping functions (figure 2);
  • printf-style format strings for numerical labels on vtkAxis
  • multitouch interaction as well as general Android and iOS mobile device support; and
  • two new options for vtkGradientFilter: one to output divergence for vector fields and one to omit the full gradient output. This is important because the gradient output may be large and yet unnecessary when only the vorticity or divergence are of interest.

VTK 7.0 includes optimizations made to the following:

  • Contingency Statistics class, providing a significant performance boost when using only integer or floating point data;
  • depth sorting code, making depth sort in tests two to three times faster;
  • vtkProbeFilter, changing the loop order to significantly speed up the case of resampling onto regular grids;
  • vtkPolyDataNormals and vtkSmoothPolyData filters;
  • vtkStripper, creating longer and thus more compact strips; and
  • Application Visualization System (AVS) Unstructured Cell Data (UCD), Exodus, Model for Prediction Across Scales (MPAS), OBJ, and Polygon File Format (PLY) file format handling, introducing Medical Research Council (MRC) image and GeoJSONReader polygonal readers.

Some of the changes that affect building and using VTK in applications include the following:

  • the new rendering backend requires OpenGL3.2 core features;
  • deprecated vtkStreamer and related classes (use vtkStreamTracer instead);
  • removed vtkFreeTypeUtilities;
  • removed workarounds for old MIPS, SGI, HP, and DEC compilers and added fixes for the PGI compiler;
  • removed support for GNU Compiler Collection (GCC) 4.1, making 4.2 or better a requirement;
  • improved support for Visual Studio 2015 and for Microsoft Message Passing Interface (MS-MPI);
  • added a new option (when building with newer versions of CMake) to build with C++11 support;
  • replaced vtksys_stl:: and vtksys_ios:: with std::;
  • removed support for OSX10.5 Leopard and the Carbon (OSX9 compatibility layer) application programming interface (API);
  • made Java 1.6 the minimum version that is tested, meaning that version 1.5 may not work; and
  • finally, made QtWebKit easier to do without, as it is no longer part of the Qt build group.

For an upgrade report, see http://www.vtk.org/Wiki/VTK/API_Changes_6_3_0_to_7_0_0.

There are also many bug fixes across the codebase.

We hope you enjoy this release of VTK! Please try it out, and report any issues to the mailing list or the bug tracker. As always, you can contact Kitware for assistance leveraging VTK for your HPC and visualization needs.


Figure 1: An engineering model of an airplane before (top) and after (bottom) ghost cells are added to the model to correct parallel artifacts such as incorrect translucency.

depth of field and shadows

Figure 2: A molecule rendered in VTK on a commodity laptop with shadows and depth of field effects.

4 Responses to VTK 7.0.0

  1. Min says:

    I’,m using vtk 7.0, but I got the error message of ‘SetVolumeRayCastFunction’ : is not a member of
    ‘vtkFixedPointVolumeRayCastMapper’. Is there any way to solve this problem? Thank you very much.

  2. Sankhesh Jhaveri says:

    You can use the vtkVolumeMapper::SetBlendMode() (http://www.vtk.org/doc/release/7.0/html/classvtkVolumeMapper.html#a81fea5756f30389bc98ce07b4373fa50) in conjunction with vtkVolumeProperty (http://www.vtk.org/doc/release/7.0/html/classvtkVolumeProperty.html) API to set the appropriate function parameters.

    Hope this answers your question. You can also use the VTK mailing lists (http://www.vtk.org/mailing-lists/) as a great resource for VTK related questions.

  3. Pingback: More about HPC - SESAME Net

  4. superains says:

    hi ,i use qt5.7 with vtk7.1 ,but when i use qvtkwidget to show unstructredgrid data,the image is not normal(it become many region transparent), when in vtk 5.10and qt4.8.6 ,it’s ok; anyone find it?

Questions or comments are always welcome!