[Paraview-developers] How to implement an identity filter ?

Shawn Waldon shawn.waldon at kitware.com
Wed Jul 15 09:47:36 EDT 2015


You might want to take a look at inheriting from
vtkPassInputTypeAlgorithm[1] if you want the output type to be the same as
the input type.  It already implements RequestDataObject the way that I
think Joachim is suggesting.

HTH,
Shawn

[1]: http://www.vtk.org/doc/nightly/html/classvtkPassInputTypeAlgorithm.html

On Wed, Jul 15, 2015 at 7:27 AM, Joachim Pouderoux <
joachim.pouderoux at kitware.com> wrote:

> Franck,
>
> You will have to override the RequestDataObject() method in order to make
> your filter generic. This method is the one called to generate the output
> data object.
> Take a look at vtkGenerateIndexArray.cxx for instance, I think you can
> just copy it in your class (which should be derivated from
> vtkDataObjectAlgorithm).
>
> Best,
>
>
> *Joachim Pouderoux*
>
> *PhD, Technical Expert*
> *Kitware SAS <http://www.kitware.fr>*
>
>
> 2015-07-15 11:57 GMT+02:00 houssen <houssen at ipgp.fr>:
>
>> Seems that it is not possible to filter on vtkDataObject type.
>> But with less generic types (like vtkUnstrucutredGrid for instance), the
>> myFilter works : no error occur, but, viewpoint ends up to be empty. I get
>> "zero" instead of "identity" : why ?!
>>
>> Franck
>>
>>
>> Le 2015-07-14 23:38, houssen a écrit :
>>
>>> How to write an identity filter ? (1 input port, 1 output port,
>>> output = input whatever input may be)
>>>
>>> I need to write a custom filter. I am used to VTK "from outside"
>>> (creating/handling vtk pipelines/scene/object from a main program)
>>> that is basically without the need to understand all internal VTK
>>> mechanics (except the SetInputConnection concept). I am not yet used
>>> to VTK internal mechanics that is necessary for writing a ParaView
>>> plugin.
>>>
>>> I need my filter to do "complex" stuffs. As I couldn't make it work,
>>> I simplified as much as possible to obtain finally an identity filter
>>> (!) : this is still not working. I feel I still miss something from
>>> VTK internal mechanics.
>>>
>>> As far as I understand, in the constructor, I need :
>>> myFilter::myFilter () { SetNumberOfInputPorts  ( 1 );
>>> SetNumberOfOutputPorts ( 1 ); }
>>>
>>> So then I need to implement the FillXXXPortInformation :
>>> int myFilter::FillInputPortInformation ( int vtkNotUsed ( iPort ),
>>> vtkInformation * ipInfo )
>>> {
>>>   if ( ipInfo ) ipInfo -> Set (
>>> vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE (), "vtkDataObject" ); //
>>> Filter allowed data types
>>>   return 1;
>>> }
>>> int myFilter::FillOutputPortInformation ( int vtkNotUsed ( iPort ),
>>> vtkInformation * ipInfo )
>>> {
>>>   if ( ipInfo ) ipInfo -> Set ( vtkDataObject::DATA_TYPE_NAME (),
>>> "vtkDataObject" ); // Output data type to be created
>>>   return 1;
>>> }
>>>
>>> So, now I only need to implement the ProcessRequest gateway:
>>> int myFilter::ProcessRequest ( vtkInformation * ipRequest,
>>> vtkInformationVector ** ipInputVector, vtkInformationVector *
>>> opOutputVector )
>>> {
>>>   if ( ipRequest && ipRequest -> Has (
>>> vtkDemandDrivenPipeline::REQUEST_DATA () ) )
>>>     if ( ipInputVector && opOutputVector ) opOutputVector =
>>> ipInputVector[0];
>>>    return Superclass::ProcessRequest ( ipRequest, ipInputVector,
>>> opOutputVector );
>>> }
>>>
>>> I believed that I would be the only steps to proceed to get an
>>> identity filter. When I use my identity filter in Paraview, I get
>>> errors like :
>>> ERROR: In
>>>
>>>
>>> /.../ParaView-v4.3.1-source/VTK/Common/ExecutionModel/vtkDemandDrivenPipeline.cxx,
>>> line 810
>>> vtkPVPostFilterExecutive : Input for connection index 0 on input port
>>> index 0 for algorithm vtkPVPostFilter(0x16d0ec0) is of type
>>> vtkDataObject, but a vtkPolyData is required.
>>>
>>> Some logic is still missing here : could somebody explain me what and
>>> why ?
>>>
>>> Thanks,
>>>
>>> Franck
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Search the list archives at:
>>> http://markmail.org/search/?q=Paraview-developers
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/paraview-developers
>>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Search the list archives at:
>> http://markmail.org/search/?q=Paraview-developers
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/paraview-developers
>>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Search the list archives at:
> http://markmail.org/search/?q=Paraview-developers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview-developers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview-developers/attachments/20150715/0c53a7fa/attachment.html>


More information about the Paraview-developers mailing list