3D Visualization BOF
Contents
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 ?