Immersive ParaView
Overview
- Configure and build ParaView with the VR plugin enabled.
- Configuring the server display specification (.pvx file).
- Setup connections to input event streams.
- Launch pvserver.
Build ParaView
Follow regular build instructions from http://paraview.org/Wiki/ParaView:Build_And_Install. In addition following steps needs to be performed:
- Install Qt (client) and MPI (client and server) as they are ParaView dependencies. If using VRPN to generate VR input events, make sure that it is built and installed as well.
- When configuring cmake enable
BUILD_SHARED_LIB, PARAVIEW_BUILD_QT_GUI, PARAVIEW_USE_MPI
andPARAVIEW_BUILD_PLUGIN_VRPlugin
. - Enable
PARAVIEW_USE_VRPN
orPARAVIEW_USE_VRUI
(Apple/Linux only) depending on input event source you wish to use.- If VRPN support is enabled and the library is not installed in the default paths then
VRPN_INCLUDE_DIR
andVRPN_LIBRARY
may also need be set.
- If VRPN support is enabled and the library is not installed in the default paths then
Configuring Displays
The ParaView server is responsible for configuring displays. The display configuration is stored on a ".pvx" file.
ParaView has no concept of units and therefore user have to make sure that the configuration values are in the same measurements units as what tracker has producing. So for example if tracker data is in meters, then everything is considered in meters, if feet then feet becomes the unit for configuration.
Structure of PVX Config File
<source lang="xml"> <?xml version="1.0" ?> <pvx>
<Process Type="server|dataserver|renderserver"> <EyeSeparation Value="0.065"/> <Machine Name="hostname" Environment="DISPLAY=:0" Geometry="1920x1080+0+0" FullScreen="0" ShowBorders="0" LowerLeft="-1.0 -1.0 -1.0" LowerRight="1.0 -1.0 -1.0" UpperRight="1.0 1.0 -1.0"> </Machine> </Process>
</pvx> </source>
Example Config.pvx
- The following example is for a six sided cave with origin at (0,0,0):
<source lang="xml"> <?xml version="1.0" ?> <pvx>
<Process Type="client" /> <Process Type="server"> <EyeSeparation Value="0.065"/> <Machine Name="Front" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" -1 -1 -1" LowerRight=" 1 -1 -1" UpperRight=" 1 1 -1" /> <Machine Name="Right" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" 1 -1 -1" LowerRight=" 1 -1 1" UpperRight=" 1 1 1" /> <Machine Name="Left" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" -1 -1 1" LowerRight="-1 -1 -1" UpperRight="-1 1 -1"/> <Machine Name="Top" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" -1 1 -1" LowerRight=" 1 1 -1" UpperRight=" 1 1 1"/> <Machine Name="Bottom" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" -1 -1 1" LowerRight=" 1 -1 1" UpperRight=" 1 -1 -1"/> <Machine Name="Back" Environment="DISPLAY=:0" FullScreen="1" ShowBorders="0" LowerLeft=" 1 -1 1" LowerRight="-1 -1 1" UpperRight="-1 1 1"/> </Process>
</pvx> </source>
- A sample PVX is provided in ParaView/Documentation/cave.pvx. This can be used to play with different display configurations.
Notes on PVX file usage
- PVX file should be specified as the last command line argument of the server processes.
- The PVX file is typically specified for all the executables configured in it. In case of data-server/render-server configuration, if you are setting up the environment for the two processes groups, then the PVX file must be passed as a command line option to both the executables: pvdataserver and pvrenderserver.
- When running in parallel the file is read on all nodes; hence it must be present on all nodes.
- ParaView has no concept of units.
- Use tracker units as default unit for corner points values, eye separation and anything else that requires real world units.
Configure Input Connections
This section details the specification of VRPN or VRUI connections using the ParaView VR plugin's user interface.
Loading the VR plugin in ParaView
- Start the ParaView application.
- Load the VR plugin:
Add a New Connection
- Click "Add" under "VR Connections".
- VRPN:
- Select "VRPN" as the connection type.
- Enter a name for the connection.
- Specify the address of the VRPN server in the form "<device>@<hostname/IP>".
- Add inputs by specifying their type (tracker, button, or analog), id #, and a unique identifier, then clicking the "+" icon. The identifier should be descriptive as it will be used when configuring interactions later.
- Click OK
- VRUI:
- Select "VRUI" as the connection type.
- Enter a name for the connection.
- Specify the hostname or IP address of the VRUI server.
- Specify the port that the VRUI server is using.
- Add inputs by specifying their type (tracker, button, or analog), id #, and a unique identifier, then clicking the "+" icon. The identifier should be descriptive as it will be used when configuring interactions later.
- Click OK