Using modular configuration files

One of the difficulties of managing a VR system is the rapid proliferation of configuration files. If the entire configuration is read from a single file, then there must exist separate files for every possible permutation of configurations - simulators, projection systems, projection systems with simulated input devices, or configured with monoscopic displays for photo sessions, or monoscopic displays and simulated input devices, etc. Keeping all these files up-to-date can become a full-time job.

VR Juggler sidesteps this problem with the concept of modular configuration files. Instead of listing a single configuration file on the application's command line, we list several. Each file contains configuration information relevant to a particular part of the system. For example, one could define all the displays to be used, while another could define the input devices, and a third could describe how those inputs are mapped to a user's head, glove, wand, etc. There could be several variations of each file to choose from: display configs for an HMD, simulator window, desk, monoscopic desk, etc.; input config files for several varieties of hardware, or the user's preferred simulator setup. So long as a consistent set of names are used for input devices and so on, these files could be freely mixed and matched, eliminating the need to have a separate file for every possible combination.

The VR Juggler distribution includes several examples of modular configuration files in the directory $VJ_BASE_DIR/share/Data/configFiles. The sim.*.config files can be used in various combinations to run an application with various kinds of simulator devices. For example, a basic simulator configuration with one display window and a wand would use these files:

Other files could be used to change the basic configuration. For example, to use a simulated glove instead of a wand, the user would replace sim.wand.mixin.config with sim.glove.mixin.config.