[Paraview] low level C++ example how to communicate with pvserver

Biddiscombe, John A. biddisco at cscs.ch
Wed Dec 15 02:53:55 EST 2010


Thomas,

It can be done, but working at the server manager level is dreadfully painful - primarily because you can't just Get/Set values on objects, but have to pass everything through proxy objects. (The nice thing about the python wrapping is that this is very cleanly implemented so you can just manipulate objects and the client server/proxy level is hidden below).

When the coprocessing library was added - I wanted to play with it, but without the python interface, so I created a simple demo which does everything at the server manager level in C++. You won't quite find the answer to your question here, but it will get you 75% of the way. I manually instantiate the pvserver manager stuff and then access it via proxies (whereas you want to communicate with an existing pvserver). 
git://git.cscs.ch/coprocessing.git
has a project that you might want to play with. It is very simple - creates a 3D Gaussian image distributed over N procs and animates it over time.
Option USE_PARAVIEW_COPROCESSING - when on, it links to the coprocessing libs and generates images in parallel using my own customized C++ pipeline interface to the server manager
if USE_PARAVIEW_COPROCESSING_PYTHON is also enabled - does exactly the same - but uses the python pipeline as provided by the default coprocessing library. Unfortunately, this seems to be broken (or at least useless, because when you save a coprocessing python state out from the gui to use in your coprocessing runs, so many unwanted variables are dumped out at the same time, that it takes longer to edit the python files and remove the ones that break it, than it would to just write it by hand).

There are some hardcoded paths in the code you will want to edit (to the python script for example), and the OFFSCREEN_RENDER flag can be defined as 1 or 0 depending on whether you want to see the animation appear. Leave it onscreen for testing.

I wanted to tidy this demo up and get the pythong stuff working cleanly. The raw C++ stuff works fine, but the python script needs cleaning up. At some point I wanted to poke around in the coprocessing plugin and see if the crud could be removed from the trace/state files. Maybe someone from kitware is reading this and can comment...

ttfn

JB



-----Original Message-----
From: paraview-bounces at paraview.org [mailto:paraview-bounces at paraview.org] On Behalf Of Thomas Kipling
Sent: 14 December 2010 15:53
To: paraview at paraview.org
Subject: [Paraview] low level C++ example how to communicate with pvserver

Hi!

Is it possible to use Paraview as kind of a visualization library? Without Qt 
GUI and without python interpreter?

I am looking for a C++ code example which demonstrates how to
* connect to an (already running) pvserver instance
* add a sphere source (or any other source)
* render the sphere
* grab the rendered image as byte array

My biggest problem is how to initialize the application and how to connect to a 
pvserver on port 11111. The applications in ParaView/Examples/CustomApplications 

all implement a Qt GUI. The batch processing application pvbatch.cxx executes a 
python script from a file, but it doesn't show how I can work with ServerManager 

objects in the C++ code. The book "ParaView Guide" suggests the use of 
vtkSMApplication to initialize the connection to a pvserver, but I can't seem to 

connect successfully.

Do you have examples that demonstrate the above four steps (or some of them) at 
a rather basic level?
(I mentioned "without python interpreter". What I mean is that the visualization 

should be defined using methods of ServerManager objects, not through 
interpreted python code. It is no problem, if another python interpreter is 
running in the background to process the client-server communication.)

Regards,
Thomas



_______________________________________________
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