[vtkusers] Writing (imaging) algorithm for which output extent has no relation with input extent.

David Gobbi david.gobbi at gmail.com
Tue Jan 14 09:57:48 EST 2014


Hi Maarten,

In order to set the output extent independent of the input extent,
all you should have to do is override RequestInformation() and
RequestUpdateExtent().  It is definitely not necessary to set
UNRESTRICTED_UPDATE_EXTENT or EXACT_EXTENT.
Take a look at vtkImageHistogram.cxx as an example of a filter
that has a 3D input and an independently-sized 2D output.

  David

On Mon, Jan 13, 2014 at 1:45 PM, Maarten Beek <beekmaarten at yahoo.com> wrote:
> Hi all,
>
> I am trying to write an (image) algorithm that generates a 2d image from a
> 3d image.
> I would like to be able to set the resolution of the 2d image.
> The extents of the input and output are therefore unrelated.
>
> I have the algorithm working when I set the algorithm's input in an
> unofficial way (SetNumberOfInputPorts(0), using a custom function SetInput
> instead of SetInputConnection or SetInputData). This way there is no
> pipeline created, which I would like to happen.
>
> I set the whole extent of the algorithm's output to the desired (2d) extent
> in RequestInformation. However, the function
> vtkStreamingDemandDrivenPipeline::VerifyOutputInformation() fails because
> this whole extent miraculously gets re-set to whole (3d) extent of the
> input.
> I have tried to prevent this check using
> outInfo->Set(vtkStreamingDemandDrivenPipeline::UNRESTRICTED_UPDATE_EXTENT(),
> 1) and
> outInfo->Set(vtkStreamingDemandDrivenPipeline::EXACT_EXTENT(), 0) to no
> avail.
>
> How do I prevent the adjustment of the whole extent after I have set it to
> the desired value?
>
> Thanks - Maarten


More information about the vtkusers mailing list