CAVE Configuration Tricks

(For CAVE Library version 2.5.6)

Option Independence

Most of the major options which are controlled by the configuration files are independent of each other. This includes such options as the displays (i.e. walls), the tracker, the controller (wand), networking, and 4-wall distribution.

Hence, one can arbitrarily combine different choices for these options, and enable/disable them independently. For example, an actual 3D tracker, such as a Logitech, can be used with the simulator. Or, simulator tracking can be used with the CAVE (perhaps when the tracker itself is broken). The display can be disabled (by "Walls "), and only tracking and networking run.

Multiple Simulator Displays

Sometimes an application will have shared memory or synchronization problems which do not show up in the simulator, where there is only one display process. You can run multiple display processes in simulator mode by selecting more than one simulator "wall". e.g.:
	Simulator y
	Walls simulator simulator1

Arbitrary Projection Planes

The "screen" walls (screen0 ... screen7) allow views to be rendered for any arbitrary, rectangular projection plane. The projection plane is defined by three of its corners, using the "ProjectionCorners" configuration. This is the method used for the ImmersaDesk and IWall displays, and has also been used for a large-screen, curved display. The screen corners must be given in tracker coordinates for the GL projection to be correct.

The following is an example configuration for three screens curved around the origin:

   Walls screen0 screen1 screen2
   WallDisplay screen0 :0.0
   WallDisplay screen1 :0.1
   WallDisplay screen2 :0.2
   ProjectionCorners screen0  -5  0 -5    -5  10 -5     5 0 -5
   ProjectionCorners screen1  -11 0  3    -11 10  3    -4 0 -6
   ProjectionCorners screen2   11 0  3     11 10  3     4 0 -6

Passive Stereo

Passive, polarized stereo displays can be generated by using two separate pipes, one for the left eye view and one for the right eye view. The "WallEyes" configuration option can specify whether a given wall should render just the left or just the right view. To set up a passive stereo display, configure two screen walls with the same projection, but different eyes. For example:
	Walls screen0 screen1
	WallDisplay screen0 :0.0
	WallDisplay screen1 :1.0
	WallEyes screen0 left
	WallEyes screen1 right

Head Mounted Displays

The normal CAVE projections are for screens which are fixed in space. The "left_eye" and "right_eye" walls use projections which are coupled to the tracked user's head position. The exact projection for each of these walls can be defined using the "ProjectionCorners" option; the projection corners in this case are given relative to the head position (the point midway between the eyes).

By default, the left_eye wall only renders the left eye view, and the right_eye wall only renders the right view (this can be changed with the "WallEyes" option).

A sample configuration for an HMD is:

	Walls left_eye right_eye
	WallDisplay left_eye :0
	WallDisplay right_eye :1
	ProjectionCorners left_eye  -1 -1 -2   -1 1 -2   1 -1 -2  inches
	ProjectionCorners right_eye -1 -1 -2   -1 1 -2   1 -1 -2  inches

Custom Wand

The 'custom' wand is selected by the configuration "Wand custom". The standard PC-based wand works by pretending to be a dial/button box on the Onyx serial port; it reports its data as DIAL0, DIAL1, BUT110, BUT111, and BUT112 states. The custom wand is an extension of that approach. Using it, the library can read any arbitrary set of GL devices for the wand buttons and valuators.

The following configuration was created to use the PowerGlove as a controller in a manner similar to the standard PC wand:

	Wand custom
	WandValuators dial5 -1023 1023 dial4 -1023 1023 dial3 -1023 1023 dial2 -1023 1023
The PC program actually only reported values in the range [ 0 , 1023 ] for the glove fingers; by giving "-1023 1023" as the valuator ranges, the actual data was mapped into the range [ 0.0 , 1.0 ], rather than [ -1.0, 1.0 ].

A custom wand can also be used to read keys from the keyboard in place of wand buttons, or as buttons in addition to those on the wand. This configuration will tell the CAVE library to read the standard PC wand devices, plus the 'A' and 'S' keys as the fourth and fifth buttons:

	Wand custom
	WandButtons BUT110 BUT111 BUT112 AKEY SKEY
	WandValuators DIAL0 0 255 DIAL1 0 255

The custom wand has also been used to set up a stand-alone simulator demo, where the users were only interested in navigating through a virtual world. The navigation was done using the joystick and buttons; the following configuration ran the simulator full screen with no tracking, and just used the mouse position on the screen for joystick control:

	Simulator y
	WallDisplay simulator -1 1280x1024+0+0
	TrackerType none
	Wand custom
	WandValuators MOUSEX 0 1279 MOUSEY 0 1023

Real-Time Video Recording

Video of a CAVE experience can be recorded in real-time by using one of the Onyx pipes for a simulator view, which is then sent directly to the video recorder. The simulator view (or one of the HMD views) will give a normal perspective rendering of the scene, which is better for recording than the off-axis perspective of the CAVE or ImmersaDesk projections. The window for the simulator should be configured to the correct size for the video output. If the pipe being used for video is in NTSC mode, the other pipes being used for the CAVE can still be in stereo mode - the right stereo buffer will not be seen at all on the video pipe.

On a three-pipe CAVE Onyx, this configuration will run the front and floor CAVE walls, and use the left wall's pipe for the video:

	Walls front floor simulator
	WallDisplay front :0
	WallDisplay floor :2
	WallDisplay simulator :1 646x486+0+0
When running a four-wall CAVE application, the fourth wall could be used for the video, or if there are more than four pipes on the two Onyxes, the full CAVE could be run while one of the additional pipes is used for video. Similarly, a second pipe on an ImmersaDesk Onyx would be needed to record video of an IDesk application.

Additional Tracked Sensors

The library supports up to 8 tracked sensors. The built-in Flock of Birds tracking code can read more than two sensors by using the "BirdsSensors" configuration. e.g.:
	BirdsSensors 2 3 4 5
The tracking daemon interface ("TrackerType daemon") can also be used to track more sensors by extending the daemon program, without requiring applications to be recompiled.

In simulator mode, the "SimulatorNumWands" option specifies how many different tracked wands to simulate. This allows one to test applications that will use more sensors.

Other Options

The environment variable CAVEDEBUGCONFIG can be used to control the printing of CAVE configuration information by CAVEConfigure(). 'setenv CAVEDEBUGCONFIG OFF' to disable the configuration printing.

The "SimulatorJoystickControl" option defines which key must be pressed to operate the joystick in simulator mode. The default is the spacebar, which can be annoying when the mouse moves into another window while it's pressed.

	SimulatorJoystickControl CAPSLOCKKEY
will make the caps-lock key be used in place of the spacebar.

Last modified 22 June 1996.
Dave Pape,