Changes in CAVE Library Version 2.5 (installed 29 August 1995)
- Values for many constants will have changed. Recompile all code that
uses them from source, rather than just relinking.
Networking
Simple multicast networking has been added. When networking is enabled,
a separate process will be started to handle it. The CAVE's
tracking and wand data will be regularly broadcast to all other
CAVEs in its multicast group. Pointers to the data received from the other
CAVEs will be stored in the array CAVEUser.
The tracking data which is broadcast is in navigated, world coordinates,
so applications should use the CAVENav functions for their navigation
to have all the CAVEs share a common coordinate system.
The functions CAVENetSend() and CAVENetReceive() can
be used to broadcast and receive application data.
Callback functions can be defined to be called when a new CAVE joins
the group, a CAVE leaves the group, or application data is received.
Other related functions available are:
- CAVENetGetPosition()
- CAVENetGetOrientation()
- CAVENetGetVector()
- CAVENetHeadTransform()
- CAVENetWandTransform()
To use networking, a configuration such as the following should be used:
Network y
NetworkPort 5302
NetworkAppPort 5303
NetworkAddress 224.2.242.117
NetworkTTL 4
NetworkUpdateInterval .05
New/Changed Functions
- Added CAVENavLoadMatrix() and CAVENavGetMatrix() functions.
- Added _NAV options (CAVE_HEAD_NAV, CAVE_WAND_FRONT_NAV, etc.) for
CAVEGetPosition(), CAVEGetVector(), and CAVEGetOrientation() to
return values in navigated coordinates.
- Removed old navigation functions (CAVENavigationInit,
CAVESetNavigationParm, CAVENavigate, CAVECalculateNavigation).
A separate file (cave.oldnav.c) with these functions is available.
- Made CAVEDisplay, CAVEInitApplication, and CAVEFrameFunction callable
before CAVEInit. Must still be called after CAVEConfigure, though.
The callbacks will not be called until after CAVEInit, of course,
so if CAVEInitApplication is called more than once before CAVEInit,
only the last function passed to it will actually be called.
- Added CAVEAddCallback function. Can be used in place of CAVEDisplay,
CAVEInitApplication, & CAVEFrameFunction, and for defining
callbacks associated with network events.
- Added CAVEConvertToCAVEUnits() & CAVEConvertFromCAVEUnits()
functions.
- Added CAVEGetSensorVector() function.
New Tracker Configuration
- Changed TransmitterOffset configuration to be in CAVE coordinates,
rather than the specific coordinates of our Flock-of-Birds.
Removed Transmitter{Horizontal,Vertical,Front}Offset - these
can be used in config file with old values (after TransmitterOffset)
for backward compatibility.
- Added orientation configuration options for tracker transmitter
and both sensors (TransmitterRotation, HeadSensorRotation,
WandSensorRotation). Head sensor is no longer hard-coded to
our arrangement; "HeadSensorRotation 0 1 0 90" is the proper
config.
Other Configuration Changes
- Added configuration option "WallEyes" to define which eye views a given
wall will render, in order to support passive stereo using separate
pipes for each eye. Note that this means that it is no longer
guaranteed that the left eye view will be rendered in monoscopic mode.
- Added general purpose walls Screen0 ... Screen7. The geometry for these
walls should be defined using ProjectionCorners.
- Removed Immersadesk, Front_Left, & Front_Right walls. Use Screen0 -
Screen7 instead. "Desk" is aliased to "Screen7".
- Removed DeskCorners. Use ProjectionCorners instead.
- Added 120hz as option for NonCAVEDisplayMode.
- Added configuration file option "CaveConfig", for including
files in other config files. If the file name given is not
an absolute path (i.e. starts with '/') and the file is not
found in the current directory, it will be searched for in
the user's home directory and then in /usr/local/CAVE/etc
(or wherever $CAVE_HOME points).
- Added "genlock" flag to WallDisplay config option. This flag must
be included to make the library include the genlock flag when it does
a setmon for the given wall.
- Added Flock-of-Birds CRT synchronization. Enabled by "SyncBirds"
configuration.
Added Flock-of-Birds hardware filtering. Enabled by "FilterBirds"
configuration.
- Added support for more sensors on the Flock of Birds tracker.
Configured using "BirdsSensors" (and "BirdsTransmitter"). The data are
stored in CAVEptr->num_sensors and CAVEptr->sensor[].
The extra sensor data are not currently broadcast by the networking.
- Added "SimulatorJoystickControl" config option for selecting key to
use (with the mouse) to move the simulator wand's joystick.
Miscellany
- Changed OpenGL library to read wand devices and simulator tracking
via X events, rather than IrisGL calls. This means that SerialTracking
will now work in simulator mode, and that OpenGL programs must be
linked with "-lcave_ogl -lGL -lX11 -lXi -lm" (i.e. -lgl_s is replaced by -lXi).
- Added "desk wall" view to simulator mode 0.
- Removed OFF & ON from cave.h. They caused a conflict with Inventor,
and were not actually used by the library itself.
- Removed CAVEPipe variable. Fixed code that changes video modes to
hopefully work correctly with newer WallDisplay options and with TKO.
- Prefixed all messages printed by the library with "CAVE", and sent
all to stderr (except Simulator help text).
- When CPULock is on, each process will find an un-isolated processor
to use, rather than always just being assigned processors 1-4. This way
multiple CAVE/simulator programs can run without trying to lock to
the same processors.
- CAVEConfig is no longer in shared memory.
Last modified 20 July 1995.
Dave Pape,
pape@evl.uic.edu