Select Hand Engine¶
Starting from v0.9.4, Vive Hand Tracking SDK added experimental support for multiple backend engines for hand detection. By default, 3 implementations are provided in the SDK:
VHTEngine
is the original SDK implementation, using binaries in the SDK. This is supported on all devices listed in Supported Hardware section, except Vive Focus 3.WVREngine
is the engine that calls WaveVR Hand API.PIEEngine
is a simulation engine that can be used in Unreal Editor without real HMD. This allows developer to simulate hand skeleton and gestures using Unreal UMG panel.
See later sections for differences between engines.
Change Engine List¶
In Project Settigs -> Plugins -> ViveHandTracking
tab, you can set a list of candidate engines, all engines are checked from top to bottom.
The first engine, that supports current platform and starts successfully, is used for detection.
After made changes to the list, you need to press Set as Defaults
button to save the config.
Make sure to select Yes
if prompted to make the configuration file writable.
Note
When SteamVR has error, PIEEngine
may still be selected even if you list VHTEngine
before PIEEngine
and play in VRPreview
mode.
If you want to enable VHTEngine
, please make sure SteamVR is working well.
If you do want PIEEngine
, just play in Selected Viewport
or New Editor Window
.
WaveVR Engine¶
WVREngine
calls WaveVR Hand API (new in WaveVR 3.2.0) to get raw hand results.
This provides easier integration for cross-platform VR development, and has little effort for existing users of Vive Hand Tracking API.
Developers can also benifit from utility scripts provided in Vive Hand Tracking SDK while using native hand API from WaveVR SDK.
Hand tracking feature in WaveVR are implemented by device vendor, and not all WaveVR devices support this feature. HTC Vive Focus/Focus Plus/Focus 3 supports this feature. Devices from other vendors may also support WaveVR Hand API.
Note
WaveVR Hand API has breaking changes in WaveVR 4.0. So WaveVR SDK and device ROM must be same version (both 3.2.0 or both 4.x) to use WaveVR Hand API. See WaveVR Compatibility for details.
WaveVR Engine vs Vive Hand Tracking Engine¶
Tip
Order of VHTEngine
and WVREngine
only matters on Vive Focus/Focus Plus.
On other WaveVR devices with WaveVRHandEngine
support (e.g. HTC Vive Focus 3), ViveHandTrackingEngine
is not supported.
Comparison | WaveVR Engine | Vive Hand Tracking Engine |
---|---|---|
Architecture | Always arm64 | Same as VR app |
Performance | Base on ROM version | Base on SDK version |
Pre-defined gesture classification | All gestures but Victory | All gestures |
Benefit of listing VHTEngine
before WVREngine
:
- Get consistent hand tracking performance for all supported ROM versions.
- You can update SDK to get performance improvement.
- Get new features early.
Benefit of listing WVREngine
before VHTEngine
:
- Enjoy smaller latency if your apk does not support arm64 architecture.
- Hand Tracking performance gets improved by ROM update while apk is not changed.
Using Editor Engine¶
Tip
It’s recommended to always put PIEEngine
as last engine, since simulation cannot represent actual performance with real devices.
When play in editor ( except VR Preview ), PIEEngine would be enabled, and then an User Widget called BP_HandSimulatorWidget
would also be spawned and added to screen for modifying status of both hand.
Hand Base Position
: Change this position moves both hands together.Left/Right Hand Position
: Change position of either hand.Left/Right Hand Rotation
: Change roataion of either hand.Left/Right Hand Confidence
: Change confidence of either hand.Left/Right Hand State
: Change gesture and finger close/open state of either hand.Preset
: Change gesture to one of preset: invsible, pre-defined gestures or pinch.Thumb State
: Change thumb state to close, open or pinch.Index State
: Change index state to close, open, relax or pinch.Middle/Ring/Pinky State
: Change finger state to close, open or relax.