Difference between revisions of "ParaView/Users Guide/CAVE Display"

From KitwarePublic
Jump to navigationJump to search
Line 1: Line 1:
== ( NOTE: This page is currently undergoing changes.)==
= ( NOTE: This page is currently undergoing changes.)=
== Introduction ==
== Introduction ==
* ParaView has basic support for visualization in CAVE-like/VR or Virtual Environments (VE).  
* ParaView has basic support for visualization in CAVE-like/VR or Virtual Environments (VE).  
Line 8: Line 8:


* VR support in ParaView includes the ability to  
* VR support in ParaView includes the ability to  
  1) Configure displays (CAVE/Tiled Walls etc) and  
:# Configure displays (CAVE/Tiled Walls etc) and  
  2) The ability to configure inputs from VRPN/VRUI servers.
:# The ability to configure inputs using VRPN/VRUI.


== Configuring Displays ==
* ParaView can operate in a Client / Server fashion. The VR/CAVE module leverage this by assigning different processes on the server to manage different displays. Displays are thus configured on the server side by passing a *.pvx configuration XML file during start-up.


* ParaView can operate in a Client / Server fashion. The VR/CAVE module leverage this by assigning different processes on the server to manage different displays. Displays are thus configured on the server side by passing a *.pvx configuration XML file during start-up.
* The client acts as a central point of control. It can initiate the scene (visualization pipeline) and also relay tracked interactions to each server process managing the displays. The VR plugin on the client side enables this. Device and interaction style configurations are brought in through the ParaView state file (This will also have a GUI component in the near future).
 
== Architecture and Design ==
 
(content coming up)


== Configure Inputs ==
== Process to Build, Configure and Run ParaView in VE ==


* Configuring inputs is a two step process
Enabling ParaView for VR is a five stage process.
  1) Define connections to one or more VRPN/VRUI servers.
  2) Mapping data coming in from the server to ParaView interactor styles.


* The client acts as a central point of control. It can initiate the scene (visualization pipeline) and also relay tracked interactions to each server process managing the displays. The VR plugin on the client side enables this. Device and interaction style configurations are brought in through the ParaView state file (This will also have a GUI component in the near future).
# Building ParaView with the required parameters.
# Preparing the display configuration file.
# Preparing the input configuration file.
# Starting the server (with display config.pvx)
# Starting the client (with input config.pvsm)


== Prerequisites for Compiling ==
=== Building ===


Follow regular build instructions from http://paraview.org/Wiki/ParaView:Build_And_Install. In addition following steps needs to be performed
Follow regular build instructions from http://paraview.org/Wiki/ParaView:Build_And_Install. In addition following steps needs to be performed


* VRPN needs to be installed on the client side.
* Make sure Qt and MPI are installed cause they are required for building. If using VRPN make sure it is build and installed as well.
 
* When configuring cmake enable <code> BUILD_SHARED_LIB, PARAVIEW_BUILD_QT_GUI, PARAVIEW_USE_MPI</code> and <code> PARAVIEW_BUILD_PLUGIN_VRPlugin </code>.
* MPI needs to be installed on the server side.
* On Apple and Linux platforms the Plugin uses VRUI device daemon client as its default and on Windows VRPN is the default.
* If you want to enable the other simply enable <code> PARAVIEW_USE_VRPN </code> or <code> PARAVIEW_USE_VRUI </code>.
* If VRPN is not found in the default paths then <code> VRPN_INCLUDE_DIR </code> and <code> VRPN_LIBRARY</code> may also need be set.


* Make sure to enable <code> BUILD_SHARED_LIB, PARAVIEW_USE_MPI</code> and <code> PARAVIEW_BUILD_PLUGIN_VRPlugin </code> when building for CAVE support.
=== Configuring Displays ===


* Consequently, <code> VRPN_INCLUDE_DIR </code>, <code> VRPN_LIBRARY</code> and <code> VRPN_QUAT_LIBRARY</code> should also be set.
The PV server is responsible for configuring displays. The display configuration is stored on a *.pvx file.


==Structure of Display Config File==
==== Structure of PVX Config File ====


<source lang="xml">
<source lang="xml">
Line 70: Line 78:
</source>
</source>


=== Example Config ===
==== Example Config.pvx ====
 
* The following example is for a six sided cave with origin at (0,0,0):
* The following example is for a six sided cave with origin at (0,0,0):


