Hydra


By: Roger Hoang

In a virtual reality environment a user may interact with a variety of input and output devices. Examples of input devices include trackers and joysticks or more primitively buttons, valuators, and SixDOFs, while output devices include CAVE (CAVE Automatic Virtual Environment)and stereoscopic displays. Virtual reality programming requires interfaces to these devices, and rendering programs to generate output. Hydra aims to be a generic library that provides these services, in order to ease the development of virtual reality applications. This project is inspired by FreeVR.

Hydra is designed to be a cluster based virtual reality interface library. This means that among a network of multiple systems one will be designates the input manager, and the other as slave machines. The advantage of cluster based memory management as opposed to the shared memory management used by original FreeVR, lies in improved performance, and the simplicity and efficiency of data transfer between input and rendering modules. Through thread management input, processing and rendering can be performed simultaneously. Hydra is built using C++, and is intended for use in a clustered environment running Linux.

As an open source project, Hydra may be used by any aspiring virtual reality developer. Most applications built using the original FreeVR or other libraries may be adapted to work with Hydra.

Hydra currently utilizes a plit-first rendering model. In the future this may be further extended to include a split-middle model where OpenGL API call data will be broadcast between machines. Thread synchronization between the main program and the input manager and rendering program has not yet been perfected.