October 2011: Recent Releases

VTK 5.8.0 Released
VTK 5.8.0 was released on September 15, 2011. This major release contains several noteworthy additions and improvements. The VTK 5.8.0 release provides binary packages of the vtk tcl interpreter and vtkpython for Windows, Mac and Linux, which will be available on the download page.

The Python wrappers for this release were expanded to include many classes, methods, and constants that were not previously wrapped. This includes the automatic wrapping of three templated classes (vtkSparseArray, vtkDenseArray, and vtkVector), and several important lightweight VTK types, such as vtkVariant, that are not derived from vtkObject. The wrapping of VTK methods now supports unicode strings arguments, two-dimensional array arguments, pass-by-reference, and default argument values. In addition, an expanded parser and preprocessor for the wrappers have enabled automatic typedef resolution and wrapping of all VTK constants. The Python wrappers also have a new PyQt translation layer that allows VTK objects to be passed to PyQt methods and vice versa. As part of the wrapper improvement effort, the code for the wrappers has been reorganized and cleaned up to make it easier to expand and maintain.

Motor bike tutorial case that comes with OpenFOAM. The image uses polyhedra
for split-hex mesh refinement and surface conforming boundaries

VTK charts have been updated to make use of the 2D scene, with new text rendering and improved OpenGL rendering routines. New chart types such as pie charts and 2D histograms have been added. The scatter plot and parallel coordinate plots can be colored by a scalar array, and multiple charts can now be rendered in the same scene. The old Qt-based charts have now been deprecated, and are not built by default.

VTK 5.8.0 now supports polyhedron cells, which can be applied to computational fluid dynamics (CFD) and other similar applications. Support for polyhedron cell type includes the addition of a new cell class called vtkPolyhedron that implements common APIs of vtkCell3D, the extension of vtkUnstructuredGrid for storage and access, and modification of vtkXMLUnstructuredGridReader/Writer for I/O to accommodate polyhedron meshes. Additionally, a mean value coordinates (MVC) interpolation method, implemented as a filter called vtkMeanValueCoordinateInterpolator, has been added. This filter is used to smoothly interpolate/extrapolate point attributes (scalars, vectors, etc.) at a given point interior, exterior or on the surface of polyhedron cells.

A new GPU-based mapper, vtkGlyph3DMapper, is now available. It is similar to the vtkGlyph3D filter except that it uses the GPU to do the glyphing, differentiating it from a vtkPolyDataAlgorithm. In the case where there is a large number of complex glyphs, this results in a significant reduction in memory usage and great increase in performance.  The mapper provides the ability to color, scale and orient each glyph individually as well as the ability to glyph only a subset of the input points via masking.

VTK now contains HDF5 1.8.5, which has been migrated out of ParaView. This allows VTK developers to easily utilize HDF5 storage in their readers. In future VTK releases, we will integrate HDF5 storage into vtkNetCDF as well.

ParaView 3.12
The Kitware team is working on ParaView 3.12, which is stated for release in early October. ParaView 3.12 can be considered as a bug-fix release with over 180 issues resolved. The detailed list can be found at http://www.paraview.org/Bug/changelog_page.php.

Since Python is one of the preferred means of interacting with ParaView, we have added support to create animation tracks that use Python scripts to build highly customized animations.

Plugins support is one of the strong points of ParaView and with this release, we have made it easier to load deployed plugins on the server processes as well. All distributed plugins are now listed on both the client and the server side.

The release includes updates to LANL’s streaming framework. The multiresolution streaming view now automatically adjusts resolution to match the projected image size. Also, VTK filters can now modify meta-information, which means they can modify data while still allowing the streaming framework to cull and prioritize pieces. An example is a new spherical warp filter that projects flat data onto the globe while correctly tracking piece bounding boxes.

There are also updates to support users of the cosmology and windblade formats. For example, the MaskPoints filter (used to place glyphs and in other places) was updated with new options that improve random sampling in parallel. Likewise, VTK’s Gaussian Splatter filter is now exposed in ParaView which makes it easy to visualize point set data with imaging filters. The cosmo and windblade readers have also been revised.

ParaView 3.12 includes improvements to the underpinnings of ParaView ServerManager. The communication layer under the ParaView ServerManager was upgraded to minimize communication and make it easier to debug and trace messages being exchanged between client and server. We now use Google Protocol Buffers, for example, to exchange messages between client and server.

In addition, there are several small but notable improvements included in this release. For example, the views now use caching to avoid re-renders from repaints due to menus and dialogs popup up on the screen; volume rendering of uniform grids now supports shading; and there is the ability to enable specular highlights when using scalar coloring.
The development team has adopted a git-workflow-based development process that is integrated with the ParaView Bug Tracker (http://paraview.org/Bug). The workflow enables us to track every change that goes into ParaView and maintain a stable repository.

The complete updated userguide can be accessed on the ParaView Wiki at http://www.paraview.org/Wiki/ParaView/Users_Guide/Table_Of_Contents.

The Beta version of ITKv4 was released on September 15th. This version includes a large number of changes resulting from the massive effort for revising, simplifying, and accelerating ITK.  Features in the Beta release are still works in progress, but are mature enough for brave adopters to give them a try and to provide early feedback on the design and implementation of the code.

The main features of this Beta release are:
License. The license of ITK has been changed to Apache 2.0. This is a more modern, precise and professional license than BSD, that still empowers the community to make full use of the toolkit without significant restrictions.
ITK has been modularized. The monolithic source of the toolkit has been restructured to facilitate enabling and disabling particular sections of the code, as well as to facilitate the creation and distribution of external modules (more details on Modularization in the “Divide and Conquer” article in the July 2011 issue of the Source.

New Level Sets Framework. A new collection of level set classes has been added to the toolkit. The classes provide a more modular approach to the construction of Level Sets. In particular, they support the addition of arbitrary terms to the Level Set equation, and use an arbitrary number of Level Sets simultaneously (multi-phase level sets). A new family of Level Set paradigms that use multi-layer computations in order to speed up computation and reduce memory consumption was also added.

New Registration Framework. New registration components now support advanced registration methods. In particular, a CompositeTransform, in which a set of standard transforms can be concatenated; a DisplacementField transform that is equivalent to a warping field; a family of optimizers that are crafted to manage parametric space of very large dimensions (in the order of millions) and that are suitable for interacting with displacement field transforms. Additional classes that implement image metrics are expected to be added between this Beta release and the final ITKv4 release.
Refactored FEM classes. The FEM framework is revised and restructured to fully support its use in the solution of standard FEM problems such as the modeling of bone structures.

File Formats. The support for multiple file formats has been improved. JPEG2000 was added as a native format. TIFF was upgraded to version 4.0Beta7, which includes support for BigTIFF and therefore can now manage images larger than 4GB. Support for HDF5 has also been introduced.

DICOM Support. The GDCM library has now been updated to version 2.0.

Modern C++. Support for older compilers was dropped and as a consequence it was possible to clean up the code from a large number of conditions that were introduced over the years to deal with the idiosyncrasies of some of those compilers. Visual Studio 6.0 and 7.0, Borland 5.5 and the SGI compilers are no longer supported.

A large number of other changes have been made across the toolkit in a massive effort to clean up the past ten years of development and to prepare it for the next decade. Please give it a cautious try and share your feedback with the developers. They will continue working hard in ITKv4 until the end of the year and appreciate all your comments.

Questions or comments are always welcome!