Scientific Visualization

We give here descriptions of a set of tools which cover the functions needed by most researchers for their scientific visualization needs. These are all packages supported by the Research Computing Services group. The packages described below range from quite general to very specific.

The general purpose numeric programs MATLAB and IDL include user interfaces and scripting languages for reading and processing data, performing computations, and producing visual output in a variety of ways. Some researchers may be able to do all of their work using one of these two packages.

More specialized and powerful scientific visualization is provided by VTK and ParaView software. VTK is a set of libraries providing a suite of 3-d manipulation tools which programmers can build on top of. ParaView is an interactive tool built on top of VTK, allowing importation of data, and visualization, with no programming.

For graphics programming, OpenGL is the established API for scientific and engineering applications. OpenSceneGraph is a higher-level programming library built on top of OpenGL.

Autodesk Maya provides beautiful rendering and animation capabilities, but no numeric functions and no scientific visualization tools. You need to produce the geometric models in another package and bring them into Maya.

Adobe Photoshop, the GIMP, and ImageMagick are image manipulation tools, and Adobe Premiere is a video production package. Each of these is useful for post-processing tasks.

We do not cover plotting or image file manipulation in this online tutorial, but you may find our tutorials on those topics helpful: Introduction to Plotting Packages Tutorial, Introduction to Image Files Tutorial.

A complete list of software available on RCS administered machines is available on the RCS Software Packages page. Below are descriptions of the tools most relevant to visualization.

  • Experiments, Simulations: Any scientific visualization naturally begins with a scientist doing science :) There are a huge number of instruments and techniques for producing data – and obtaining data is the first step in visualization.
  • Custom code: You may want or need to write your own software for performing any part of the process. This may be writing everything from simulation to animation, or it may be adding a few lines of code to write out data in a form which can be easily imported into a visualization program.
  • MATLAB: MATLAB is a numerical computing package which has gained wide popularity in the science and engineering communities. This is quite true in higher educational institutions. BU provides MATLAB for our community. It is robust, well-documented, and has a wide set of functionality. The user can write scripts using an editor and run them using MATLAB, or can interact with the MATLAB graphical-user environment. MATLAB began its life dealing with matrices, and that “two-dimensional” basis still permeates the style of the programming one uses. MATLAB provides a large set of plotting options, and provides the standard basic visualization tools, as well. The quality of the rendering, and interaction viewing performance, are not as high as can be obtained with a more specialized visualization package. It is fairly straightforward to write MATLAB routines to write out data in a form usable by some of our other programs. (RCS help page: MATLAB, RCS tutorial: Introduction to MATLAB , RCS tutorial: Using MATLAB to Visualize Scientific Data , IS&T help page: MATLAB )
  • IDL: IDL is a numerical computing package similar in many ways to MATLAB. It has long been popular in the astronomy and remote sensing communities. It has a clean general approach to multi-dimensional data. It provides plotting and some 3-d graphics. As with MATLAB, it is not hard to write data out from IDL so that it may be imported into an interactive graphics package. (RCS help page: IDL, RCS online tutorial: IDL)
  • VTK: The Visualization Toolkit (VTK) is an open source set of graphics libraries, accessible using C++, Tcl, Perl, Python, or Java. The developers’ intent is that VTK code be platform independent. VTK is actively used in laboratories and universities around the world. If you want to write programs or scripts to do your own visualizations, VTK supplies a powerful set of tools to do so, including all of the usual visualization techniques, and data management and geometry processing functions. The graphics interaction windows provide flexibility and there are a number of interaction/navigation options. (RCS help page: VTK, RCS online tutorial: VTK)
  • ParaView: ParaView is an open source, freely available visualization application built on top of VTK. While it has features for data, task, and pipeline parallelism, we find that its greatest strength is as an interactive visualization tool. Loading datasets is easy once you have your data files in an appropriate format, and it is easy to quickly develop a complex and effective visualization interactively. The array of tools provided (via VTK) and the ease of interaction make this the tool of choice for non-programming visualization. (RCS help page: ParaView, RCS online tutorial: ParaView)
  • OpenGL: OpenGL (the Open Graphics Library) is a standard specifying an API for applications that produce 2-d and 3-d computer graphics. This is used as the graphics interface for many CAD, simulation, engineering, and scientific visualization applications. If you want to write programs to control every aspect of your graphics, this is the level at which you will be working – sending every vertex, every normal vector, every color and texture map to the GPU. This requires learning a fair amount of low-level graphics programming, which is often not necessary for the scientist. But it is a portable and powerful way to build graphics into your program. RCS help page: OpenGL
  • Open Scene Graph: OpenSceneGraph is an open source high performance 3-d graphics toolkit. A scene graph is a hierarchical representation of all elements of a visual scene – once you have constructed this directed graph, the underlying libraries will traverse it and render the objects represented by it. It is sort of half-way between OpenGL and VTK. You don’t need to write OpenGL code to render every aspect of the model, but you can work at that level on the occasions when you need to. It also has the benefit of managing the window system, taking one of the more onerous parts of graphics programming off your back. It also supplies many helpful utilities for doing transformations, navigation, data simplification, etc. (RCS help page: Open Scene Graph)
  • Autodesk Maya: Maya is an interactive, professional 3-d graphics, modeling, and animation program. It is used in the movie, television, and game industries, as well as for design and architectural rendering. Many of the gorgeous scientific visualizations seen in documentary and educational programs were rendered, at least in part, using Maya. If you want to produce beautifully-lit, high resolution images of your 3-d models and simulations, this is the way to go. It has a steep learning curve, so a commitment is required before getting a return on your training time. There is also a fair amount of effort converting files into a format which can be brought into this program. (RCS help page: Maya)
  • Adobe Photoshop: Photoshop is the most prominent commercial tool for image manipulation. You may find it useful for interactive image resizing, cropping, composition, and color manipulation, and so on. There is also a scripting mechanism to help you automate your work.
  • Gimp The GNU Image Manipulation Program is an open source interactive raster image manipulation program which works on many platforms. GIMP provides much of the functionality of Photoshop.
  • ImageMagick: ImageMagick is an open source, command-line driven set of programs for manipulating images. A wide variety of image formats are supported, so this is an invaluable tool for format conversion. The tools also provide an extensive set of options for manipulating images as well. RCS help page: ImageMagick
  • Premier: This is a video editing package, useful in our context for taking sequences of still images and combining them into videos suitable for playback on the web, DVDs, etc.
  • Journals, Web browsers, Projectors: While you can go a long way doing experimentation and exploration using the systems which are most convenient, sooner or later you will undoubtedly want to present your work to others. The final destination may well drive the need to rerun visualizations, switch to tools which produce a specific type of output, and require skills which are not within the domain of the research itself.

The table below shows (roughly) where the packages you are most likely to use fall in the visualization pipeline.

Tool Produce Input Data Analyze, Filter, Reformat Apply Sci Vis Techniques Map to Geometry Render Postprocess View Results
Experiments, Simulations Y
Custom code x x x x x x x
MATLAB x Y x x x x
IDL x Y x x x x
VTK x Y x x x
Paraview x Y x x x
OpenGL Y x
Open Scene Graph Y x
Maya Y x
Photoshop Y x
Gimp Y x
Imagemagick Y x
Premier Y x
Journals, web browsers, Projectors Y