IEEE Visualization 2004 Tutorial

Interactive Texture-Based Flow Visualization


Abstract

Interactive texture-based flow visualization has become an active field of research in the last three or four years. Recent progress in this field has led to efficient vector field visualization methods and, in particular, to improved techniques for time-dependent data. This tutorial covers approaches for vector fields given on 2D planes, on surfaces, and within 3D volumes. Both the theoretical background and the GPU-oriented implementations of many of these techniques are presented, along with a demonstration of their usefulness by means of typical applications.

Lecturers

Gordon Erlebacher, Florida State University, USA
Robert S. Laramee, VRVis, Austria
Daniel Weiskopf, University of Stuttgart, Germany

Course Organizer

Daniel Weiskopf
Institute of Visualization and Interactive Systems
University of Stuttgart
email: weiskopf@vis.uni-stuttgart.de

Duration

Half-day.

Level of the Tutorial

Intermediate.

The tutorial is aimed at scientific researchers and developers of visualization tools. Participants should have basic programming skills and some background knowledge of flow visualization; they should be familiar with OpenGL and / or DirectX. Basic knowledge of graphics hardware and GPU programming is helpful, although a brief introduction to GPU programming will be given in the tutorial. Basic previous knowledge of flow visualization is recommended.

Course Slides

The up-to-date slides that were used during the tutorial can be downloaded as PDF files.

Electronic Videos

Source Code and Examples

We promised at the end of the tutorial to upload some examples and source codes. This part of the web page is still being extended; here is the first example:

2D Texture Advection (Direct3D)

This simple code (authors: Matthias Hopf and Daniel Weiskopf) implements 2D texture advection with bilinear resampling. It is a quick-and-dirty hack that was developed for Direct3D 8. Unfortunately, this code is provided "as is" - without any support or documentation.

2D LIC (OpenGL on Mac)

This source code (author: Gordon Erlebacher) implements 2D LIC on GPUs. It runs on Mac with OpenGL. The code was developed and tested on Panther 10.3.6 on a Powerbook with an ATI Radeon 9600. The current version of the code is not commented and supports steady flow only.

Organization and List of Topics

Description of Topics

Introduction. The tutorial starts with a short introduction that contains an outline of the time schedule, some examples of areas of application for flow visualization, a few example images for alternative visualization approaches (streamlines or similar geometric objects, feature-based techniques), and the classification scheme that we follow to structure the topics of this tutorial. The following classification parameters are used: spatial dimension of the visualization domain (2D, 2.5D = on surfaces, and 3D), steady vs unsteady flow, CPU vs GPU-based approaches, and type of internal representation (object space vs image space). Dimensionality serves as basis for the overall organization, the other aspects are indicated along the discussion of the corresponding visualization methods.

GPU Programming. A brief summary of some background of GPU programming is included to support participants that have some previous knowledge of GPU programming. A comprehensive presentation of GPU programming, however, is beyond the scope of this tutorial.

2D Flow Visualization. This part deals with texture-based flow visualization techniques for 2D planar domains. We start with fundamental "classic" approaches like LIC and original texture advection. Subsequently, more recent techniques for time-dependent flow are explained in detail, ranging from LEA to IBFV and dye advection. Building on this algorithmic background, application, implementation, and large-data visualization topics are discussed for these techniques. Implementation issues are focused on details of GPU realizations. Finally, a generic framework is presented to compare the previously mentioned techniques and to related them to each other.

2.5D Flow Visualization. This part focuses on recent developments for texture-based flow visualization on surfaces. Both ISA and IBFVS work on image space to avoid problems of older approaches that require a time-consuming computation in object space or a parameterization of the surface. A brief comparison between object-space, image-space, and parameterization approaches serves as introduction to this part. Special attention is paid to the application of these techniques to real-world examples from CFD because a good choice for the surface is essential to an intuitive and effective visualization.

3D Flow Visualization. We discuss 3D texture-based flow visualization in the last part. A brief presentation of 3D LIC is followed by an in-depth discussion of 3D texture advection. One major issue of dense 3D representations is the large amount of numerical operations involved. Therefore, efficient GPU implementations play an important role and are compared for 3D IBFV and GPU-based texture advection. As an alternative approach, a pre-computation of streamlines within a volumetric texture, as in the Chameleon system, overcomes some of these efficiency problems. Finally, some perception issues of visual clutter and spatial perception are mentioned and an outlook on possible future developments for perception-oriented interactive representations is given.

Summary. The tutorial closes with an overall questions & answers session.