New Animated Stream Lines Representation for ParaView 5.3

Figure 1 – The new Stream Lines representation display animated streamlines using a vector field defined on a dataset.

We are proud to introduce you a new cool feature that will be available in ParaView 5.3.

This feature comes with the StreamLinesRepresentation plugin which provides a new representation called “Stream Lines“. This representation that can deal with any kind of data set and takes benefit of the new OpenGL2 back-end of VTK.

The Stream Lines Representation

The representation displays an animated view of streamlines in a vector field associated to cells or points of the dataset. The streamline seeds are initialized randomly in the bounds of the domain and recreated each time one particle dies (time to live – ie, max number of iterations – is reached, out-of-domain or zero velocity).
The UI panel allows to specify:

  • Vectors: the vector field array (mandatory).
  • Alpha: the rate of fading (depends on MaxTimeToLive, 0: no trace, 1: trace will fade as long as TimeToLive).
  • Step Length: the normalized integration step – allow to adjust particle speed.
  • Number Of Particles: the number of simulated particles in the flow.
  • Max Time To Live: the maximum number of iteration a particle moves before it dies.
  • Animate: allow to turn ON or OFF the streamlines animation – when turned OFF, lines will be visible until the camera is changed.

The Color (solid color or depending on a data array, see Figure 2) and Line Width can also be changed using default ParaView UI widgets.

Animation on disk_out_ref.ex2

Figure 2 – disk_out_ref.ex2 dataset with V as Vectors, and Pressure Coloring.

The streamlines are continuously updated implying a infinite rendering loop of the whole view to which to representation belongs.
Technically speaking, we added a new class that observes all pqRenderView. When a rendering on such a view is finished, it checks all existing representations and search for a visible StreamLines representation. If found, a new still render pass is requested.

Known Limitations

  • So far, this new representation only works in local rendering mode – it does not work in parallel.
  • The streamlines are reset when camera settings change: this is a side effect of the efficient rendering mechanism involved here: particle tracks are accumulated in a 2D buffer.  At each time step, new track segments are computed, per particle, between their previous and new position. The final image is a blending new tracks and the image obtained at previous iteration. To make it consistent, this image buffer mechanism assumes a still camera.

How to Test?

Here is an simple way to test this new feature:
1.  Load the plugin “StreamLinesRepresentation”, enable the AutoLoad checkbox for it and restart ParaView (if you don’t, stream lines will not correctly animate).
2. Create a “Wavelet” source. Apply a “Gradient” filter on it.
3. Switch representation from “Outline” to “Stream Lines”.
4. Play with the StreamLines options in the Representation panel.
5. Change the Coloring array – see Figure 3.

 

Figure 3 – RTData Gradients vector field in a Wavelet source.

 

 

Another cool demo is to load the disk_out_ref.ex2 dataset with the V vector point data array – see Figure 1 and 2.

Here is a video capture of those animated streamlines on a “real” case:

 

This work was supported by Total SA.

Developments were done by Kitware SAS, France.

 

Joachim Pouderoux is a Technical Expert at Kitware, France. He is a developer of VTK and ParaView since 2012. His areas of expertise include scientific visualization, computer graphics, interaction techniques, Voronoi meshing and software development.

 

 

 

Bastien Jacquet is a Technical Leader at Kitware, France. Since 2016, he promotes and extends Kitware’s Computer Vision expertise in Europe. He has experience in various Computer Vision subdomains, and he is an expert in 3D Reconstruction and related mathematical tools.

Questions or comments are always welcome!