Line 114: Line 123:
* A sample PVX is provided in ParaView/Documentation/cave.pvx. This can be used to play with different display configurations.
* A sample PVX is provided in ParaView/Documentation/cave.pvx. This can be used to play with different display configurations.


=== Things to Keep in Mind ===
==== Notes on PVX file usage ====
 
* PVX file should be specified as the last command line argument for any of the server processes.  
* PVX file should be specified as the last command line argument for any of the server processes.  
* The PVX file is typically specified for all the executables whose environment is being changed using the PVX file. 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.
* The PVX file is typically specified for all the executables whose environment is being changed using the PVX file. 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.
* When running in parallel the file is read on all nodes, hence it must be present on all nodes.


== Basic Steps for a Successful Setup ==
=== Configure Inputs ===
 
* Configuring inputs is a two step process
:# Define connections to one or more VRPN/VRUI servers.
:# Mapping data coming in from the server to ParaView interactor styles.
 
==== Defining Connections ====
(content coming up)
==== Defining Interaction Styles ====
(content coming up)
==== Linking devices to interaction styles ====
(content coming up)
 
=== Start Server ===
 
* On a terminal run the server (For example we want to run 6 processes each driving one display in the cave. Change the number of process according to the number of displays).  
* On a terminal run the server (For example we want to run 6 processes each driving one display in the cave. Change the number of process according to the number of displays).  
   # PV_ICET_WINDOW_BORDERS=1 mpiexec -np 6 ./pvserver  /path/to/ConfigFile.pvx
   # PV_ICET_WINDOW_BORDERS=1 mpiexec -np 6 ./pvserver  /path/to/ConfigFile.pvx


Note:  PV_ICET_WINDOW_BORDERS=1 disables the full-screen mode and instead opens up a 400x400 window. Remove this environment variable to work in full-screen mode.
Note:  PV_ICET_WINDOW_BORDERS=1 disables the full-screen mode and instead opens up a 400x400 window. Remove this environment variable to work in full-screen mode.
=== Start Client ===


