[Paraview] Adding/writing paraview filters

pat marion pat.marion at kitware.com
Wed Oct 21 15:41:43 EDT 2009


Hi David,

The paraview devel list is paraview-developers at paraview.org.  It used
to be private but now it is public.  I was subscribed internally by
Kitware, I'm not sure where the public sign up is located.


>   <SourceProxy name="TransformFilter" class="vtkTransformFilter"
>    label="Transform">
>
> 1) What is a source proxy? This filter will use the vtkTransformFilter
> filter, and it will be called "Transform" in the paraview menu.

There is a method vtkSMProxy* vtkSMProxyManager::NewProxy (const char
* groupName, const char* proxyName).  Calling this with group=sources
and name=TransformFilter will create a new vtkSMSourceProxy.  So
basically "vtkSM" is prepended to the xml element name to create a
class name.  vtkSMSourceProxy is the base class for all sources such
as readers and filters.  For most cases vtkSMSourceProxy is
sufficient, you can control the vtk filter completely through
Properties defined on the source proxy.  But if you look in
rendering.xml you'll see a lot of xml elements that are just plain old
<Proxy/> (corresponding to vtkSMProxy) or more fancy ones like
<RenderViewProxy/> (corresponding to vtkSMRenderViewProxy).  In cases
of things like vtkSMRenderViewProxy, the class is created to handle
extra logic that is not handled simply through Properties.

When you create the transform filter in the paraview gui, only the
vtkSMSourceProxy is created on your machine, the vtkTransformFilter
might be living on a server somewhere else (unless you are in builtin
mode of course).  Setting a property on the source proxy causes a
method to be called on the vtkTransformFilter on the server.

Sorry I can't answer all your questions right now, but it's a start.

Pat

On Wed, Oct 21, 2009 at 3:13 PM, David Doria <daviddoria at gmail.com> wrote:
> First, just curious - why is there not a separate -devel list for
> Paraview as there is for vtk/itk?
>
> I have some time this week and I was hoping to try to implement these:
> http://public.kitware.com/Bug/view.php?id=8999
> http://public.kitware.com/Bug/view.php?id=8998
>
> For the ICP interface, all that needs to be selected is two items in
> the pipeline and have a few text boxes to specify some parameters.
> For the Landmark Transform interface, two sets of N points need to be
> selected, one from each of the two selected items in the pipeline.
>
> This seems like it should be relatively easy to do, but the
> plugin/servermanager/module/proxy terminology is quite confusing to
> me.
>
> Is this the guide I should be following?
> http://www.itk.org/Wiki/Extending_ParaView_at_Compile_Time
>
> That example shows how to add a source, but I imagine it is very
> similar to add a filter? I looked at the paraview user guide and the
> rest of the links on the wiki, but I didn't see anything like the
> following analysis/descriptions - did I miss something major here?
>
> I looked at the TransformFilter in filters.xml as a starting point -
> here are some line by line comments/questions about it:
>
>   <SourceProxy name="TransformFilter" class="vtkTransformFilter"
>    label="Transform">
>
> 1) What is a source proxy? This filter will use the vtkTransformFilter
> filter, and it will be called "Transform" in the paraview menu.
>
>    <Documentation
>       long_help="This filter applies transformation to the polygons."
>       short_help="Transform polygonal data.">
>      The Transform filter allows you to specify the position, size,
> and orientation of polygonal, unstructured grid, and curvilinear data
> sets.
>    </Documentation>
>
> 2) Where does this help text get displayed?
>
>    <InputProperty
>       name="Input"
>       command="SetInputConnection">
>
> 3) We want to call SetInputConnection() on the input, which is called
> Input. Is Input taken to be the selected item in the pipeline you are
> attempting to apply the filter to?
>
>          <ProxyGroupDomain name="groups">
>            <Group name="sources"/>
>            <Group name="filters"/>
>          </ProxyGroupDomain>
>
> 4) I'm assuming "Group name" means to add this to the "Filters" menu
> in paraview? Why is "sources" also a "group name"?
>
>          <DataTypeDomain name="input_type">
>            <DataType value="vtkPointSet"/>
>          </DataTypeDomain>
>
> 5) What is "DataTypeDomain"? I understand that vtkPointSet is the
> input type to vtkTransformFilter.
>
>          <Documentation>
>            This property specifies the input to the Transform filter.
>          </Documentation>
>     </InputProperty>
>
> 6) Where does this documentation get displayed/placed?
>
>     <ProxyProperty name="Transform" command="SetTransform">
>
> 7) What is a ProxyProperty vs an InputProperty?
>
>           <ProxyGroupDomain name="groups">
>              <Group name="transforms"/>
>           </ProxyGroupDomain>
>
> 8) Where does this "group" called "transforms" appear?
>
>           <ProxyListDomain name="proxy_list">
>              <Proxy group="extended_sources" name="Transform3" />
>           </ProxyListDomain>
>
> 9) What is "extended_sources" and "Transform3"?
>
>           <Documentation>
>             The values in this property allow you to specify the
> transform (translation, rotation, and scaling) to apply to the input
> dataset.
>           </Documentation>
>
> 10) I see that this string gets displayed if you hover over any of the
> items in the transform GUI.
>
>
> Even though they are similar, the two things I am trying to implement
> could be quite different because with the Transform filter, you simply
> choose an object in the pipeline and apply that filter to the object -
> with my things you have to select TWO things in the pipeline (the
> source and destination objects, in the case of ICP). Is there an easy
> way to do this? Can you simply ctrl+click items in the pipeline to
> select them and then sort out the inputs in the filter?
>
> Where is the code that creates the GUI (to take user input of the
> transformation) for this filter?
>
> Can someone please help get me started? I think this will be a useful
> exercise - I intend to document the process of adding a filter and
> constructing the interface GUI and add it to the wiki so that future
> users can hopefully contribute to the project with less of a learning
> curve.
>
> Thanks!
>
> David
> _______________________________________________
> 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
>


More information about the ParaView mailing list