[vtkusers] ANNOUNCE VTK version 4.0

Ken Martin ken.martin at kitware.com
Wed Mar 27 09:13:55 EST 2002

We are happy to announce the availability of VTK version 4.0. VTK 4.0
can be obtained source code or precompiled windows binaries from
http://public.kitware.com/VTK/files/release/4.0 Version 4.0 is a major
release and contains a number of new features.  A brief summary of the
changes are included below:

* Changes to vtkDataSetAttributes, vtkFieldData and vtkDataArray: All
attributes (scalars, vectors...) are now stored in the field data as
vtkDataArray's. vtkDataSetAttributes became a sub-class of
vtkFieldData. For backwards compatibility, the interface which allows
setting/getting the attributes the old way (by passing in a sub-class
of vtkAttributeData such as vtkScalars) is still supported but it will
be removed in the future. Therefore, the developers should use the new
interface which requires passing in a vtkDataArray to set an
attribute. vtkAttributeData and it's sub-classes (vtkScalars,
vtkVectors...) will be deprectated in the near future; developers
should use vtkDataArray and it's sub-classes instead. We are in the
process of removing the use of these classes from vtk filters.

* Subclasses of vtkAttributeData (vtkScalars, vtkVectors, vtkNormals,
vtkTCoords, vtkTensors) were removed. As of VTK 4.0, vtkDataArray and
it's sub-classes should be used to represent attributes and fields.
Detailed description of the changes and utilities for upgrading from
3.2 to 4.0 can be found in the package

* Added special methods to data arrays to replace methods like

tc SetTCoord i x y 0
vc SetVector i vx vy vz
in interpreted languages (Tcl, Python, Java). Use:
tc SetTuple2 i x y
vc SetTuple3 i vx vy vz
(examples in Tcl)

* Improved support for parallel visualization:
vtkMultiProcessController and it's sub-classes have been restructured
and mostly re-written. The functionality of vtkMultiProcessController
have been re-distributed between vtkMultiProcessController and
vtkCommunicator. vtkCommunicator is responsible of sending/receiving
messages whereas vtkMultiProcessController (and it's subclasses) is
responsible of program flow/control (for example processing rmi's).
New classes have been added to the Parallel directory. These include
vtkCommunicator, vtkMPIGroup, vtkMPICommunicator,
vtkSharedMemoryCommunicator, vtkMPIEventLog... There is now a tcl
interpreter which supports parallel scripts. It is called pvtk and can
be build on Windows and Unix. Examples for both Tcl and C++ can be
found in the examples directories.

* vtkSocketCommunicator and vtkSocketController have been added. These
support message passing via BSD sockets. Best used together with
input-output ports.

* Since it was causing very long compile times (it essentially
includes every vtk header file) and it was hard to maintain (you had
to add a line whenever you added a class to VTK) vtk.h was removed.
You will have to identify the header files needed by your application
and include them one by one.

* vtkIterativeClosestPointTransform has been added. This class is an
implementation of the ICP algorithm. It matches two surfaces using the
iterative closest point (ICP) algorithm. The core of the algorithm is
to match each vertex in one surface with the closest surface point on
the other, then apply the transformation that modify one surface to
best match the other (in a least square sense).

* The SetFileName, SaveImageAsPPM and related methods in
vtkRenderWindow have been removed. vtkWindowToImageFilter combined
with any of the image writers provides greater functionality.

* Support for reading and writing PGM and JPEG images has been

* Methods with parameters of the form "type param[n]" are wrapped.
Previously, these methods were only wrapped if the array was declared
'const'. The python wrappers will allow values to be returned in the

* The directory structure was completely reorganized. There are now
subdirectories for Common (core common classes) Filtering
(superclasses for filtering operations) Imaging (filters and sources
that produce images or structured points) Graphics (filters or sources
that produce data types other than ImageData and StructuredPoints) IO
(file IO classes that do not require Rendering support) Rendering (all
actors mappers annotation and rendering classes) Hybrid (typically
filters and sources that require support from Rendering or both
Imagign and Graphics) Parallel (parallel visualization support
classes) Patented (patented classes) Examples (documented examples)
Wrapping (support for the language wrappers).  In many directories you
will see a Testing subdirectory. The Testing subdirectories contain
tests used to validate VTKs operation. Some tests may be useful as
examples but they are not well documented.

* The Build process for VTK now uses CMake (found at www.cmake.org)
This replaces pcmaker on windows and configure on UNIX. This resolves
some longstanding problems and limitation we were having with pcmaker
and configure, and unifies the build process into one place.

Ken Martin, PhD
Kitware Inc.
518 371-3971 x101
469 Clifton Corporate Pkwy.
Clifton Park, NY 12065

More information about the vtkusers mailing list