This is an archival dump of old wiki content --- see scipy.org 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.

Pros

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.

Cons

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.

Developers

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

ParaView

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.

Pros

Powerful, parallel, large dev community, major tool

Cons

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.

MayaVi

This is specific to MayaVi2.

Pros

Very Pythonic, simple, very reusable. Pluggable.

Traits.

Mlab makes it very flexible to do simple things.

Cons

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

Blender

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

GMSH tool

FEM mesh visualization tool.

POVRay

Not really a scientific visualization tool.

BRLCad

More of a CAD tool, aimed towards.

Vista

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

Pixie

Renderman-compatible.

Gelato

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)