[vtkusers] Paraview's pipeline vs. a vtk pipeline, performance
David Marshburn
marshbur at cs.unc.edu
Tue Feb 28 17:52:45 EST 2006
For a few datasets (3D image stacks) that I have, Paraview is several
times faster when generating an isosurface than our application. I'd like
to be able to find out what pipeline of vtk classes Paraview constructs,
or why the performance is so much worse with the pipeline of classes we
put together.
In Paraview, I load a .vti file of the data (vtkXMLImageDataReader) and
then add a contour (vtkContourFilter). These show up in the navigation
window at the top left in Paraview. When I change/add an isovalue, the
following class names appear in the status bar at the bottom:
ContourFilter, PVGeometryfilter, PainterPolyDataMapper.
In our application, the pipeline is as follows:
vtkImageData -> vtkExtractVOI -> vtkImageMarchingCubes
-> vtkPolyDataMapper -> vtkActor
(at times, our application has had other classes in the pipeline,
specifically TriangleFilter, Stripper and PolyDataNormals between
ImageMarchingCubes and PolyDataMapper, but these don't change the
performance when removed from the pipeline).
On the same dataset and with the same isovalue, Paraview takes maybe 30
seconds to generate and display an isosurface and uses a moderate amount
of memory. Our application takes over 90 seconds and uses a good bit more
memory (just by eyeballing task manager on windows). This is with
Paraview 2.4, and our app is in vtk 4.4.
Our application does use display lists; if i enable immediate mode
rendering, it only saves 5-10 seconds, maybe.
Is there any way to ask Paraview, "What's your complete pipeline, from
data set to actor?"
PVGeometryFilter is a class specific to Paraview, or I would recreate
much of Paraview's apparent pipeline in our application. Does anyone have
any suggestions why our pipeline would perform so much more poorly? Isn't
ImageMarchingCubes the algorithm optimized for image data?
thank you for any insight!
-david
More information about the vtkusers
mailing list