Wonderful, You definitely getting there. BTW, what do you mean by a "weird clipping between refresh" ?
Thanks, Seb On Mon, May 9, 2011 at 7:39 PM, Rajvikram Singh <rajvikr...@yahoo.com>wrote: > Great. Just tried creating two views with CreateRenderView() within the > same session and was able to attach a different pipeline to both. > > For the view locking, I found a function called AddCameraLink(view1, view2, > linkname) which allowed me to achieve what I wanted. The views are sync'd > and apart from a weird clipping between refresh, it works flawlessly. So I > don't think I'll need to write a server side plugin .. this time :) > > Thanks again Sebastien. > > > > > --- On *Tue, 10/5/11, Sebastien Jourdain > <sebastien.jourd...@kitware.com>*wrote: > > > From: Sebastien Jourdain <sebastien.jourd...@kitware.com> > Subject: Re: [Paraview] ParaviewWeb two sessions, two views, two volume > datasets > To: "Rajvikram Singh" <rajvikr...@yahoo.com> > Cc: paraview@paraview.org > Date: Tuesday, 10 May, 2011, 4:10 AM > > > Hi Raj, > > first of all you only need one session. A session is basically a dedicated > connection to a ParaView server. So by creating 2 session, you were creating > 2 server where you could have created 2 views in the same session and setup > a mechanism to keep both camera of the views in synch. > Moreover, as you are using the same session, you can reuse your objects > such as the LUT. > To keep object in synch, you will have to write some piece of code on the > server side that you could call from your javascript client. > I don't have a simple example in mind but you could look at the pwsimple.py > where I had some binding between the widget and the implicit functions that > it represent. Of course the event type won't be the same but the idea is > there. > > In fact inside a Python plugin you should define a method like that: > > def bindViews(view1, view2): > # add some python code to bind the two camera together > # or maybe set the active camera of view1 to be the active > # camera of view 2. > > I know that it does not give you the full answer but at least it give you > some hints. > > Seb > > On Mon, May 9, 2011 at 5:29 PM, Rajvikram Singh > <rajvikr...@yahoo.com<http://mc/compose?to=rajvikr...@yahoo.com> > > wrote: > > Hi everyone > I would like to load two volume datasets (called FISH and SIMS in the > code below) in ParaviewWeb and then render them side by side in two > different views. The users should be able to 'lock' the camera amongst the > two views so that moving the object in one window also affects the camera in > the other. > > I tried the following piece of code but ran into a error which made me > think maybe I don't understand the concept of sessions and Display > properties well. Hoping somebody could help shed some light. There are two > functions that I've copy pasted below. Most of the variables are global for > now and shared between the functions. > > > // The init function loads and displays the two datasets > this.init = function() { > // Set the web service base URL > var i; > var serverUrl = > "<%=request.getScheme()%>://<%=request.getServerName()%>:<%=request.getServerPort()%>/PWService"; > // > // Create paraview sessions .. one each for FISH and SIMS > // > pv_FISH = new Paraview(serverUrl); > pv_FISH.createSession("CAVIAT-session-1", "FISH data", > "default"); > view_FISH = pv_FISH.CreateIfNeededRenderView(); > pv_FISH.Render(); > > pv_SIMS = new Paraview(serverUrl); > pv_SIMS.createSession("CAVIAT-session-2", "SIMS data", > "default"); > view_SIMS = pv_SIMS.CreateIfNeededRenderView(); > pv_SIMS.Render(); > > // Load the data files from disk > data_FISH = pv_FISH.OpenDataFile({filename : file_FISH}); > data_SIMS = pv_FISH.OpenDataFile({filename : file_SIMS}); > > // For volume rendering set the display properties for each > dataset loaded > > this.setupVolumeView(data_FISH, view_FISH, pv_FISH); > this.setupVolumeView(data_SIMS, view_SIMS, pv_SIMS); > > pv_FISH.Show({proxy : data_FISH}); > pv_FISH.UpdatePipeline(); > > pv_SIMS.Show({proxy : data_SIMS}); > pv_SIMS.UpdatePipeline(); > > > // set origin in the middle of dataset > pv_FISH.ResetCamera(); > view_FISH.setCenterOfRotation(view_FISH.getCameraFocalPoint()); > > pv_SIMS.ResetCamera(); > view_SIMS.setCenterOfRotation(view_SIMS.getCameraFocalPoint()); > > // Create and bind renderers for both sessions > var renderer_FISH = new JavaScriptRenderer("rendererName", > serverUrl); > renderer_FISH.init(pv_FISH.sessionId, view_FISH.__selfid__); > renderer_FISH.setSize('720','720'); > renderer_FISH.bindToElementId("FISH-container"); > renderer_FISH.start(); > > var renderer_SIMS = new JavaScriptRenderer("rendererName", > serverUrl); > renderer_SIMS.init(pv_SIMS.sessionId, view_SIMS.__selfid__); > renderer_SIMS.setSize('720','720'); > renderer_SIMS.bindToElementId("SIMS-container"); > renderer_SIMS.start(); > > } > > > // setupVolumeView will prepare the LUT and Scalar Opacity function > needed for volume rendering > this.setupVolumeView = function (_data, _view, _pv) { > > // *** Check to see is scope of lut and sof is valid for a per > volume operation *** > var lut = _pv.GetLookupTableForArray({arrayname : "ImageFile", > num_components : 1, HSVWrap : 0, NanColor : [0.0, 0.66666666666666663, 0.0], > RGBPoints : [1.0, 0.0, 0.0, 0.0, 16564.27904630101, 1.0, > 0.035950255588616767, 0.0, 19924.923666800998, 1.0, 0.035950255588616767, > 0.0, 39728.909301543368, 0.0, 0.66666666666666663, 0.0, 65294.000000000007, > 0.0, 0.0, 0.0], ColorSpace : 'HSV'}); > > var sof = _pv.CreatePiecewiseFunction( {Points:[0.0, 0.0, > 2762.37, 0.0588235, 2882.47, 0, 6965.97, 0.235294, 15373.2, 0.323529, > 25221.6, 0, 26662.9, 0, 36751.5, 0, 44318, 0.0, 52124.7, 0.323529, 63054, > 0.294118, 65336, 0.294118] }); > > > _pv.SetDisplayProperties( { > proxy : _data, > view : _view, > SelectMapper : 'GPU', > Representation : 'Volume', > LookupTable : lut, > ColorArrayName : 'ImageFile', > ScalarOpacityFunction : sof > } ); > > } // end of setDisplayToVolume() > > > > The error occurs when the code calls the following line inside the init() > function. > > this.setupVolumeView(data_SIMS, view_SIMS, pv_SIMS); > > Inside the setupVolumeView() function, while calling > SetDisplayProperties(), the code complains "Uncaught exception: Volume is > not a valid volume." This does not happen for the first data but for the > second one only. > > > Thanks > Raj > > > > > > _______________________________________________ > 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 > > >
_______________________________________________ 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