[Paraview] RequestData Being Called Multiple Times [PV3.1.0]

Mike Jackson imikejackson at gmail.com
Wed Jul 18 09:44:59 EDT 2007


THANKS.. That was the problem.. mostly.. I included the following:

   outInfo->Set( vtkDataObject::ORIGIN(), DataOrigin, 3 );
   outInfo->Set( vtkDataObject::SPACING(), DataSpacing, 3 );
   this->DataExtent[0] = this->DataExtent[2] = this->DataExtent[4] = 0;
   this->DataExtent[1] = xDim-1;
   this->DataExtent[3] = yDim-1;
   this->DataExtent[5] = zDim-1;
   outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),  
DataExtent, 6 );
   outInfo->Set( vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(),  
DataExtent, 6 );

in the RequestInformation and now RequestData only gets called once.  
There was also a bug in my last code where I was not quite  
calculating the DataExtent correctly. I _had_ :
t this->DataExtent[1] = xDim;

which should have been:

this->DataExtent[1] = xDim-1;

Thanks to all those who replied with Ideas and ultimately the  
solution. I'll write this little gem in my notes so next time I have  
a better idea of what all is needed in a Reader based on  
vtkImageAlgorithm.

-- 
Mike Jackson   Senior Research Engineer
Innovative Management & Technology Services


On Jul 18, 2007, at 9:19 AM, Berk Geveci wrote:

> Multiple execution problems like this usually occur due to
> inconsistency between what the pipeline requests and what the
> algorithm produces. Can you verify that your reader is producing the
> extent requested (with UPDATE_EXTENT)? The extent of the data the
> reader produces has to match UPDATE_EXTENT().
>
> -berk
>
> On 7/17/07, Mike Jackson <imikejackson at gmail.com> wrote:
>> After looking at this all day today, I the big difference is:
>>
>> If I include the following code:
>>
>>    outInfo->Set( vtkDataObject::ORIGIN(), DataOrigin, 3 );
>>    outInfo->Set( vtkDataObject::SPACING(), DataSpacing, 3 );
>>
>>    this->DataExtent[0] = this->DataExtent[2] = this->DataExtent[4]  
>> = 0;
>>    this->DataExtent[1] = xDim;
>>    this->DataExtent[3] = yDim;
>>    this->DataExtent[5] = zDim;
>>    outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),
>> DataExtent, 6 );
>>
>> Then after each call to RequestData, a call to SetAbortExecute (0) is
>> called which I think is causing an update to occur. If I leave the
>> above code out, then only GetAbortExecute() is called, which is fine
>> as it does not monkey with the ModifiedTime.
>>
>> Now I would be more than happy to leave out the above code, but doing
>> so leaves the resulting vtkImageData object not quite "right", ie, It
>> will show an outline in paraview, but nothing else. Maybe someone can
>> fill me in on what is going on.
>>
>> I am thinking of maybe trying to inherit from vtkStructuredGrid
>> instead. Our data is just a regular array of Voxels with some extra
>> scalar and vector attributes on them.
>>
>> I do not have this problem with a vtkPolyDataAlgorithm..
>>
>>
>> --
>> Mike Jackson   Senior Research Engineer
>> Innovative Management & Technology Services
>>
>>
>> On Jul 17, 2007, at 12:58 PM, Moreland, Kenneth wrote:
>>
>> > Another thought.  Are you calling Modified (either directly or
>> > indirectly) in RequestData?  If the modified flag gets called, VTK
>> > will
>> > assume that the data is out of date and run RequestData again  
>> whenever
>> > possible.  Check the value of the MTime ivar at the beginning  
>> and the
>> > end of RequestData.  It should be the same.
>> >
>> > -Ken
>> >
>> >> -----Original Message-----
>> >> From: paraview-bounces+kmorel=sandia.gov at paraview.org
>> > [mailto:paraview-
>> >> bounces+kmorel=sandia.gov at paraview.org] On Behalf Of Mike Jackson
>> >> Sent: Tuesday, July 17, 2007 10:45 AM
>> >> To: eschenbe at psc.edu
>> >> Cc: ParaView
>> >> Subject: Re: [Paraview] RequestData Being Called Multiple Times
>> > [PV3.1.0]
>> >>
>> >> I finally got a debugger working and setting a breakpoint at  
>> the top
>> >> of RequestData is interesting to say the least. The stack is  
>> anywhere
>> >> from 69 to 72 deep at that point. Copying the stack from each time
>> >> the break point is hit and pasting into text files, the running a
>> >> diff against two of the files shows the the differences are  
>> about the
>> >> 39 to 42 depth. All this is way beyond me at this point. I can  
>> send
>> >> the stack traces if anyone wants to look through them.. ;-)
>> >>
>> >>      Maybe I will try and compile this against 2.6.x and see if  
>> the
>> >> problem persists. I have written another reader that inherits from
>> >> PolyDataAlgorithm and I don't have this sort of trouble. I am  
>> sure it
>> >> is something stupid that I am doing. I am looking at the  
>> ImageReader2
>> >> class to get an idea of what I _should_ be doing at this point.
>> >>
>> >>
>> >> --
>> >> Mike Jackson   Senior Research Engineer
>> >> Innovative Management & Technology Services
>> >>
>> >>
>> >> On Jul 17, 2007, at 12:21 PM, Kent Eschenberg wrote:
>> >>
>> >>> Mike Jackson wrote:
>> >>>> That does not seem to be it.. Although good idea. Any other
>> >>> thoughts?
>> >>>
>> >>>> On Jul 17, 2007, at 11:59 AM, Kent Eschenberg wrote:
>> >>>>> I've seen that when RequestData returns a value that signals an
>> >>> error.
>> >>>
>> >>> Only a crude shot in the dark: set a breakpoint at the start of
>> >>> RequestData and see if the traceback suggests why the call was
>> >>> made. I've written several readers for 2.6.1 and haven't seen the
>> >>> problem you report except when the reader's return value  
>> indicated
>> >>> an error.
>> >>>
>> >>> Kent
>> >>> Pittsburgh Supercomputing Center
>> >>
>> >> _______________________________________________
>> >> ParaView mailing list
>> >> ParaView at paraview.org
>> >> http://www.paraview.org/mailman/listinfo/paraview
>> >
>> >
>>
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview
>>
>
>
> -- 
> Berk Geveci
> Kitware Inc.
> 28 Corporate Drive
> Clifton Park, NY, 12065



More information about the ParaView mailing list