Skip to content

Architecture

André Zenner edited this page May 27, 2021 · 5 revisions

The HaRT can be divided into three main components:

ComponentOverview

  1. Hand Redirection Component - includes the implementation of different Hand Redirection algorithms as well as the required classes, data structures, and Hand Redirection management logic.

  2. Movement Component - integrates common VR SDKs and implements a script to use mouse and keyboard to move the real hand when no VR system is available.

  3. Analysis Component - contains various visualization features and logging functionality.

Hand Redirection Component

The Hand Redirection Component contains all the main functionalities and logic that is required to deploy or test hand redirection. This mainly includes the Redirection Manager class, which controls all processes. The Redirection Object class represents a virtual object that can be interacted with and a Redirection Technique holds the logic for a specific hand redirection algorithm. A detailed sequence diagram that describes the flow of redirection can be found below.

Redirection Manager

The Redirection Manager is the heart of the toolkit. Using the Unity Inspector interface, central parameters and settings can be applied (e.g., defining which objects in the scene belong to the real, and which to the virtual world).

Each redirection gets started and terminated by the Redirection Manager as well. Also, a default redirection technique (which is used if no specific redirection technique is set for a specific virtual object) can be set here. To trigger custom application code in response to the redirection, custom event callbacks can be registered that will be triggered, for example on the start/end of a redirection, as well as when the virtual hand reaches the virtual target.

Redirection Object

Each mapping of a virtual to a real object is represented by a Redirection Object script. This script gets attached to the GameObject representing the virtual object of the redirection. The script holds a set of references to Virtual-To-Real Connection objects in the scene, each representing an individual mapping of a physical location to a virtual location.

Redirection Technique

The Hand Redirection Techniques are implemented as individual scripts. For more information on the internal inheritance structure, please visit the corresponding Wiki Page about Redirection Techniques.

The Flow of a Redirection

Architecture

Movement Component

The Movement Component handles the user's motion input. The toolkit is designed to work with the widely-used SteamVR platform, supporting HTC Vive and Oculus Rift. Additionally, the user's hands can be tracked with Leap Motion.

The toolkit can also simulate user movements by using only a mouse and keyboard as an input device. This simulation can be practical for quick testing or while creating novel Hand Redirection concepts. The manual movement input overview can be found below.

Movement

Analysis Component

The Analysis Component implements additional functionality that aims to lower the barrier to understanding, evaluating, and debugging hand redirection techniques and scenes. The toolkit's logging functionality is described in the Logging section of the wiki and a detailed overview of all Visualization Features can also be found in the wiki.