Immersive Visualization / IQ-Station Wiki
This site hosts information on virtual reality systems that are geared toward scientific visualization, and as such often toward VR on Linux-based systems. Thus, pages here cover various software (and sometimes hardware) technologies that enable virtual reality operation on Linux.
The original IQ-station effort was to create low-cost (for the time) VR systems making use of 3DTV displays to produce CAVE/Fishtank-style VR displays. That effort pre-dated the rise of the consumer HMD VR systems, however, the realm of midrange-cost large-fishtank systems is still important, and has transitioned from 3DTV-based systems to short-throw projectors.
ImmersiveParaView
Immersive ParaView
ParaView is a good general-purpose visualization tool built on VTK (Visualization ToolKit). Recently, virtual reality features have begun to be incorporated into the main trunk of ParaView. This page describes how to compile, configure, and run ParaView with these extensions.
How to Run Immersive ParaView
- make sure the MPI daemon is running
% mpd &
- make sure the PARAVIEW_ROOT environment variable points to your Build directory
% export PARAVIEW_ROOT=/opt/ParaView-3.10.1/Build
- or
% setenv PARAVIEW_ROOT /opt/ParaView-3.10.1/Build
- Run the ParaView server application (perhaps in the background)
- This is where the screen configuration file is specified (see below)
% (mpiexec -np 1 ${PARAVIEW_ROOT}/bin/pvserver /path/iqstation.pvx &)
- Run the ParaView client w/ stereo and tracker options
% ${PARAVIEW_ROOT}/bin/paraview --stereo --stereo-type="Checkerboard" --server=localhost --vrpn --vrpn-address=head@156.56.14.123
- or
% ${PARAVIEW_ROOT}/bin/paraview --stereo --stereo-type="Checkerboard" --server=localhost --vrui --vrui-address=localhost
- Other common options for
stereo-type
:- "Anaglyphic"
- "CrystalEyes" (ie. active stereo glasses)
- Other common options for
How to Test-Run Immersive ParaView
This example shows how to run Immersive ParaView in a desktop window in order to test tracking. (This test does not require the use of MPI.)
- Set the environment variable to create windowed-output from the ParaView server
% setenv PV_ICET_WINDOW_BORDERS 1
- Run the ParaView server application
% paraview --server=localhost
How To Build Immersive ParaView
- Install missing dependencies
- Commonly needed packages include:
- mpich2
- ...
- Download the latest source (3.10.1 as of this writing):
- NOTE: the pre-built packages do not contain the new position-tracking plugins
- Untar/unzip the source ball
- E.g.
% tar -zxf ParaView-3.10.1.tar.gz
- Make a build directory:
% mkdir ParaView-3.10.1/Build
% cd ParaView-3.10.1/Build
- Use Cmake (or ccmake) to enable the immersive options:
- General options:
- set BUILD_SHARED_LIBS to ON
- set PARAVIEW_USE_MPI to ON
- Immersive Interface options:
- For VRPN:
- PARAVIEW_BUILD_PLUGIN_VRPNPlug set to "ON"
- VRPN_INCLUDE_DIR set appropriately (perhaps "/usr/local/include")
- VRPN_LIBRARY set appropriately (perhaps "/usr/local/lib/libvrpn.a")
- For Vrui:
- PARAVIEW_BUILD_PLUGIN_VRUIPlug set to "ON"
- ParaView_DIR set to the build directory (perhaps "/opt/ParaView-3.10.1/Build") -- only needed until a bug in cmake config file is fixed
- Now make the application
- hit 'c' to configure
- if you get an error message page: hit 'e' to exit that page
- NOTE: you may get an error that ParaView can't handle QT version 4.7.0 -- ignore this
- hit 'g' to generate the makfiles
- run make
% make -j 8
How to Configure Immersive ParaView
Kitware also maintains a wiki site with instructions on how to use ParaView on a VR display.
But here are some things to keep in mind:
- ParaView is "unit-less", so whatever units you choose will affect the size of how they are rendered.
- Presently, using "feet" as the units in the
.pvx
file is probably the best choice.
- ParaView is Y-UP, and Z-towards you (i.e. out of the screen)
- Things don't seem to work well if a screen is located on the Z=0 plane (and that may be true of other planes as well).
- Tracking only works on the views rendered by
pvserver
not the paraview
client application.
Issues
- stereo appears in the main PV window, even though that is typically a mono-screen -- so question is, how to control which windows are stereo, and which are not
- When running with full-screen pvserver renderings, ParaView (or QT controlled by ParaView, or maybe down in the VTK library) disables all window movement and keyboard input for all other windows (even the non-ParaView ones)! Of course, since it disables text into ParaView itself, that makes it hard to type in parameters. This is definitely a bug! One workaround is to use Alt-Ctrl, and even though the other windows don't appear, it can cause keyboard input focus to be placed in the specified window.
- the "--server=localhost" option does not seem to work -- ParaView bug?
- Scroll wheel moves objects in Z (i.e it's not altering their size)