Immersive ParaView

From KitwarePublic
Revision as of 13:39, 12 March 2013 by Dlonie (talk | contribs) (Initial version, still in progress.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Overview

  1. Configure and build ParaView with the VR plugin enabled.
  2. Configuring the server display specification (.pvx file).
  3. Setup connections to input event streams.
  4. 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 and PARAVIEW_BUILD_PLUGIN_VRPlugin .
  • Enable PARAVIEW_USE_VRPN or PARAVIEW_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 and VRPN_LIBRARY may also need be set.

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.