* Open another terminal to  run the client. (note: this client connects to the server which open up 6 windows according to the config given in cave.pvx). Change the stereo-type according to preference (see # ./paraview --help).
* Open another terminal to  run the client. (note: this client connects to the server which open up 6 windows according to the config given in cave.pvx). Change the stereo-type according to preference (see # ./paraview --help).
Line 132: Line 158:
* Enable the VRPlugin on the client.
* Enable the VRPlugin on the client.


* Load the state specifying VRPN or VRUI client connection and interaction styles.
* Load the state file (config.state) specifying VRPN or VRUI client connection and interaction styles.
 
== Tips and Tricks ==

Revision as of 17:10, 31 January 2012

( NOTE: This page is currently undergoing changes.)

Introduction

  • ParaView has basic support for visualization in CAVE-like/VR or Virtual Environments (VE).
  • Like typical computing systems, VE's consists of peripheral displays (output) and input devices. However, unlike regular systems, VE's keep track of the physical location of their IO devices with respect to an assumed base coordinates in the physical room (room coordinates).
  • Typically VE's consists of multiple stereoscopic displays that are configured based on the room coordinates. These base coordinates also typically serve as the reference coordinate for tracked inputs commonly found in VE's.
  • VR support in ParaView includes the ability to
  1. Configure displays (CAVE/Tiled Walls etc) and
  2. The ability to configure inputs using VRPN/VRUI.
  • ParaView can operate in a Client / Server fashion. The VR/CAVE module leverage this by assigning different processes on the server to manage different displays. Displays are thus configured on the server side by passing a *.pvx configuration XML file during start-up.
  • The client acts as a central point of control. It can initiate the scene (visualization pipeline) and also relay tracked interactions to each server process managing the displays. The VR plugin on the client side enables this. Device and interaction style configurations are brought in through the ParaView state file (This will also have a GUI component in the near future).

Architecture and Design

(content coming up)

Process to Build, Configure and Run ParaView in VE

Enabling ParaView for VR is a five stage process.

  1. Building ParaView with the required parameters.
  2. Preparing the display configuration file.
  3. Preparing the input configuration file.
  4. Starting the server (with display config.pvx)
  5. Starting the client (with input config.pvsm)

Building

Follow regular build instructions from http://paraview.org/Wiki/ParaView:Build_And_Install. In addition following steps needs to be performed

  • Make sure Qt and MPI are installed cause they are required for building. If using VRPN make sure it is build and installed as well.
  • When configuring cmake enable BUILD_SHARED_LIB, PARAVIEW_BUILD_QT_GUI, PARAVIEW_USE_MPI and PARAVIEW_BUILD_PLUGIN_VRPlugin .
  • On Apple and Linux platforms the Plugin uses VRUI device daemon client as its default and on Windows VRPN is the default.
  • If you want to enable the other simply enable PARAVIEW_USE_VRPN or PARAVIEW_USE_VRUI .
  • If VRPN is not found in the default paths then VRPN_INCLUDE_DIR and VRPN_LIBRARY may also need be set.

Configuring Displays

The PV server is responsible for configuring displays. The display configuration is stored on a *.pvx file.

Structure of PVX Config File

<?xml version="1.0" ?>
<pvx>
  <Process Type="server|dataserver|renderserver">
    <!-- 
      The only supported Type values are "server", "dataserver" or "renderserver".
      This controls which executable this configuration is applicable to.
      There can be multiple <Process /> elements in the same pvx file.
      ------------------------------------------------------
      |  Executable     | Applicable Process Type          |
      |  pvserver       | server, dataserver, renderserver |
      |  pvrenderserver | server, renderserver             |
      |  pvdataserver   | server, dataserver               |
      ------------------------------------------------------
     -->
    <Machine name="hostname"
             Environment="DISPLAY=m1:0"
             LowerLeft="-1.0 -1.0 -1.0"
             LowerRight="1.0 -1.0 -1.0"
             UpperRight="1.0  1.0 -1.0">
      <!--
         There can be multiple <Machine> elements in a <Process> element, 
         each one identifying the configuration for a process. 
         All attributes are optional.
         name="hostname"
         Environment: the environment for the process.
         LowerLeft|LowerRight|UpperRight 
       -->
    </Machine>
  </Process>
</pvx>

Example Config.pvx

  • The following example is for a six sided cave with origin at (0,0,0):
<?xml version="1.0" ?>
<pvx>
 <Process Type="client" />
 <Process Type="server">
  <Machine Name="Front"
           Environment="DISPLAY=:0"
           LowerLeft=" -1 -1 -1"
           LowerRight=" 1 -1 -1"
           UpperRight=" 1  1 -1" />
  <Machine Name="Right"
           Environment="DISPLAY=:0"
           LowerLeft="  1 -1 -1"
           LowerRight=" 1 -1  1"
           UpperRight=" 1  1  1" />
  <Machine Name="Left"
           Environment="DISPLAY=:0"
           LowerLeft=" -1 -1  1"
           LowerRight="-1 -1 -1"
           UpperRight="-1  1 -1"/>
  <Machine Name="Top"
           Environment="DISPLAY=:0"
           LowerLeft=" -1  1 -1"
           LowerRight=" 1  1 -1"
           UpperRight=" 1  1  1"/>
  <Machine Name="Bottom"
           Environment="DISPLAY=:0"
           LowerLeft=" -1 -1  1"
           LowerRight=" 1 -1  1"
           UpperRight=" 1 -1 -1"/>
  <Machine Name="Back"
           Environment="DISPLAY=:0"
           LowerLeft="  1 -1  1"
           LowerRight="-1 -1  1"
           UpperRight="-1  1  1"/>
  </Process>
</pvx>
  • 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 for any of the server processes.
  • The PVX file is typically specified for all the executables whose environment is being changed using the PVX file. 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.

Configure Inputs

  • Configuring inputs is a two step process
  1. Define connections to one or more VRPN/VRUI servers.
  2. Mapping data coming in from the server to ParaView interactor styles.

Defining Connections

(content coming up)

Defining Interaction Styles

(content coming up)

Linking devices to interaction styles

(content coming up)

Start Server

  • On a terminal run the server (For example we want to run 6 processes each driving one display in the cave. Change the number of process according to the number of displays).
 # PV_ICET_WINDOW_BORDERS=1 mpiexec -np 6 ./pvserver  /path/to/ConfigFile.pvx

Note: PV_ICET_WINDOW_BORDERS=1 disables the full-screen mode and instead opens up a 400x400 window. Remove this environment variable to work in full-screen mode.

Start Client

  • Open another terminal to run the client. (note: this client connects to the server which open up 6 windows according to the config given in cave.pvx). Change the stereo-type according to preference (see # ./paraview --help).
 # ./paraview --stereo --stereo-type=Anaglyph --server=localhost
  • --server=localhost connects the client to the server.
  • Enable the VRPlugin on the client.
  • Load the state file (config.state) specifying VRPN or VRUI client connection and interaction styles.

Tips and Tricks