Chapter 5. RemoteInputManager

Table of Contents

Overview
Configuring the RemoteInputManager

The RemoteInputManager was created to share device input across a cluster. Having the ability to share input data allows us to support two different possible application needs. The first being that a machine can act as a device server and allow remote applications to request device data from a locally attached device such as a tracker. The second is the case when we are clustering multiple machines and we want to have the exact same input data on each machine every frame so that all nodes will be using the same data for computation. The idea being that if each node has the same input it will create the same scene. We can then configure each node to draw a different section of the scene to be displayed.

Overview

Our goal is to design a distributed shared memory system for VR application I/O (input/output) data. As a result of distributed I/O, application development and execution can transparently move between shared memory VR systems and PC cluster VR systems. This means the same VR applications will run on both systems, without any changes needed to the application.

VR Juggler already has an input manager that handles local input data on a single computer. ClusterJuggler extends VR Juggler by using the RemoteInputManager plugin as an extension to the existing input manager. The RemoteInputManager provides a few key functions: device location transparency, eteroerogeneous clusters, support for platform specific device drivers, and an unlimited number of devices.

Device Location Transparency. Not only does the remote input manager have useful functionality, but it also intends to avoid forcing the application programmer to worry about the location of devices. Once a cluster is set up, the programmer and application can act as if each input device is connected to every cluster node(Figure 5.1, “Virtual Devices”). The remote input manager avoids putting extra burden on application developers and hides the complications of the cluster from them.

Figure 5.1. Virtual Devices

Virtual Devices

Heterogeneous Clusters. Also by distributing the input to cluster nodes across the network, we can remove the typical cluster computing constraint of having identical computers at each node. We are able to accomplish this very easily since our ClusterNetwork layer works across multiple platforms. This allows us to construct a cluster from any combination of the platforms supported by VR Juggler(Figure 5.2, “Heterogeneous Cluster”).

Figure 5.2. Heterogeneous Cluster

Heterogeneous Cluster

Support for Platform Specific Device Drivers. Although VR Juggler supports many platforms, new devices require their own drivers for each platform. This can restrict the use of new devices on VR systems because writing device drivers is time consuming. With the help of the RemoteInputManager, devices whose drivers have been integrated into VR Juggler on one platform can be utilized on other platforms as well. By connecting to another computer through the RemoteInputManager, other platforms can retrieve device data across the network until drivers for the specific platforms are finally integrated.

Unlimited Number of Devices. Also, if a large number of input devices are to be used, our design allows the devices to be spread across the cluster nodes. This prevents problems such as multiple input devices creating a large workload on a single computer, or all input hardware not being able to attach to a single PC.