Syzygy applications work best with traditional VR head- and wand-tracking, that is, a six-degree-of-freedom (6DOF) position sensor on the head and another on a handheld gamepad that has several buttons and at least one joystick. But when these are not available, you can still simulate them from mouse and keyboard.

In standalone mode, this simulator overlays the lower-right corner of the window. In cluster mode, the simulator is a separate program, inputsimulator, defined as the primary input (INPUT0) of the virtual computer.

The input simulator sends data to the application specifying the position and orientation of the head and the wand, the placement of the wand's joysticks and sliders, and the up/down state of the wand's buttons (matrices, axes, and buttons, in Syzygy jargon).

The Default Input Simulator

The input simulator's display looks forwards into a 10-foot cubical space, like a wireframe cave. A wireframe sphere in the center represents your head (initially facing forwards, although the view has been rotated in this figure, see mode 7 below).

The blue rectangle at lower right contains numbered red circles, which represent virtual buttons on the wand. To change how many buttons the wand has, set the parameter SZG_INPUTSIM/number_button_events to the desired number in the Syzygy database. The two (or three) columns of red circles correspond to the buttons on your two- or three-button mouse. To map mouseclicks to a particular row of buttons, e.g. 3 4 5, hit the spacebar; a white dot at left cycles through the rows, showing which row will be used. If you commonly use a 3-button mouse, set the Syzygy database parameter SZG_INPUTSIM/mouse_buttons to the string 0/1/2, to start with 3 rather than 2 columns. If your mouse has even more buttons, extended it to something like 0/1/2/3/4.

Below the red circles, the green dot represents the wand's joystick. The white square indicates how far the green dot can move. For example, when the dot is at the top of the square, that means the joystick is pushed all the way forwards.

The input simulator has several modes. To activate a mode, hit its corresponding number key, 0 through 9.

Alternate Input Simulators

As of 2/08, you can create your own Input Simulator interface as a shared library and load it at runtime based on the value of the Syzygy database parameter SZG_INPUTSIM/sim_type. A stupid example called arDefaultInputSimulator is contained in szg/skeleton; it behaves just like the built-in one, but it does show you which methods are available for overriding. Copy the skeleton directory tree somewhere, rename the source file, and modify skeleton/build/makefiles/Makefile.my_app appropriately. To use it, add e.g. the following in an <assign> block in your dbatch file:

  <computer> SZG_INPUTSIM sim_type arDefaultInputSimulator

...where <computer> is the computer on which the inputsimulator program will run, as specified in the SZG_INPUT#/map section of your virtual computer definition.