This is an archival dump of old wiki content --- see for current material

3D Visualization BOF

VTK: A library

  • Pros: Powerful, huge, large dev community, mindshare. Kitware is behind it, serious company.
  • Cons: HUGE! complex (it's a hard problem), build, install not Pythonic.
  • Whine: CMake?

VTK has too many algorithms that go beyond pure graphics. It is not easy to plug things in the middle of VTK.

Eric Jones: one could provide a few stub classes in C++ that allow one to override the algorithms.

You can control the execution model of the pipeline in C++, though not in Python.

Visit: VTK-based user tool

Built at Lawrence Livermore National Lab around 2001.

QT application with VTK embedded. View and remote parallel systems are all separate. Abstracted C++ class to control the view object. These views can then talk to the remote data workers.


Powerful, Parallel, Python, remote data access. They read an enormous number of data file formats.

Strongly funded by DOE for their PetaScale computing initiative.

Java, Python, C++ bindings.


user base? Reusable? Limitations on number of views? Writing a reader for your data is unpleasant. They use custom data types instead of the default VTK ones.

Python interface

a direct wrapping of the C++ object that controls the view. However, there is NO Python access to the actual data, so no way of doing Python-controlled numerics. They do have operators and an expression syntax, but it's not the full Python language/toolkit.


Around a dozen full-time staff. Very good documentation, how to write readers.


Built by Kitware, funded by Sandia, built from the ground up for parallel rendering. Uses and enhances the VTK parallel rendering capabilities.

They have a server manager (C++) that controls data processing engines and data rendering engines. The output of rendering engines is then composited by the Server Manager for display.

The Server Manager recently moved to Python/Qt, with incipient Python scripting support.


Powerful, parallel, large dev community, major tool


Not too pythonic.

Differences with VisIt?

They are very similar technologies/architectures. VisIt has a strong emphasis on extremely large datasets. ParaView seems to have a more open development process, they are very strongly into testing. Kitware has done a lot of work on testing VTK, even though it's a hard library to test.

Their DART system is very robust and they use it consistently.


This is specific to MayaVi2.


Very Pythonic, simple, very reusable. Pluggable.


Mlab makes it very flexible to do simple things.


No parallel support, developed by 1.x persons. User base?


Great control, the rendering can be delegated to POVRay for high-quality rendering.

GMSH tool

FEM mesh visualization tool.


Not really a scientific visualization tool.


More of a CAD tool, aimed towards.


From SDSC, strictly volume rendering, pure C++, no Python interface or bindings.




Rendering tool with Python interface.

Michel Sanner's tools

Non-VTK, more open platform in algorithmic terms.

Numeric is his only dependency.

Most users don't actually code anything, since they use the Vision interface.

His tools are going to be open sourced soon, license to be determined (BSD or GPL).

What do people want?

  • Good, easy off-screen rendering without hacks like mangledMESA or xvfb.
  • More pluggability in VTK to modify algorithms, change execution flows.
  • Better support for parallel rendering. ParaView does a lot of work itself beyond what VTK offers. Easy access to desktop/commodity-level parallel hardware (not everyone needs to render 50 TB of data everyday).

Parallel rendering?

  • Use a large cluster for off-line rendering of enormous datasets.
  • Easy use of desktop multicore machines.
  • Decimation/level of detail support ?

SciPy: SciPy2007/3dVisNotes (last edited 2015-10-24 17:48:24 by anonymous)