<div class="gmail_extra">Thanks a lot Sebastien !</div><div class="gmail_extra"><br></div><div class="gmail_extra">Regards,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Jean-Noël<br><br><div class="gmail_quote">
2012/4/25 Sebastien Jourdain <span dir="ltr">&lt;<a href="mailto:sebastien.jourdain@kitware.com" target="_blank">sebastien.jourdain@kitware.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Jean-Noel,<br>
<br>
The documentation is basically in the header file of<br>
vtkSMSessionProxyManager and vtkSMProxy that I&#39;ve just pasted below as<br>
the formatting of it get messed up in the online doxygene<br>
documentation.<br>
Otherwise, you may get some other informations on the wiki here:<br>
- <a href="http://paraview.org/Wiki/ServerManager_XML_Hints" target="_blank">http://paraview.org/Wiki/ServerManager_XML_Hints</a><br>
<br>
Seb<br>
<br>
=== vtkSMSessionProxyManager ===<br>
<br>
<br>
// Basic XML Proxy definition documentation:<br>
//<br>
// ------------- Proxy definition -------------<br>
//  &lt;SourceProxy                   =&gt; Will create vtkSM + SourceProxy class<br>
//         name=&quot;SphereSource&quot;     =&gt; Key used to create the proxy<br>
//         class=&quot;vtkSphereSource&quot; =&gt; Concreate vtkClass that do the real job<br>
//         label=&quot;Sphere&quot;&gt;         =&gt; Nice name used in menu and python shell<br>
//<br>
// ----------- Property definition -----------<br>
//    &lt;DoubleVectorProperty        =&gt; Will create vtkSM + DoubleVectorProperty<br>
//                                    and vtkSI + DoubleVectorProperty class by<br>
//                                    default.<br>
//         name=&quot;Center&quot;           =&gt; Name of the property:<br>
//                                    vtkPropertyHelper(proxy,<br>
&quot;Center&quot;).Set(0,1,2)<br>
//         command=&quot;SetCenter&quot;     =&gt; Real method name that will be called on<br>
//                                    vtkObject when the property will<br>
be updated.<br>
//         number_of_elements=&quot;3&quot;  =&gt; Size of the vector<br>
//         animateable=&quot;1&quot;         =&gt; Tell the animation view that property<br>
//                                    can be used as an evolving property<br>
//         default_values=&quot;0 0 0&quot;&gt; =&gt; The value that will be set at the<br>
//    &lt;/DoubleVectorProperty&gt;         construction to the VTK object<br>
//  &lt;/SourceProxy&gt;<br>
//<br>
// For custom behaviour the user can add some extra attributes:<br>
//<br>
//  - We can specify a custom SIProperty class to handle in a custom way the<br>
//    data on the server.<br>
//      &lt;StringVectorProperty          =&gt; vtkSMStringVectorProperty class<br>
//         name=&quot;ElementBlocksInfo&quot;    =&gt; Property name<br>
//         information_only=&quot;1&quot;        =&gt; Can only be used to fecth data<br>
//         si_class=&quot;vtkSISILProperty&quot; =&gt; Class name to instanciate on<br>
the other side<br>
//         subtree=&quot;Blocks&quot;/&gt;          =&gt; Extra attribute used by<br>
vtkSISILProperty<br>
//<br>
//  - We can trigger after any update a command to be executed<br>
//      &lt;Proxy name=&quot;LookupTable&quot;<br>
//             class=&quot;vtkLookupTable&quot;<br>
//             post_push=&quot;Build&quot;       =&gt; The method Build() will be called each<br>
//                                        time a new property value is pushed to<br>
//                                        the VTK object.<br>
//             processes=&quot;dataserver|renderserver|client&quot; &gt;<br>
//<br>
//  - We can force any property to push its value as soon has it get changed<br>
//          &lt;Property name=&quot;ResetFieldCriteria&quot;<br>
//             command=&quot;ResetFieldCriteria&quot;<br>
//             immediate_update=&quot;1&quot;&gt;     =&gt; Modifying the property will result<br>
//                                          of a push of it and the execution<br>
//                                          of the command on the vtkObject.<br>
//<br>
//  - To show a source proxy or a filter inside the menu of ParaView<br>
we use a hint<br>
//       &lt;SourceProxy ...&gt;<br>
//           &lt;Hints&gt;<br>
//              &lt;ShowInMenu                  =&gt; The category attribute allow to<br>
//                  category=&quot;PersoFilter&quot;/&gt;    specify in which sub-menu this<br>
//                                              proxy should be in. (optional)<br>
//           &lt;/Hints&gt;<br>
//       &lt;/SourceProxy&gt;<br>
<br>
<br>
==== vtkSMProxy ===<br>
<br>
// vtkSMProxy manages VTK object(s) that are created on a server<br>
// using the proxy pattern. The managed object is manipulated through<br>
// properties.<br>
// The type of object created and managed by vtkSMProxy is determined<br>
// by the VTKClassName variable. The object is managed by getting the desired<br>
// property from the proxy, changing it&#39;s value and updating the server<br>
// with UpdateVTKObjects().<br>
// A proxy can be composite. Sub-proxies can be added by the proxy<br>
// manager. This is transparent to the user who sees all properties<br>
// as if they belong to the root proxy.<br>
//<br>
//<br>
// When defining a proxy in the XML configuration file,<br>
// to derrive the property interface from another proxy definition,<br>
// we can use attributes &quot;base_proxygroup&quot; and &quot;base_proxyname&quot; which<br>
// identify the proxy group and proxy name of another proxy. Base interfaces<br>
// can be defined recursively, however care must be taken to avoid cycles.<br>
//<br>
// There are several special XML features available for subproxies.<br>
// \li 1) It is possible to share properties among subproxies.<br>
//    eg.<br>
//    \code<br>
//    &lt;Proxy name=&quot;Display&quot; class=&quot;Alpha&quot;&gt;<br>
//      &lt;SubProxy&gt;<br>
//        &lt;Proxy name=&quot;Mapper&quot; class=&quot;vtkPolyDataMapper&quot;&gt;<br>
//          &lt;InputProperty name=&quot;Input&quot; ...&gt;<br>
//            ...<br>
//          &lt;/InputProperty&gt;<br>
//          &lt;IntVectorProperty name=&quot;ScalarVisibility&quot; ...&gt;<br>
//            ...<br>
//          &lt;/IntVectorProperty&gt;<br>
//            ...<br>
//        &lt;/Proxy&gt;<br>
//      &lt;/SubProxy&gt;<br>
//      &lt;SubProxy&gt;<br>
//        &lt;Proxy name=&quot;Mapper2&quot; class=&quot;vtkPolyDataMapper&quot;&gt;<br>
//          &lt;InputProperty name=&quot;Input&quot; ...&gt;<br>
//            ...<br>
//          &lt;/InputProperty&gt;<br>
//          &lt;IntVectorProperty name=&quot;ScalarVisibility&quot; ...&gt;<br>
//            ...<br>
//          &lt;/IntVectorProperty&gt;<br>
//            ...<br>
//        &lt;/Proxy&gt;<br>
//        &lt;ShareProperties subproxy=&quot;Mapper&quot;&gt;<br>
//          &lt;Exception name=&quot;Input&quot; /&gt;<br>
//        &lt;/ShareProperties&gt;<br>
//      &lt;/SubProxy&gt;<br>
//    &lt;/Proxy&gt;<br>
//    \endcode<br>
//    Thus, subproxies Mapper and Mapper2 share the properties that are<br>
//    common to both; except those listed as exceptions using the &quot;Exception&quot;<br>
//    tag.<br>
//<br>
// \li 2) It is possible for a subproxy to use proxy definition<br>
defined elsewhere<br>
//     by identifying the interface with attribues &quot;proxygroup&quot; and &quot;proxyname&quot;.<br>
//     eg.<br>
//     \code<br>
//     &lt;SubProxy&gt;<br>
//       &lt;Proxy name=&quot;Mapper&quot; proxygroup=&quot;mappers&quot; proxyname=&quot;PolyDataMapper&quot; /&gt;<br>
//     &lt;/SubProxy&gt;<br>
//     \endcode<br>
//<br>
// \li 3) It is possible to scope the properties exposed by a subproxy<br>
and expose<br>
//     only a fixed set of properties to be accessible from outside. Also,<br>
//     while exposing the property, it can be exposed with a different name.<br>
//     eg.<br>
//     \code<br>
//     &lt;Proxy name=&quot;Alpha&quot; ....&gt;<br>
//       ....<br>
//       &lt;SubProxy&gt;<br>
//         &lt;Proxy name=&quot;Mapper&quot; proxygroup=&quot;mappers&quot;<br>
proxyname=&quot;PolyDataMapper&quot; /&gt;<br>
//         &lt;ExposedProperties&gt;<br>
//           &lt;Property name=&quot;LookupTable&quot; exposed_name=&quot;MapperLookupTable&quot; /&gt;<br>
//         &lt;/ExposedProperties&gt;<br>
//       &lt;/SubProxy&gt;<br>
//     &lt;/Proxy&gt;<br>
//     \endcode<br>
//     Here, for the proxy Alpha, the property with the name<br>
LookupTable from its<br>
//     subproxy &quot;Mapper&quot; can be obtained by calling<br>
GetProperty(&quot;MapperLookupTable&quot;)<br>
//     on an instance of the proxy Alpha. &quot;exposed_name&quot; attribute is<br>
optional, if<br>
//     not specified, then the &quot;name&quot; is used as the exposed property name.<br>
//     Properties that are not exposed are treated as<br>
//     non-saveable and non-animateable (see vtkSMProperty for details).<br>
//     Exposed property restrictions only work when<br>
//     using the GetProperty on the container proxy (in this case Alpha) or<br>
//     using the PropertyIterator obtained from the container proxy. If one<br>
//     is to some how obtain a pointer to the subproxy and call GetProperty on<br>
//     it (or get a PropertyIterator for the subproxy), the properties exposed<br>
//     by the container class are no longer applicable.<br>
//     If two exposed properties are exposed with the same name, then<br>
a Warning is<br>
//     flagged -- only one of the two exposed properties will get exposed.<br>
//<br>
// .SECTION See Also<br>
// vtkSMProxyManager vtkSMProperty vtkSMSourceProxy vtkSMPropertyIterator<br>
<br>
<br>
On Wed, Apr 25, 2012 at 3:09 AM, Jean-Noël Chiganne<br>
<div class="HOEnZb"><div class="h5">&lt;<a href="mailto:jean-noel.chiganne@limsi.fr">jean-noel.chiganne@limsi.fr</a>&gt; wrote:<br>
&gt; Hi Nikhil,<br>
&gt;<br>
&gt; Thanks for your answer !<br>
&gt;<br>
&gt; So I&#39;ll continue my investigations in the VR plugin and do what you suggest<br>
&gt; about extending it.<br>
&gt;<br>
&gt; When you say &quot;Extend the internal event structure to include OSC data.&quot;, do<br>
&gt; you mean the internal event structure of ParaView or of the VR plugin ?<br>
&gt;<br>
&gt; If someone has a link, I&#39;m still looking for a doc about the XML<br>
&gt; ServerManager syntax. =)<br>
&gt;<br>
&gt; Have a good day,<br>
&gt;<br>
&gt; Jean-Noël<br>
&gt;<br>
&gt; 2012/4/24 Nikhil Shetty &lt;<a href="mailto:nikhil.shetty@kitware.com">nikhil.shetty@kitware.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Hi Jean,<br>
&gt;&gt;<br>
&gt;&gt; The VRPlugin simply provides a framework to pass alternative event<br>
&gt;&gt; streams. It currently takes VRPN and/or VRUI streams and converts it into an<br>
&gt;&gt; internal event structure. There is a dispatcher which takes these event<br>
&gt;&gt; streams and dispatches to various VRInteractor styles.<br>
&gt;&gt;<br>
&gt;&gt; However the even stream does not replace the window interactor but instead<br>
&gt;&gt; we define new interactor styles which work alongside the current style.<br>
&gt;&gt;<br>
&gt;&gt; You could start writing the plugin from scratch by copying the VRPlugin<br>
&gt;&gt; over and deleting unnecessary classes. Alternatively you could extend the<br>
&gt;&gt; plugin cause it has most of the framework to forward (non native) events to<br>
&gt;&gt; the system.<br>
&gt;&gt;<br>
&gt;&gt; If you decide to do the latter then you will have to do the following<br>
&gt;&gt;<br>
&gt;&gt; 1. Add a connection client for OSC (VRPN and VRUI are just connection<br>
&gt;&gt; clients).<br>
&gt;&gt; 2. Extend the internal event structure to include OSC data.<br>
&gt;&gt; 3. Write an Interactor style to handle OSC events.<br>
&gt;&gt;<br>
&gt;&gt; All the best<br>
&gt;&gt;<br>
&gt;&gt; Regards<br>
&gt;&gt; Nikhil<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Apr 24, 2012 at 9:13 AM, Jean-Noël Chiganne<br>
&gt;&gt; &lt;<a href="mailto:jean-noel.chiganne@limsi.fr">jean-noel.chiganne@limsi.fr</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I&#39;m trying to develop a plugin in Paraview and I have some questions.<br>
&gt;&gt;&gt; I found a wiki page &quot;PlugIn How To&quot; speaking a little about plugin<br>
&gt;&gt;&gt; implementation but it&#39;s still confuse to me.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Is there a page explaining all the XML syntax of the ServerManager and<br>
&gt;&gt;&gt; ClientManager files ? For instance I tried to compile and use the plugin<br>
&gt;&gt;&gt; &quot;MyView&quot; as shown on the wiki page, but I&#39;ve got an error message when<br>
&gt;&gt;&gt; loading it in Paraview &quot;Failed to create a proxy for the requested view<br>
&gt;&gt;&gt; type...&quot;. As I don&#39;t know the XML syntax it&#39;s hard to find where the mistake<br>
&gt;&gt;&gt; could be.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I have an other question. My goal is to develop a plugin which would make<br>
&gt;&gt;&gt; paraview reactive to OSC messages (or VRPN messages, I&#39;ve seen there is a VR<br>
&gt;&gt;&gt; plugin but it&#39;s another problem ^^) but I don&#39;t know if it&#39;s possible ?<br>
&gt;&gt;&gt; Actually I don&#39;t understand where is the entry point for paraview in the C++<br>
&gt;&gt;&gt; source code of a plugin, and how I can get back Paraview objects instances<br>
&gt;&gt;&gt; (as the render windows to get the camera and control it with OSC messages<br>
&gt;&gt;&gt; etc). To sum up, I think the final goal is to replace WindowInteractor by an<br>
&gt;&gt;&gt; Interactor reacting to OSC events instead of keyboard/mouse events.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I hope my message is understandable ^^<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thank you for reading  :)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Jean-Noël Chiganne<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Paraview-developers mailing list<br>
&gt;&gt;&gt; <a href="mailto:Paraview-developers@paraview.org">Paraview-developers@paraview.org</a><br>
&gt;&gt;&gt; <a href="http://public.kitware.com/mailman/listinfo/paraview-developers" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Paraview-developers mailing list<br>
&gt; <a href="mailto:Paraview-developers@paraview.org">Paraview-developers@paraview.org</a><br>
&gt; <a href="http://public.kitware.com/mailman/listinfo/paraview-developers" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
&gt;<br>
</div></div></blockquote></div><br></div>