[Paraview] Whole extend issue
Fred Fred
stan1313 at hotmail.fr
Mon Nov 14 12:22:30 EST 2011
Ok but I suppose I don't do it as I should because the CopyDefaultInformation() is never executed.
I put these lines at the beginning of my class constructor:{ vtkMyStreamingDemandDrivenPipeline *executive = vtkMyStreamingDemandDrivenPipeline::New(); this->SetExecutive(executive); ...
and I make a printf here:
//----------------------------------------------------------------------------voidvtkMyStreamingDemandDrivenPipeline::CopyDefaultInformation(vtkInformation* request, int direction, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec){ // Let the superclass copy first. this->Superclass::CopyDefaultInformation(request, direction, inInfoVec, outInfoVec); if(request->Has(REQUEST_INFORMATION())) { if(this->GetNumberOfInputPorts() > 0) { // my stuff }
for (int obj=0 ; obj<3 ; obj++) { vtkInformation* outInfo = outInfoVec->GetInformationObject(obj); int whole_ext[6]; outInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), whole_ext); printf("Executive: %d %d %d %d %d %d\n", whole_ext[0], whole_ext[1], whole_ext[2], whole_ext[3], whole_ext[4], whole_ext[5]); }
...}
but nothing prints and I still get the same error.
> From: dave.demarle at kitware.com
> Date: Mon, 14 Nov 2011 10:31:27 -0500
> Subject: Re: [Paraview] Whole extend issue
> To: stan1313 at hotmail.fr
> CC: paraview at paraview.org
>
> Looks to me like a bug/feature of the VTK pipeline. Apparently it
> expects whole extents to be the same for all input structured data
> sets.
>
> See how just before vtkExecutive runs the algorithm's Request*()
> methods in vtkExecutive::CallAlgorithm() it calls
> CopyDefaultInformation(). In
> vtkStreamingDemandDrivenPipeline::CopyDefaultInformation() copies the
> first input's whole extent to all outputs.
>
> You might get around this by making your own executive with it's own
> CopyDefaultInformation().
>
> The actual error comes later at the start of the RequestUpdateExtent()
> pass when vtkStreamingDemandDrivenPipeline::VerifyOutputInformation()
> happens.
>
> David E DeMarle
> Kitware, Inc.
> R&D Engineer
> 21 Corporate Drive
> Clifton Park, NY 12065-8662
> Phone: 518-881-4909
>
>
>
> On Sat, Nov 12, 2011 at 5:17 AM, Fred Fred <stan1313 at hotmail.fr> wrote:
> > I really do not understand how PV/VTK works!
> > I get this error:
> > ERROR: In
> > /usr/local/ParaView-3.10.1/VTK/Filtering/vtkStreamingDemandDrivenPipeline.cxx,
> > line 882
> > vtkPVPostFilterExecutive (0x12a1c6b00): The update extent specified in the
> > information for output port 0 on algorithm vtkPVPostFilter(0x12a1c60c0) is 0
> > 24 0 34 0 232, which is outside the whole extent 0 96 0 20 0 63.
> > but if I print the values at the end of RequestData() I get different
> > values:
> > int uExtent[6];
> >
> > this->GetExecutive()->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),
> > uExtent);
> > printf("Extent: %d", uExtent[0]);
> > for (int i=1 ; i<5 ; i++) printf(" %d", uExtent[i]);
> > printf(" %d\n", uExtent[5]);
> >
> > this->GetExecutive()->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(),
> > uExtent);
> > printf("Update: %d", uExtent[0]);
> > for (int i=1 ; i<5 ; i++) printf(" %d", uExtent[i]);
> > printf(" %d\n", uExtent[5]);
> > prints:
> > Extent: 0 24 0 34 0 232
> > Update: 0 24 0 34 0 232
> > Please help!
> > ________________________________
> > From: stan1313 at hotmail.fr
> > To: paraview at paraview.org
> > Date: Fri, 11 Nov 2011 12:08:24 +0100
> > Subject: [Paraview] Whole extend issue
> >
> > Hello,
> > I have a filter inherited from vtkUnstructuredGridAlgorithm, with 2 inputs
> > of type vtkStructuredGrid and 3 outputs, 1 and 2 are just copies of the
> > input and the third one is of type vtkUnstructuredGrid.
> > I copy input0 to output0 like this:
> > vtkInformation *in0Info = inputVector[0]->GetInformationObject(0);
> > vtkStructuredGrid *in0 =
> > vtkStructuredGrid::SafeDownCast(coarseInfo->Get(vtkDataObject::DATA_OBJECT()));
> > this->GetExecutive()->GetOutputData(0)->ShallowCopy(in0);
> > vtkInformation *in1Info = inputVector[1]->GetInformationObject(0);
> > vtkStructuredGrid *in1 =
> > vtkStructuredGrid::SafeDownCast(coarseInfo->Get(vtkDataObject::DATA_OBJECT()));
> > this->GetExecutive()->GetOutputData(1)->ShallowCopy(in1);
> > but I get this error:
> > ERROR: In
> > /usr/local/ParaView-3.10.1/VTK/Filtering/vtkStreamingDemandDrivenPipeline.cxx,
> > line 882
> > vtkPVPostFilterExecutive (0x12c3e58d0): The update extent specified in the
> > information for output port 0 on algorithm vtkPVPostFilter(0x12c3e4e90) is 0
> > 24 0 34 0 232, which is outside the whole extent 0 96 0 20 0 63.
> > Actually 0 24 0 34 0 232 are the dimensions of input0 and 0 96 0 20 0 63 are
> > the dimensions of input1.
> > So I do not understand why extends of input1 are considered as the "whole
> > extend" (BTW what is the "whole extend"? whole extend of the multblock
> > dataset?)
> >
> > _______________________________________________ Powered by www.kitware.com
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html Please keep messages
> > on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
> > Follow this link to subscribe/unsubscribe:
> > http://www.paraview.org/mailman/listinfo/paraview
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the ParaView Wiki at:
> > http://paraview.org/Wiki/ParaView
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.paraview.org/mailman/listinfo/paraview
> >
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20111114/3137c806/attachment.htm>
More information about the ParaView
mailing list