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.
The following is an example configuration for three screens curved
around the origin:
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:
The following configuration was created to use the PowerGlove
as a controller in a manner similar to the standard PC wand:
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:
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:
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:
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.
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.
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.
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).
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.
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 ].
Wand custom
WandButtons BUT110 BUT111 BUT112 AKEY SKEY
WandValuators DIAL0 0 255 DIAL1 0 255
Simulator y
WallDisplay simulator -1 1280x1024+0+0
TrackerType none
Wand custom
WandButtons LEFTMOUSE MIDDLEMOUSE RIGHTMOUSE
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.
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.
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.
SimulatorJoystickControl CAPSLOCKKEY
will make the caps-lock key be used in place of the spacebar.
Last modified 22 June 1996.
Dave Pape, pape@evl.uic.edu