The VTK development team is pleased to introduce VTK 8.2.0.
This release is a minor version update which is meant to make the wealth of improvements that were in the master/development branch available to VTK enabled applications before the big breaking changes coming with VTK 9.0’s new build system. The release continues our path to modernize the code base, generally making better use of modern compiler features and dropping legacy features that are less worthwhile to maintain. Changes in 8.2 include the following aspects.
- We’ve removed support for TCL and Qt4 and we’ve deprecated visual studio 2013 to get more complete c++11 feature support.
- Removed all VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION macros now that we require C++11.
- vtkAbstractArray gained support for runtime user defined free functions, allowing for custom allocator memory to be used with VTK.
- The vtkGeovis classes are now deprecated.
- VTK Python modules have been restructured to support importing specific modules without importing all of VTK. This improves import speeds substantially. To use this, import vtkmodules package instead of vtk.
- vtkpython now supports standard Python command line arguments -v and -vv that can be used to print information about modules being loaded and paths being searched.
- There are now PySide2 bindings for QVTKRenderWindowInteractor.
NEW AND IMPROVED FILTERS
- For mesh quality inspection, the vtkCellValidator accepts as input a dataset and adds integral cell data to it corresponding to the “validity” of each cell. The validity field encodes a bitfield for identifying problems that prevent a cell from standard use, identifying the following: wrong number of points, intersecting edges, intersecting faces, noncontiguous edges, nonconvex, and faces oriented incorrectly.
- vtkMultiObjectMassProperties – added a filter to compute mass properties (e.g., surface, volume) on multiple objects
- vtkContour3DLinearGrid – added an optimized isocontour filter for unstructured grids, ~10-20x or greater speedups on unstructured grids with linear 3D cells
- vtkTrimmedExtrusionFilter – added a filter to extrude a polygonal shape to a trim surface
- vtkDiscreteFlyingEdgesClipper2D – added a filter to generate filled regions from segmented 2D image data
- vtkExtractEnclosedPoints – a threaded, high-speed version to extract points within a closed polygonal surface
- vtkConnectedPointsFilter – added a filter to extract and/or segments points from a point cloud based on geometric distance measures (e.g., proximity, normal alignments, etc.) and optional measures such as scalar range
- 8 VTK-m filters have been exposed in vtk and that share a very similar API to their pure VTK counterparts. Additionally the following filters can be run against CUDA, TBB or OpenMP: PointElevation, Histogram, Probe, NDHistogram, WarpScalar, WarpVector, CoordinateTransform and PointTransform
- vtkSelection now supports combining multiple selection node using boolean expressions and the filters to extract selections have been revamped. The improved vtkExtractSelection filter (the previously implementations is still available as vtkExtractSelectionLegacy) uses a hierarchy of vtkSelector classes to support different types of selections.
- vtkExtractArraysOverTime has been deprecated and replaced by vtkExtractSelectedArraysOverTime. vtkExtractSelectedArraysOverTime internally uses vtkExtractDataArraysOverTime to extract arrays for the selected elements. vtkExtractDataArraysOverTime can also be used directly to extract all arrays from the input dataset, without the need to specify any selection to extract.
- vtkRasterReprojectionFilter (new vtkGeovisGDAL module) to reproject raster data between two geospatial projections using GDAL.
- A new remote module vtkFiltersMomentInvariants adds three filters for calculating the moment tensors of point data, performing pattern detection to identify invariants in the moments, and perform reconstruction of the original data from the moment-invariants. Described in this publication.
- Many fixes and improvements were made to the OBJImporter
- Added vtkFFMPEGVideoSource which can be used to decode video files into images and audio data
- vtkAMReXParticlesReader supports reading particle data from AMReX plotfiles.
- Add new hdf5 reader for the “VERA out” format used by CASL https://www.casl.gov/vera
- There is a new NumberToString class that maintain numerical precision of floating point numbers in serialized ascii string form.
- Updates to XML formats including bit arrays and capture of vtkInformation objects and a massive performance improvement for writing certain types of data.
- Updates to vtkDataCompressor and a new vtkLZMADataCompressor that give greater control on the amount and type of compression used to optimize the space vs time tradeoff in different situations.
- Added support for testing OpenGL capabilities at run time on windows and falling back to Mesa software rendering (see vtkTestOpenGLVersion.h)
- One can now modify or use custom shaders with the GPU volume mapper to tweak final rendering. Improved the usability of custom volume shaders in vtkOpenGLGPURaycastMapper by allowing to declare and set the value of custom uniform variables through a new class (vtkOpenGLUniforms).
- The default method for handling translucent rendering is now a single pass order independent simulated translucency approach which yields much nicer results than the previous alpha blending approach.
- The 3D Glyph mapper has been updated and it can now take in four component vectors and better handle rotations.
- PolyData based mappers now support multi-texturing
- Support for Oculus touch controllers added
- The hardware accelerated volume mapper can now assign a special intensity value for voxels in the clipped area. This can be used to generate smooth surface shaded faces at the clipping interface.
- The volume mapper can now directly render isosurfaces, saving the time and memory usually reserved to first extract isosurface geometry.
- We now have a tone mapping render pass. This is an elegant way to handle scenes like those in the real world that have high luminosity ranges.
Web and Mobile
- Improvement in performance for vtkWeb remote rendering via a new protocol that optimizes bandwidth usage.
- We’ve added the ability to export VTK targets to the Android NDK build system using standard CMake toolchain
- Better support for EGL on Android.
- The Hardware selector picking has been completely reworked such that mappers no longer need to re-upload their data to the GPU when picking. This should show huge improvements in picking speed for large geometries.
- The renderer based Pick method has been rewritten to use the hardware selector.
- vtkHandleWidget gets a new inactive mode which leaves the handle representation visible on screen when the widget is disabled. This allows for modal editing of handles.
- QVTKOpenGLNativeWidget now take the floating point device pixel ratio into account, making the widget work correctly when Qt’s built-in high-DPI scaling is active with a non-integer device pixel ratio.
Documentation and Community
- VTK Textbook, in a conversion effort led by Bill Lorensen, Andrew Maclean and the VTK community is now available online in both LaTeX and Markdown versions.
- VTK Examples, in an effort spearheaded by Bill Lorensen and Andrew Maclean, have been expanded. This includes converting all TCL example to Python and/or C++.
- We have begun the transition from the user and developer mailing lists to a single streamlined modern web interface. Sign up a discourse.vtk.org to see what people are talking about. As with ITK and ParaView, we expect to phase out the older mailing lists completely over the course of the next year.
We hope you enjoy this version of VTK.