V-R-GO Library
V-R-GO graphical user interface
V-R-GO C++ code
Download & Install V-R-GO
The source code of the V-R-GO library is provided "as is", without warranty of any kind. The library is designed to be used in research laboratories by experienced practitioners in the field of VR. We cannot provide extensive user support, therefore to get access to the current development snapshot of the V-R-GO library please get in touch with the development team.
Summary

V-R-GO Redirected Walking: A user wearing a head-mounted display is guided on a
circular path in the real world while he perceives a virtual straightforward motion.
Locomotion Middleware
Traditionally, locomotion and interaction techniques for VR applications are implemented in a proprietary way for specific target platforms. Such implementations usually including code that is dependent on the specific hardware in the VR laboratory at the time when the application was implemented, as well as specific versions of graphics or physics libraries. In particular, this leads to the problem that such implementations of interaction techniques in most cases cannot be reused, but have to be re-implemented for new applications. The V-R-GO library works as a middleware between the tracking hardware and rendering application. The library is thus independent from a specific application and its linked libraries and is portable to different hard- and software environments.
Different locomotion techniques can be selected in a graphical user interface. The library makes use of a flow graph which provides an intuitive user interface to specify the different processing steps that are applied to sensor data from position and/or orientation tracking systems. The sensor data can be streamed into the V-R-GO library via VRPN or direct access. After the sensor data is processed in the library, the corresponding virtual poses are updated, which can be read by VR applications for view-dependent rendering. The resulting virtual camera poses are accessible via Shared Memory or VRPN, which can be integrated into different graphics or game engines by VR engineers (e.g., Crytek's CryEngine3, Unity 3D Professional).
Example Code
In this section, we describe how V-R-GO can be integrated into current graphics engines.
Unity3D
Unity 3D Integration: To access the data, we add the vrgo.dll to Unity's plugin
folder and add a few lines to a C# script to read the camera poses.
CryEngine3
CryEngine3 Integration: To access the data, we include the vrgo.h header file,
which encapsules functions to read the camera poses with a few lines of C++ code.
The V-R-GO library is designed mainly for VR rendering environments on Windows 7. We provide support for most graphics engines and game engines with a DLL that is used to access the camera poses. For instance, V-R-GO can be accessed from Unity3D via the DLL, which just has to be copied into the plugins folder. For C++ graphics engines, such as the CryEngine3 we provide a solution via a header file, which encapsulates access to the data.
Note that the V-R-GO library acts as a middleware from tracking coordinates to virtual rendering coordinates, but does not handle actual rendering processes. Calibration and rendering still have to be implemented for the considered display hardware in the graphics engine.
V-R-GO in Labs
V-R-GO has been used and is currently used in different labs of our cooperation partners.
- Immersive Media Group (IMG), Department of Computer Science, University of Würzburg, Germany.
- Department of Computer Science and Engineering, University of Minnesota, USA.
- MxR lab, Institute for Creative Technologies (ICT), University of Southern California (USC), USA.
- Visualization and Computer Graphics (VisCG) research group, University of Münster, Germany.
- Department of Computer Science, University of Texas at San Antonio, USA.
- Human-Computer Interaction, Department of Computer Science, University of Hamburg, Germany.
Please let us know if you use V-R-GO and your team is not presented in the list.