[vtkusers] Please help me use vtkLinearExtrusionFilter

Obada Mahdi omahdi at gmx.de
Sat Jul 1 22:10:52 EDT 2006


Hi Christopher,

You are welcome!

Christopher Bruns wrote:
> Rebuilding my vtk libraries including your change to vtkRibbonFilter.cxx 
> is probably the approach that I will take.  I tried inserting a 
> vtkCleanPolyData filter to correct the data corruption, but that filter 
> crashed as well.  I wish I could discover a way to work around the 
> problem for existing vtk builds, without writing/reading to/from the 
> file system.

I agree that using an actual filter to "clean" the results of 
vtkRibbonFilter is preferable to using in intermediate file.  I have put 
together a very minimalistic polydata filter as a suggestion how one can 
achieve similar results as the vtkPolyDataWriter/vtkPolyDataReader hack; 
please find the sources attached (vtkRibbonFilterFix.{cc,h}).

It creates as output a shallow copy of its polydata input, but fixes the 
PointData attributes by having only scalars, normals and texture 
coordinates remain in the copy.  I have checkedit only once to make sure 
those corrupt arrays do not pass and the test program runs as expected, 
I am not sure about memory leaks or other side effects.

> My own feeble attempts to diagnose the problem included using 
> vtkPolyDataWriter to view the object contents.  It's ironic that your 
> suggested workaround involved using vtkPolyDataWriter as a filter to 
> clean up the data.
> 
> May I ask what was your technique for tracking down this problem?

Absolutely!  Although it is not one particular technique, I am afraid -- 
I generally try to use about any means available to "home in" on a bug, 
mostly by eliminating possibilities. This involves, e.g., writing 
debugging output to the console, reading source code (to learn about 
side effects and implementation-specific behavior) and using a debugger.

In this case,
- I started just like you did, by writing filter outputs at different 
stages of the pipeline to the disk in order to check for strange data.
- The data files looked OK, so I visualized them in ParaView to make 
sure they contain proper geometry.
- Also within ParaView, I applied the vtkLinearExtrusionFilter to the 
output stored from vtkRibbonFilter; this worked fine, suggesting that 
the extrusion filter may not be the problem after all.
- To ensure that this result was not related to differences between VTK 
from CVS (used in linking the test program) and the VTK that was bundled 
with the ParaView binary distribution I am using, I read that data back 
in with a vtkPolyDataReader in the test program, feeding its output to 
the extrusion filter, which also worked.
- I went back to reading VTK sources, to get an idea how the PointData 
attributes are implemented, and at which stage they are constructed in 
vtkRibbonFilter; your outstanding error report already suggested that 
there is a problem with PointData, which was confirmed by the console 
output via PrintSelf on the filter output
- finally used a debugger to trace through vtkRibbonFilter::RequestData 
and see what causes the corruption.


Please feel free to drop me a note if you have further questions.

Regards

Obada
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: vtkRibbonFilterFix.cc
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20060702/e208e59b/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: vtkRibbonFilterFix.h
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20060702/e208e59b/attachment.asc>


More information about the vtkusers mailing list