ActiveSensors <sensorID> <sensorID> ...
Lists the sensors that are to be considered active. This can be used to disable certain tracker sensors by telling the CAVELib which sensors are active, and hence ignore all others. The tracker device drivers will typically read data from all the sensors which a tracker may have; the library, however, will only use the data from those which are listed as active; all other sensor data structures will be filled in with the "DefaultTrackerPosition" and "DefaultTrackerOrientation". The <sensorID>'s given here are the indices in the CAVE sensor array; i.e. ID 0 is the head, ID 1 is the wand, etc. By default if "ActiveSensors" is not defined, all sensors are considered active.
AppDistribution <method>
Selects the communication method to use for distributed CAVE function calls made by the application. This can be different from the distribution method used for the library internals (selected by "Distribution"). The possible values for <method> are the same as for "Distribution", below. If "AppDistribution" is not specified, it defaults to the same value as "Distribution".
Calibration y|n
Whether or not to use calibration for the tracker positions.
CalibrationFile <filename>
Define the file that contains the tracker calibration data.
CAVEConfig <filename>
Gives the name of an additional configuration file to read. The file is read after the user's home .caverc but before the local directory's .caverc. If <filename> does not have an absolute path, the file is first searched for in the current directory, then in the user's home directory, and finally in /usr/local/CAVE/etc (or wherever $CAVE_HOME points). Only the first instance of the file to be found will be read.
CAVEHeight <height> <units>
The physical height of the CAVE. This is only used in calculating the projection data for the original CAVE's walls (front, left, right, floor, ceiling, wall). All non-CAVE devices should use the configuration variable ProjectionData.
CAVERotate <axis-X> <axis-Y> <axis-Z> <angle>
Applies a fixed rotation to the CAVE within the virtual space. The rotation is applied to the tracking data that is read, and to the projection data (the screen corners) for each wall (except for HMD-type projections). (<axis-X>,<axis-Y>,<axis-Z>) is the axis of the rotation; <angle> is the angle of rotation in degrees.
CAVERotationMatrix <m00> <m01> <m02> <m10> <m11> <m12> <m20> <m21> <m22>
Defines a CAVE rotation using a 3x3 matrix, instead of an axis and angle.
CAVEScale <scalefactor>
An amount to scale the size of the CAVE by. All tracking and projection data will be scaled by this factor, so the effect will be to produce a view that looks like the virtual world has been scaled.
CAVETranslate <xTrans> <yTrans> <zTrans>
Applies a fixed translation to the CAVE within the virtual space. The translation is applied to the tracking data that is read, and to the projection data (the screen corners) for each wall (except for HMD-type projections).
CAVEWidth <width> <units>
The width of the physical CAVE. This is assumed to be the depth as well. This is only used in calculating the projection for the original CAVE walls (front, left, right, floor, ceiling, wall). All non-CAVE devices should use the configuration variable ProjectionData.
ColorMask <wall-name> <eye(s)> <colors>
Specifies which color channels are to be used when drawing a given view. <wall-name> and <eye(s)> specify the view to for this mask applies; <wall-name> can be any of the possible walls; <eye(s)> can be "left", "right", "both"', or "*" (an alias for 'both'). <colors> is a string consisting of one or more of the letters "R", "G", and "B", indicating which color channels to use. i.e. "R" indicates just the red channel, "G" indicates just the green channel, "RB" indicates both the red and blue channels, etc. The default ColorMask for all views is "RGB".
Note: If the left and right eye views overlap within the same buffer (i.e. StereoBuffer is 'n' and they do not have disjoint viewports), the "ColorMask" operation will not work properly if an IrisGL application calls czclear() as it ignores the color writemask. To avoid this, you must clear the color buffer and depth buffer separately. This problem also occurs in OpenGL on Reality Engines, when calling glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT).
ControllerDaemonKey <key>
Specifies the key number for the shared memory segment that is being written to by the controller daemon process.
ControllerType <controller-type>
The type of controller being used <controller-type> should be one of "daemon", "simulator", or "none". This determines what if anythins supplise the controller data such as buttons/joystick. The "daemon" option is for use with an independent daemon program (such as trackd), which communicates with the library through standard SystemV shared memory (see the ControllerDaemonKey configuration). The "simulator" option will use the mouse and spacebar to simulate the PC wand's buttons and joystick. "none" disallows any controller data from being used. Any time a controller daemon is being used, such as the ones shipped with the trackd package, "ControllerType" should be of type "daemon".
CPULock y|n
Whether to "lock" the CPUs or not. If this is "y", each CAVELib process will be forced to run on a different, isolated CPU. The isolation will prevent other processes on the system from using these CPUs. CPU 0 will not be isolated; if there are not enough processors for all the CAVE processes, the remainders will all share CPU 0. CAVEExit() will un-isolate the CPUs. This requires the programs mplock and mpunlock(in the CAVE/bin/ directory) to be compiled for the particular platform. Because of potential security issues VRCO does not ship compiled versions of these applications.
Note: If the CAVELib program crashes while using this option, CAVE/bin/mpunlock should be ran manually to un-isolate the processors.
DefaultTrackerOrientation <elevation> <azimuth> <roll>
The default values to be used for a tracker's orientation. These values are used when no tracker is selected, or for sensors which are not being tracked.
DefaultTrackerPosition <x> <y> <z>
The default values to be used for a tracker's position. These values are used when no tracker is selected, or for sensors which are not being tracked.
DisplayMode <mode>
Determines whether the display will be stereoscopic or monoscopic. The <mode> can be either "mono", or "stereo". "stereo" simply informs the application to do two eye renderings. Weather it's active stereo, passive stereo or anaglyphic stereo, is further defined with other options. In "mono" mode only the left eye is rendered.
Distribution <method>
Selects the communication method to use for a cluster CAVELib configuration. The distribution methods available are "none" and "tcp". The default is "none".
DistribID <id>
The ID number for a node in a clustered CAVELib configuration. This should be in the range 0 to N-1, where N is the number of cluster nodes. The node with ID 0 is the master; the application must be started on this node before any of the slave nodes.
DistribNodes <number>
The number of nodes that the distributed CAVE is composed of.
DistribTCPMaster <hostname>
The network host name of the master node when using a cluster configuration.
DistribTCPPort <port-number>
The port number to use for TCP/IP distribution communications. <port-number> should be greater than 1024, and different from any standard service port numbers (see /etc/services).
Exec <command>
Executes a shell command. <command> is passed to the shell via a system() call. The command is executed as soon as it is encountered during the parsing of the configuration files. This is available on UNIX systems only.
GangSwap y|n
If this option is "y", the Reality Engine's hardware swap ready lines will be used to synchronize the multiple displays in a distributed CAVE. This option only works with IrisGL.
HideCursor y|n
Whether or not to blank the cursor when in the CAVE windows.
InterocularDistance <distance> <units>
The distance between the user's eyes. 2.75 inches is the default value.
Network <method>
What style of networking to use. The Network method can be "udp", or "none". If networking is enabled (i.e. <method> is not "none"), a separate process will be started by CAVEInit() to broadcast and receive tracking and application data. When used, ordinary non-multicast UDP/IP transfers the data. Networking packets are sent to the host specified by "NetworkUDPHost", which can be either another CAVE, or a server which re-distributes the packets to other CAVELib applications.
NetworkAddress <mcast-ip-address>
The numeric IP address of the multicast group which will be used for broadcasting CAVE data, when the networking method is "mcast". All CAVE applications running on the local multicast network using this address will share data; different applications on the same network should use different addresses to keep their data separate.
NetworkAppPort <port-number>
The port number to use for broadcasting application data (for the functions CAVENetSend() and CAVENetReceive()). <port-number> should be greater than 1024, and different from any standard service port numbers (see /etc/services). If "NetworkAppPort" is not specified, it defaults to <port-number>+1.
NetworkCPUHog y|n
Whether or not to the networking process should run as fast as possible. Default value is "n", which causes the process to sleep briefly (10 milliseconds) whenever no new data is being sent or received, to limit its CPU use. If set to "y", the process will constantly check for new data to send or receive without pausing.
NetworkMaxUsers <num-users>
The maximum number of users to expect to receive data from. This defines the size of the CAVEUser array. The default value is 32.
NetworkPort <port-number>
The port number to use for broadcasting tracking data. <port-number> should be greater than 1024, and different from any standard service port numbers (see /etc/services).
NetworkTTL <ttl>
The 'time-to-live' for multicast networking packets. This can be used to control how far packets will spread through gateways and multicast tunnels (see mrouted documentation for details).
NetworkUDPHost <hostname>
This specifies the name of the remote host to communicate with when the UDP networking method is being used.
NetworkUpdateInterval <interval>
Controls how frequently the networking process will broadcast tracking packets. <interval> is the number of seconds between broadcasts (ie a value of .05 will broadcast new data 20 times a second). If <interval> is negative, the local tracking data will never be broadcast. This provides a 'stealth' mode where the local CAVELib application sees all other CAVELib applications, but it is not visible to them.
Origin <left-distance> <floor-distance> <front-distance> <units>
This specifies the origin of the CAVE's, or other canonical VR system's, coordinate system. This is specified as the distance from three walls to the origin. For the 10' cubic CAVE, these values are "5 0 5 feet". This is only used in calculating the projection for the original CAVE walls (front, left, right, floor, ceiling, back). The "ProjectionData" configuration variable should be used for all non-canonical VR devices.
ProjectionData <wall-name> <eye(s)> <type> <lower-left x y z> <upper-left x y z> <lower-right x y z> <units>
Defines the type of projection and the corners of the projection plane for a given wall/eye view. This is used only by the general-purpose "screen[0-32]" walls. <wall-name> is the name of the wall that is being defined (screen0, screen1, etc.). <eye(s)> indicates which eye-views this data is for; the possible values are "left", "right", "both", or "*" (an alias for 'both'). <type> defines the type of display being used - either "wall" or "hmd". A 'wall' display is one that is fixed in space, such as a CAVE or ImmersaDesk screen; an "hmd" display is a one that is coupled to the tracked user's head.
The remainder of the data defines the projection plane by specifying the locations of the lower left, upper left, and lower right corners. For a "wall" display, the corner positions are given in the CAVELib coordinates. For an "hmd" display, the three points specify the projection plane in eye-space coordinates; eye-space coordinates are defined as having the eye at the origin, with the axes aligned with the user's head - the Z axis points directly back, the Y axis points up, the X axis points right. This is used to compute the perspective projection for <wall-name>, and so must be given if one of the "screen" walls is active.
Putenv <string>
Performs a putenv(string) when read, allowing environment variables to be set from the configuration. e.g. "Putenv SOUNDSERVER=cavesound".
Scramnet y|n
Indicates whether Scramnet memory is to be used. If this flag is "n", Scramnet is simulated using normal Unix shared memory (see also the "SimScramKey" option), allowing programs to run without requiring an actual Scramnet card. Scramnet memory (real or simulated) is used by CAVEScramnetMalloc(), "Distribution scramnet", and the Scramnet tracker and wand.
ScramnetDevices <memoryDevice> <registerDevice>
The file names of the VME devices which correspond to Scramnet memory and Scramnet control registers.
ScramnetMemBase <baseAddress>
The base address of Scramnet memory, for mmap()ing the Scramnet device. This value can be found in the Scramnet software's configuration file (cfg/scrcfg.dat).
ScramnetMemSize <size>
The size of Scramnet memory in bytes. This value can be found in the Scramnet software's configuration file (cfg/scrcfg.dat).
ScramnetPrefix <prefix-num>
A 16-bit prefix added to the IDs of all Scramnet memory segments allocated by the CAVElib. This allows unrelated applications (such as multiple CAVE systems) to share a single Scramnet network, by using different prefixes.
ScramnetRegBase <baseAddress>
The base address for mmap()ing the Scramnet control registers. This value can be found in the Scramnet software's configuration file (cfg/scrcfg.dat).
ScramnetRegSize <size>
The size of the Scramnet control registers' area of memory. This value can be found in the Scramnet software's configuration file (cfg/scrcfg.dat).
SerialTracking y|n
Indicates whether tracking should be done serially or in parallel. If SerialTracking is enabled, one of the rendering processes will read the tracker and wand devices; if it is disabled (the default), a separate process is used to read the devices. In general, serial tracking should only be used with the simulator tracker, where a separate process can put too much of a load on the X server and slow up the rest of an application, or with the daemon or Scramnet trackers, which do not require much CPU processing. Note: when serial tracking is true, and tracking type is simulator, the CAVELib grabs the X-events of the mouse from pipe :0, in multi-keyboard systems this can cause erroneous data values if the managed areas of the pipes for each keyboard are different.
SimScramKey <key>
The key number for the shared memory segment created when Scramnet is simulated (by "Scramnet n"). If <key> is 0, private shared memory is used. If it is non-zero, separate programs can connect to the simulated Scramnet; this can be used to test distributed CAVE programs on a single machine.
Simulator y
Shorthand option for selecting full simulator mode. Using the configuration "Simulator y" is equivalent to specifying the options "Walls Simulator", "WallDisplay simulator -1 window", "Tracking y", "TrackerType simulator", "ControllerType simulator", "WandSensorOffset 0 0 0", "WandSensorRotation 1 0 0 0", "HeadSensorOffset 0 0 0", "HeadSensorRotation 1 0 0 0", "TransmitterOffset 0 0 0", "TransmitterRotation 1 0 0 0", "UseCalibration n", "SerialTracking y", "Distribution none", and "AppDistribution none". Note: Saying "simulator n" will merely set the flag CAVEConfig->Simulator to 0; it will not undo any other effects of a previous setting of "simulator y" in a configuration file.
SimulatorJoystickControl <device>
Specifies the key to press to activate the joystick control when using the simulator wand. <device> is the name of a device as given in <gl/device.h> (e.g. "CAPSLOCKKEY"). The default is the spacebar.
SimulatorNumWands <num>
The number of wand sensors to simulate, when using simulator tracking. The default is 1.
SimulatorView <width> <height> <distance> [<units>]
The viewing parameters which define the projection frustum for the simulator display. <width> and <height> are the size of the screen; <distance> is the distance of the viewer's head from the screen.
StereoBuffer y|n
Indicates whether or not to use quad-buffered stereo. If this flag is "y", the CAVE windows will be opened with quad-stereo buffering enabled (if available, check your hardware vendor). All left eye views will be drawn in the left buffers, and right eye views in the right buffers. If this flag is "n", both left and right eye views will be drawn in the same buffer.
TrackerDaemonKey <key>
Specifies the key number for the shared memory segment that is being used by the tracker daemon process.
TrackerType <name>
Which type of tracking hardware is being used. <name> should be one of "daemon", "simulator", or "none". "daemon" selects the tracker daemon method, where tracking is done by a completely independent program, trackd, communicating with the library through standard SystemV shared memory (see the TrackerDaemonKey configuration). "simulator" selects a simulated tracking system that uses keyboard and mouse controls. Since both the tracker positions and the wand controls are handled by the tracker process, "TrackerType none" can be used to disallow checking of any tracker data. Note: the spaceball tracker is not available in the OpenGL version of the library.
Tracking y|n
Whether or not to run the tracker process. If tracking is disabled, the head and wand are assigned to fixed default positions (set by "DefaultTrackerPosition" and "DefaultTrackerOrientation"), and all the buttons and joystick values are set to 0.
Units <units>
What units to use for the CAVE coordinates. <units> should be "feet", "meters", "inches", or "centimeters". Tracking data will be reported in the given units, and the graphics projections will be in those units. "feet" is the default.
VerboseConfig y|n
Toggles verbose configuration debugging on or off. When in verbose mode, each configuration option is printed to stderr as it is read.
Viewport <wall-name> <eye(s)> <min-x> <max-x> <min-y> <max-y>
Defines the viewport within a wall's window to be used for an eye's view. The geometry of a wall's window is specified by "WallDisplay"; the Viewport option allows different sub-sections of the full window to be used for the different eye's views. <wall-name> is the name of the wall that the viewport is for (front, screen0, etc.). <eye(s)> indicates which eye-views this viewport is for; the possible values are "left", "right", "both", or "*" (an alias for "both"). [<min-x>,<max-x>] and [<min-y>,<max-y>] describe the range of the viewport in X and Y; their values should be between 0 and size-1 inclusive, where size is the X or Y size of the window. A viewport range of "-1 -1 -1 -1" will tell the library to use the full window; this is the default value.
NB: The Viewport option does not apply to displays with "window" geometry (see WallDisplay).
ViewportMask <wall-name> <eye(s)> <filename>
Defines a mask file to be used for blacking-out portions of the display. <wall-name> and <eye(s)> specify the view to which this mask should be applied; <wall-name> can be any of the possible walls; <eye(s)> can be "left", "right", "both", or "*" (an alias for "both"). <filename> is the name of a separate file which contains the mask information. A mask file is a text file which contains a list of polygons; the polygons should cover the area of the display which is to be blacked out. The first line of the mask file should give the number of polygons. The polygons are then listed, one per line. A polygon list consists of the number of vertices, followed by a list of vertex positions, where each position is a pair of comma-separated coordinates. The coordinate system for the vertices ranges from (0,0) (lower left corner of the viewport) to (1,1) (upper right corner of the viewport). For example, a mask file to black-out the lower right and upper left corners of the display would look like:
2
3 0,1 0.5,1 0,0.5
3 1,0 1,0.5 0.5,0
WallDisplay <wall-name> <pipe#> <optional "window"> [<window-geometry>]
Describes where a given wall's window will be displayed on the workstation. <wall-name> can be one of "front", "left", "right", "floor", "back", "ceiling", "screen0", "screen1", ..., "screen31", "simulator", "simulator1", or "simulator2".
<pipe#> is the graphics pipe displaying the specified wall. Pipe number 0 corresponds to display :0.0, number 1 to :0.1, etc. If <pipe#> is -1, the wall will inherit your shell's DISPLAY variable, rather than redefining it. Also, an Xdisplay (e.g. "breeze:0.0") can be specified in place of a pipe number; this can be used to display the wall on a remote machine in place of the local hardware. On a Windows platform 0 and -1 are the only safe values to use for the <pipe#>.
<optional "window"> will force the display to appear in a bordered window. If it is not specified, the display will appear borderless by default.
To display in a bordered window,
WallDisplay screen0 :0.0 window 640x512+0+0
To display borderless,
WallDisplay screen0 :0.0 1280x1024+0+0
<window-geometry> defines the area on the display for the window; it is given in the format "XDIMxYDIM+XOFFSET+YOFFSET" (e.g. 512x512+300+100). If the string "window" is given instead of a size and offsets, the wall will be displayed in a normal, bordered window that can be moved and resized. If no geometry is given, it will default to the fully managed area of the screen.
WallExitCommand <wall> <command>
Specifies a shell script or program which is to be run before the given wall exits (when CAVEExit() or CAVEHalt() is called). The command will be executed by the wall's display process, after the window has been closed.
WallEyes <wall-name> both|left|right
Indicates for which eyes a view should be rendered on the given screen. The options are "both", "left", and "right". The normal default value is "both". If "DisplayMode" is mono, then any walls for which both eyes have been selected will be automatically switched to left eye only. <wall-name> should be one of the allowed wall names listed under "Walls" (below).
WallInitCommand <wall> <command>
Specifies a shell script or program that is to be run when the given wall is initialized. The command will be executed by the wall's display process, before the window is created, with the DISPLAY environment variable set to the wall's display. This can be used for automatically changing the video mode of a pipe.
Walls <wall> <wall> ...
Specifies which walls are active. <wall> can be one of "front", "left", "right", "floor", "back", "ceiling", "screen0", "screen1", ..., "screen31", "simulator", "simulator1", or "simulator2". The display information (see WallDisplay) must be provided for a wall to be used (the system configuration file should already contain that information for all walls that are physically available). The "simulator" wall selects the simulator-style display (see Section XX). The "simulator1" wall is a simulator display that is always in viewing mode 1; the "simulator2" wall is always in mode 2. The "screen#" walls are intended for desk-style or other fixed screen displays that do not correspond to one of the canonical six walls. If one is selected, the corresponding "ProjectionData" configuration data must also be given.
WandButtons <device1> <device2> ...
Defines the button devices to read for a custom wand (see "ControllerType" above). The devices should be GL device names, as defined in <gl/device.h>. <device1> will be read for CAVEBUTTON1, <device2> for CAVEBUTTON2, etc. Up to 16 buttons may be given.
WandValuators <device0> <min0> <max0> <device1> <min1> <max1> ...
Defines the valuator devices to read for a custom wand (see "Wand" above). The devices should be GL device names, as defined in <gl/device.h>. <device0> will be read for CAVEController->valuator[0] (aka CAVE_JOYSTICK_X), <device1> for CAVEController->valuator[1], etc. <min#> and <max#> define the minimum and maximum values that will be returned by the device itself; these values are then mapped to -1.0 to 1.0 when stored in CAVEController->valuator[#]. Up to 16 valuators may be given.