Changes in CAVE Library Version 2.4
OpenGL & IrisGL versions
For OpenGL, #include cave_ogl.h instead of cave.h (or #define OPENGL
before including cave.h), link with -lcave_ogl -lGL -lX11 -lgl_s -lm,
and add "*OpenCAVE*clientDecoration: none" to .Xdefaults
- CAVEGetPosition() & CAVEGetOrientation() - meant to replace
CAVEGetWand, CAVEGetHead, CAVEGetWandOrientation, &
CAVEGetHeadOrientation macros. Can also be used to get eye positions.
- CAVEHeadTransform() & CAVEWandTransform() - meant to replace
Orientation macros (although the transformation produced is
slightly different - no translation is used).
- CAVENewLock(), CAVEFreeLock(), CAVESetReadLock(), CAVESetWriteLock(),
CAVEUnsetReadLock(), & CAVEUnsetWriteLock() - for mutual
exclusion of processes using shared memory.
(Currently a max of roughly 1300 locks can be allocated)
Simulator merged with CAVE library
There are three distinct, independent parts to the simulator: the
tracking (added in 2.3), the wand, and the display. These can be
selected in the configuration using the TrackerType, Wand, Wall,
and Simulator options.
Simulator wand: Simulates pc wand's joystick & buttons using
spacebar & mouse. Selected by "wand simulator" in configuration.
Simulator display: selected using "Walls simulator" configuration
(WallDisplay can of course be used to define the simulator window's
geometry). This generates a display like that of the old simulator,
although without a "wall-view" mode (mode 1 is perspective, mode 2
The SimulatorControls configuration option can be used to remap
the display controls by giving a list of 15 keys (using their GL
device names) which are to be used for the various simulator display
'Full simulator' mode: the configuration option "Simulator y" is a
convenience option which enables all the simulator features. It
is equivalent to "Walls simulator","WallDisplay simulator -1 window",
"TrackerType simulator", & "Wand simulator".
The flag CAVEConfig->Simulator will be set to 1 if this option is
selected; it will be 0 if "simulator n" is given or no "simulator"
option is given at all.
The Immersadesk is supported as a new wall named "desk", which can be
used in the Walls and WallDisplay configurations. The geometry of
the screen must be defined in the config file using the "DeskCorners"
The Logitech tracker is selected by the configuration "TrackerType logitech".
"Wand logitech" is also available (and should be used when the logitech
tracker is used) for reading the Logitech mouse's buttons.
The CAVEBUTTON4 macro was added for Logitech mouse's 4th button.
Other configuration changes
- Configuration will also read ./.caverc (if it exists) after ~/.caverc
- Added "window" option for wall geometry (eg "walldisplay simulator 0 window").
Creates a 512x512 window, with a frame, which can be resized.
(Except when DisplayMode is Stereo120, in which case the display
is always full-screen.)
- If the pipe number in a WallDisplay option is -1, that wall uses the
current DISPLAY variable, rather than redefining it.
- The second argument for a WallDisplay option can be a DISPLAY value
instead of just a pipe number (eg "WallDisplay front zbox:0.1").
- Added "arpafloor" option for Walls configuration. Creates a projection
for the floor of the ARPA Enterprise CAVE (rotated 45 degrees).
Also masks out the corners of the screen after the display
function is called.
- Added "TransmitterPosition" configuration option. Specifies transmitter
offset by position of transmitter in CAVE coordinates (older
"TransmitterOffset" options used flock-of-birds coordinates).
- Removed FrameCounter config option
- Environment variable CAVE_HOME can be used to specify a directory
other than /usr/local/CAVE which will be searched for auxiliary
files (i.e. etc/cave.config, bin/mplock, bin/mpunlock, bin/DisplayMode)
- Added "custom" wand type. Defined by "Wand custom" and "WandButtons" &
"WandValuators" configuration options. WandButtons takes a list of
GL device names to check for the wand button values, and
WandValuators takes a list of device names and minimum & maximum
values to use for the wand valuators.
- Changed semaphoring for shared function pointers (used by CAVEDisplay()
et al) so that a CAVE program can run with no display processes.
- Made tracker process do putenv("DISPLAY=:0.0") (except when using simulator
tracking) to make sure remotely started programs read correct wand
- Added DisplayMode script to /usr/local/CAVE/bin - determines a pipe's
video mode using gfxinfo. This is used (when possible) to supersede
NonCAVEDisplayMode config option.
- Removed Polhemus tracking code. It has never been tested with the
current setup, and would definitely not work correctly as is, due
to other past changes.
- CAVEExit calls usdetach to close the library's shared arena
Last modified 23 January 1995.
Dave Pape, firstname.lastname@example.org