[Paraview] Using MobileSocketPlugin to get metadata
Hi, I am trying to get the metadata from ParaView by connecting to the socket. I'm having an issue where I am correctly sending the command to send the data but I'm not receiving the length value or string correctly. Below is my method how I am currently trying to get the length value: // In the main program // command = 2; if(-1 == send(socket, command, sizeof(command), 0)) exit(1); int size; unsigned long long length; if((size = Receive(socket, length, sizeof(unsigned long long)) = 0) exit(1); cout size endl; cout length endl; // Receive function // int Receive( cons int sk, void* data, int len) { char* buffer = reinterpret_castchar*(data); int total = 0; do { int nRecvd = recv(socket, buffered+total, len-total, 0); if(nRecvd == 0) { cout No Data Received endl; exit(1); } if(nRecvd == -1) { cout Error endl; exit(1); } total += nRecvd; }while(total len); return total; } Now in the source code of the MobileSocketPlugin, I added a printf to show the value of length before it is sent over the socket. When I run my code, it succeeds without an error but the value of my length is not equal. For example, if I connect and run my code immediately after starting up ParaView, it always sends a value of 1733 but I receive a value of 7443178323969 every time. I'm really not sure what I need to change to get this correct. If someone could point me in the right direction on what I need to be doing to receive the metadata through MobileSocketPlugin, I would greatly appreciate it! Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843 IT RSS Treasurer - MST Robotics Competition Team -- ___ 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
[Paraview] Controlling RenderView using Wiimote and VRPlugin
Hi, I am currently trying to create a way of controlling the camera in ParaView using the Joystick of a Wiimote (WiiC library). I had previously attempted this by using Pat Marion's socket plugin to send camera changes through the python shell but ran into a problem with sending too many Render() commands. It was suggested to me by Pat Marion and the Kitware employees I met at SuperComputing 2012 to use the VRPlugin to accomplish this. So after a 3 month hiatus from my project, I have finally gotten back to it but am currently lost in documentation. I have no idea where to begin with writing the code for a custom device and then connecting to and writing the camera changes to the VRPN server for ParaView. If someone could point me in the right direction of documentation that explains how to create a custom device/interaction for the VRPlugin/VRPN or some examples of such user created applications I would greatly appreciate it! Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843 IT Research Support Service Treasurer - MST Robotics Competition Team -- ___ 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
Re: [Paraview] Manipulating Big Data through Python Shell
Today I uploaded two videos to Youtube, showing the basics of what is happening. They can be found via the following links: 1. http://www.youtube.com/watch?v=68yeT8t0TUcfeature=youtu.be 2. http://www.youtube.com/watch?v=Linns_iSBrofeature=youtu.be The init.py file used now uses renView.InteractiveRender() instead of just Render(), as suggested by Utkarsh. (Thank you again for that suggestion by the way!) The first video is the mouse-based manipulation of 20MB of earthquake data. As shown, LOD is not active and my computer has no problem panning, rotating, etc. in near real-time. Now in the second video you see how ParaView acts when using the Wii Nunchuk. The first part, without LOD active, you can see the extreme delay after I let go. After turning on LOD, the rendering speed does improve quite a bit but it is still not nearly as instantaneous as the mouse is without LOD. Also the data doesn't fully re-render after releasing the joystick; a mouse click is still required. I think I can remedy that just by sending Render() when the joystick is released. So my current goal is to get the Wii Nunchuk application running the ParaView rendering at least at 90% of the capacity of what the mouse can, only using LOD if it is required when using the mouse also. I'm clueless as what else I can do with sending commands to the Python Shell to speed things up. Are there any ideas of how to reach this goal from where I am now? Whether it be improving the current process of sending Python commands or using a completely different process of manipulating the rendering from an external application. Also here is some more insight as to what the Wii application is actually doing in terms of interacting with ParaView. Just in case it could be useful information: 1. The application is written in C++. During initialization, it connects to the server socket and loads the init.py file through the following commands: svr.sin_family = AF_INET; svr.sin_port = htons(9000); inet_aton(127.0.0.1, svr.sin_addr); s = socket(AF_INET, SOCK_STREAM, 0); connect(s, (const sockaddr*)svr, sizeof(sockaddr_in)); write(s, execfile('init.py'), sizeof(execfile('init.py'))); 2. From there, every time the joystick is moved outside of its deadzone the following lines are ran: stringstream ss; ss.str(std::string()); ss command( x_value , y_value );; const std::string temp = ss.str(); const char* cstr = temp.c_str(); write(s, cstr, strlen(cstr)); 3. I'm pretty sure that it is not the C++ side of my Wii application slowing things down. Using 'printf()'s, all the 'write()'s happen and finish without any noticeable delay. I'm still open to any suggestions out there! All help is very appreciated :) Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843 IT RSS Treasurer - MST Robotics Competition Team -- ___ 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
[Paraview] Manipulating Big Data through Python Shell
Hello, I am trying to control renderings with a WiiMote instead of a mouse using Pat Marion's ParaViewSocketPlugin to send commands to ParaView's python shell (see attached .py file) and running into an issue. When trying to manipulate 20MB of point cloud data, ParaView severely lags behind after sending commands and I was able to narrow it down to the 'Render()' call. My current fix has been to only call 'Render()' every third iteration of commands I send but this doesn't necessarily solve the issue as I plan on moving to GB sized data. Does anyone have a suggestion as to what I can do to speed up rendering through the python shell, or another way of manipulating the render data from an external program? Some extra information: 1. I am running ParaView 3.14.1 64bit from source on Ubuntu 12.04 2. Quickly rotating 15MB of point-data with the mouse peaks my CPU at about 53%. With my Wiimote application, this is just a little higher at 55% (rendering on every command). 3. WiiMotes poll slower than most computer mice at 100Hz. So I'm pretty sure not sending commands any faster than a mouse would. 4. Python commands are based on the python examples included with ParaView 3.14.1. They were designed to work as closely as possible to what C++ Trackball commands do. (This was my first time working with python or visualization manipulation so any advice on general improvements to the commands would be greatly appreciated too!) 5. The Wii application works by utilizing the Nunchuk. Button combinations determine what type of manipulation (Panning, Zoom, Rotate, and Spin) and then it converts the magnitude and angle of the joystick into x-y coordinates. I have tried to include all the information that I thought would be relevant but if there is anything else that you would like to know, I'd be more than happy to provide it. Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843 IT RSS Treasurer - MST Robotics Competition Team -- init.py Description: init.py ___ 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
Re: [Paraview] Manipulating Big Data through Python Shell
Immediate Mode Rendering is off but I can't seem to utilize the LOD. I have it set and it clearly works when I use the mouse but the effects are not present when I use the WiiMote. I've yet to figure out how to get it to work with my application by using python. From: Berk Geveci [mailto:berk.gev...@kitware.com] Sent: Friday, August 31, 2012 3:08 PM To: Bueter, Travis J. (ST-Student) Cc: paraview@paraview.org Subject: Re: [Paraview] Manipulating Big Data through Python Shell Cool stuff! The performance problem makes me think that ParaView is not using display lists. Is Immediate Mode Rendering off? (it should be). When you get to GB size data, there will have to be some LOD involved. No graphics card can render that many points at interactive rates. On Fri, Aug 31, 2012 at 3:47 PM, Bueter, Travis J. (ST-Student) tjb...@mail.mst.edumailto:tjb...@mail.mst.edu wrote: Hello, I am trying to control renderings with a WiiMote instead of a mouse using Pat Marion's ParaViewSocketPlugin to send commands to ParaView's python shell (see attached .py file) and running into an issue. When trying to manipulate 20MB of point cloud data, ParaView severely lags behind after sending commands and I was able to narrow it down to the 'Render()' call. My current fix has been to only call 'Render()' every third iteration of commands I send but this doesn't necessarily solve the issue as I plan on moving to GB sized data. Does anyone have a suggestion as to what I can do to speed up rendering through the python shell, or another way of manipulating the render data from an external program? Some extra information: 1. I am running ParaView 3.14.1 64bit from source on Ubuntu 12.04 2. Quickly rotating 15MB of point-data with the mouse peaks my CPU at about 53%. With my Wiimote application, this is just a little higher at 55% (rendering on every command). 3. WiiMotes poll slower than most computer mice at 100Hz. So I'm pretty sure not sending commands any faster than a mouse would. 4. Python commands are based on the python examples included with ParaView 3.14.1. They were designed to work as closely as possible to what C++ Trackball commands do. (This was my first time working with python or visualization manipulation so any advice on general improvements to the commands would be greatly appreciated too!) 5. The Wii application works by utilizing the Nunchuk. Button combinations determine what type of manipulation (Panning, Zoom, Rotate, and Spin) and then it converts the magnitude and angle of the joystick into x-y coordinates. I have tried to include all the information that I thought would be relevant but if there is anything else that you would like to know, I'd be more than happy to provide it. Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843tel:%28573%29-238-5843 IT RSS Treasurer - MST Robotics Competition Team -- ___ Powered by www.kitware.comhttp://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
Re: [Paraview] Manipulating Big Data through Python Shell
I would be happy to post a video, but I wouldn't be able to make and then post it until later next week. For very small data (such as a simple sphere), the WiiMote performs with only the slightest bit of lag in comparison to the mouse. But as the data gets larger, the lag increases linearly with the size. From: Aashish Chaudhary [mailto:aashish.chaudh...@kitware.com] Sent: Friday, August 31, 2012 3:20 PM To: Berk Geveci Cc: Bueter, Travis J. (ST-Student); paraview@paraview.org Subject: Re: [Paraview] Manipulating Big Data through Python Shell This is pretty cool!! Would it be possible to create a video of your interactions? Just to be sure, so are you saying that when you interact with mouse, the performance is much better than when you use wiimote? If performance is bad with both devices then it could be what Berk said. If one is better than another then there is something else is going on. Thanks, On Fri, Aug 31, 2012 at 4:08 PM, Berk Geveci berk.gev...@kitware.commailto:berk.gev...@kitware.com wrote: Cool stuff! The performance problem makes me think that ParaView is not using display lists. Is Immediate Mode Rendering off? (it should be). When you get to GB size data, there will have to be some LOD involved. No graphics card can render that many points at interactive rates. On Fri, Aug 31, 2012 at 3:47 PM, Bueter, Travis J. (ST-Student) tjb...@mail.mst.edumailto:tjb...@mail.mst.edu wrote: Hello, I am trying to control renderings with a WiiMote instead of a mouse using Pat Marion's ParaViewSocketPlugin to send commands to ParaView's python shell (see attached .py file) and running into an issue. When trying to manipulate 20MB of point cloud data, ParaView severely lags behind after sending commands and I was able to narrow it down to the 'Render()' call. My current fix has been to only call 'Render()' every third iteration of commands I send but this doesn't necessarily solve the issue as I plan on moving to GB sized data. Does anyone have a suggestion as to what I can do to speed up rendering through the python shell, or another way of manipulating the render data from an external program? Some extra information: 1. I am running ParaView 3.14.1 64bit from source on Ubuntu 12.04 2. Quickly rotating 15MB of point-data with the mouse peaks my CPU at about 53%. With my Wiimote application, this is just a little higher at 55% (rendering on every command). 3. WiiMotes poll slower than most computer mice at 100Hz. So I'm pretty sure not sending commands any faster than a mouse would. 4. Python commands are based on the python examples included with ParaView 3.14.1. They were designed to work as closely as possible to what C++ Trackball commands do. (This was my first time working with python or visualization manipulation so any advice on general improvements to the commands would be greatly appreciated too!) 5. The Wii application works by utilizing the Nunchuk. Button combinations determine what type of manipulation (Panning, Zoom, Rotate, and Spin) and then it converts the magnitude and angle of the joystick into x-y coordinates. I have tried to include all the information that I thought would be relevant but if there is anything else that you would like to know, I'd be more than happy to provide it. Thanks, Travis J. Bueter -- Missouri University of Science and Technology - Junior B.S. Computer Engineering/Computer Science tjb...@mail.mst.edumailto:tjb...@mail.mst.edu (573)-238-5843tel:%28573%29-238-5843 IT RSS Treasurer - MST Robotics Competition Team -- ___ Powered by www.kitware.comhttp://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.comhttp://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 -- | Aashish Chaudhary | RD Engineer | Kitware Inc. | www.kitware.comhttp://www.kitware.com ___ 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