[vtkusers] VTK pipeline & rendering strategies

Andrea Gavana andrea.gavana at gmail.com
Mon Nov 28 07:35:13 EST 2016

Dear All,

     I am working with some stuff coming out of CFD simulations, and in the
current work the simulator produces a 3D grid (unstructured grid made of
hexahedrons). The full grid is about 4 million cells, but due to other
settings in the simulator the number of "active" cells in the simulation
ends up being "only" 270,000. In order to visualize all this, I create a
vtkUnstructuredGrid to hold the full grid, use a vtkThreshold to remove the
"inactive" cells and then use a vtkDataSetMapper to visualize the resulting
active grid:

vtkUnstructuredGrid --> vtkThreshold --> vtkDataSetMapper --> vtkActor

However, the rendering speed for the 270,000 cells grid is quite low - it
takes about one second to display a new property by using SetScalars on the
output of vtkThreshold. So I thought of using a vtkDataSetSurfaceFilter on
the output of vtkThreshold to try and speed up the rendering. So, the
current visualization strategy I have implemented is the following:

vtkUnstructuredGrid --> vtkThreshold --> vtkDataSetSurfaceFilter -->
vtkPolyDataMapper --> vtkActor

This is still as slow as my first approach, and I also have a couple of
questions - which stems from my ignorance in VTK things:

1. When I load (from the simulator outputs) a new property (cell-based) and
I assign its values to the original vtkUnstructuredGrid (by using
SetScalars on it), do all the filters (vtkThreshold and
vtkDataSetSurfaceFilter) need to be re-run? If yes, why? I am not changing
the active/inactive cells nor the geometry of the grid, only assigning
different scalars. And, if yes, is there any way to tell the pipeline:
"look, I've only changed the scalars, there's no need to re-run all the
thresholds and surface filters *again*"?

2. Is there any other pipeline style or visualization technique in VTK or
any settings whatsoever that could bring down the rendering time (memory is
not that much of a concern)? Basically, what I have a the moment - in terms
of timing - is as follows:

Reading data from simulator: 0.042 seconds
Create VTK array with data : 0.002 seconds
Call to SetScalars         : 0.000 seconds
Create Lookup Table        : 0.001 seconds
Render on screen           : about 1 second

Thank you in advance for any suggestion, my apologies for the long message.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20161128/8f71af01/attachment.html>

More information about the vtkusers mailing list