The most recent Unity SDK can be downloaded here.
The SDK contains scripts for controlling the Maestro device, as well as three example scenes demonstrating some interactions.
This version is built to be tracking agnostic, but for the sake of simplicity the current SteamVR plugin is included. This aspect of the included content may be updated through the Unity Asset Store.
Once you have configuration files installed and the Unity Maestro SDK Unity Package imported into a Unity project, an example rig prefab “[MaestroIndexRig]” will be available under
Assets/Maestro/Prefabs. This is an example configuration set up to allow Maestro haptics while using the Valve Index’s motion and finger tracking.
The Maestro SDK encourages but does not require two layers definitions used for interactions, which by default are named “GrippedObject” and “IgnoreWhileGripped”. These names can be changed per
MaestroHand under Advanced Configuration.
Additional setup is required for the Sandbox scene, which is as follows:
A haptic sandbox with a variety of interactions, including picking up objects, pushing buttons, using a hammer, and finger painting.
By default, the user starts in a void where they are prompted to scan both hands to spawn the rest of the scene. This functionality can be disabled simply by disabling the “HandScanner” object in the main hierarchy.
Additionally, this scene requires two new input axes to be defined “Clear” and “Lock”, which clear the paint canvas and regenerates the hand scanner, respectively.
A scene demonstrating two-hand pickups in the form of a basketball shootaround.
The user is given a silo that can generate endless basketballs, and a small lever to control the distance from the hoop. Additionally, pressing on the touchpad of the Index controllers will generate a basketball directly in front of the user.
A low-visibility scene where the user must escape a room with doors at both ends. By default the first door approached breaks, forcing the player to navigate to the other door.
There are two major portions of the Maestro’s haptics:
0being no pull and
255being full force feedback.
128, referencing a haptic effect in this table. Undefined effects produce no effect.
Maestro device connectivity is controlled by either a
LeftMaestroGloveBehaviour. These scripts have a boolean that shows whether the system detects a connected device for the corresponding hand.
All major haptic functionality is controlled by four scripts:
HapticResponse. In order to have the hand able to pick up an object:
MaestroHandscript must be properly bound to the hand hierarchy, and
MaestroInteractablescript must be placed onto the desired object.
FingerTipCollider script is necessary for interactions to properly occur, however they are spawned by the
MaestroHand script and as such require no setup. The configuration for the other scripts are as follows:
Should be placed on the main hand skeleton, beneath either a
LeftMaestroGloveBehaviour. Requires an
AudioSource that will play a noise on successful pickup.
Defines the key hand locations and size.
More complex interaction variables that should only be adjusted when necessary
FingerTipColliders will attempt to teleport to their target location
Outputs various information useful for debug. Also exposes one boolean:
FingerTipColliders on contact?
Must be placed on any game object that requires haptics. The main three fields are:
This script also defines a few events that may be used to easily create complex interactions
Additionally, these other options may be used for differing behavior
Abstract class that extends the functionality of
MaestroInteractable. Automatically detected by
MaestroInteractable when placed beneath it in the hierarchy. Provides a single abstract function
GetResponse(MaestroInteractable) that is called on FixedUpdate. An example
HammerResponse is provided under
Must be placed on each fingertip and in the center of the palm. Spawned and set up automatically by
It should be noted that the DLLs used by our SDK are 64-bit only. As such, if the Unity platform settings are set to
Any CPU or
x86 execution will halt.
To address this, you may find all DLLs under
Maestro/Core/_DLLs. Set each DLL’s CPU setting to
x86_64. If you are performing builds, this will also have to be done so the DLLs are included with 64-bit builds, and excluded for 32-bit builds.
You may also have to enable
Load on startup under
Plugin load settings. The Unity editor will have to be restarted for this to take effect.
Please contact us at firstname.lastname@example.org with any questions.