[Paraview] What part of the pipeline is producing the request for UPDATE_EXTENT?

Moreland, Kenneth kmorel at sandia.gov
Wed Feb 13 12:10:00 EST 2008


In the call to loadDataFromMXAFile, you should be using the value in UPDATE_EXTENT, not VOI.  To review, WHOLE_EXTENT is what the reader reports to the downstream components what data is available (and reporting VOI is an easy way to limit the data to what the user wants).  UPDATE_EXTENT is the part of the data that the downstream components want.  If you return with data that does not match up to UPDATE_EXTENT, the pipeline might execute again trying to get the range of data it asked for.

-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: Wednesday, February 13, 2008 9:48 AM
> To: ParaView
> Subject: Re: [Paraview] What part of the pipeline is producing the request
> for UPDATE_EXTENT?
>
> Ok, so now I have
> RequestInformation()
> {
> ...
> outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), this-
>  >VOI, 6 );
> ...
> }
>
> and RequestData() I load the data into a newly created vtkImageData
> object, then shallow copy into the
> actual output data object:
>
> vtkInformation* outInfo = outputVector->GetInformationObject(0);
> vtkImageData* output = vtkImageData::SafeDownCast(outInfo->Get
> (vtkDataObject::DATA_OBJECT()));
> vtkTypeInt32 error = 1;
> vtkSmartPointer<vtkImageData> imageData =
> vtkSmartPointer<vtkImageData>::New();
> error = loadDataFromMXAFile(outInfo, imageData, this->VOI);
> output->ShallowCopy(imageData);
>
> In paraview from CVS this causes multiple executions of the pipeline.
> Before, where I thought I had "fixed" the issue I was calling:
>
> outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), this-
>  >VOI, 6 );
>
> in RequestData(). Berk said that wasn't a good idea so I removed it.
> So now I am back to square 1 again.
>
> Thanks
> Mike
>
> On Feb 13, 2008, at 10:17 AM, Kent Eschenberg wrote:
>
> > Indeed, each of the my routines to set the VOI bounds (one each for
> > the min/max in X/Y/Z) calls Modified().
> >
> > During development I had temporary print statements everywhere and
> > as I remember it these routines to set the VOI were called both
> > before and after RequestInformation.
> >
> > Kent
> > Pittsburgh Supercomputing Center
> >
> > Moreland, Kenneth wrote:
> >> I belive it is supposed to work that your SetVOI() method should
> >> call modified, which will in turn cause the pipeline to call
> >> RequestInformation() on the next update.  Make sure that SetVOI()
> >> is actually calling Modified().
> >> -Ken
> >> On 2/12/08 9:26 PM, "Mike Jackson" <imikejackson at gmail.com> wrote:
> >>     Pretty sure that was where we were going to end up BUT as far
> >> as I
> >>     can tell, the order of execution is :
> >>     RequestInformation()
> >>     SetVOI() // From the GUI in ParaView
> >>     RequestData();
> >>     So we never really get a chance to get the VOI until RequestData
> >>     fires.. Is that what you have seen?
> >>     Mike
> >>     On Feb 12, 2008, at 11:21 PM, Kent Eschenberg wrote:
> >>     >  Mike,
> >>     >
> >>     >  I accomplished what you want with one of our custom
> >> readers. In my
> >>     >  opinion the documentation for RequestInformation, RequestData,
> >>     >  extents, etc. is so poor that it is useless.
> >>     >
> >>     >  At RequestInformation I read enough of the input to get the
> >> overall
> >>     >  input array size; apply the user-selected VOI; and return the
> >>     >  desired subset as the whole extent. At RequestData I read
> >> the rest.
> >>     >  I just don't bother letting VTK/ParaView manage the
> >> selection of
> >>     >  the VOI. This has worked for 2.6.1 through 3.2.1.
> >>     >
> >>     >  Kent
> >>     >  Pittsburgh Supercomputing Center
> >>     >
> >>     >  Mike Jackson wrote:
> >>     > > I can do that but I don't think it will work.
> >>     > > In paraview, I have managed to set an auto-generated UI
> >> for the
> >>     > > VOI. Now, the user opens our file, RequestInformation is
> >> run (I
> >>     > > can put some sane defaults for the VOI) and things are ok
> >> so far.
> >>     > > Now the user clicks "Apply" and then SetVOI is called with
> >> the
> >>     > > values from the GUI and then RequestData() is called after
> >> that.
> >>     > > So where do I update WHOLE_EXTENT? Or just take the values
> >> from
> >>     > > the VOI, create a vtkImageObject from that, and then just
> >>     > > ShallowCopy to the output object?
> >>     > > I'm a bit confused at this point. If our case is NOT a
> >> standard
> >>     > > use case for the pipeline than I guess I can look more
> >> seriously
> >>     > > into developing a full blown Plugin for our data file.
> >>     > > Mike
>
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview




More information about the ParaView mailing list