# Hand Tracking Specifications

# Hand Tracking Specifications in VRChat

About SteamVR Skeletal Hand Tracking

As of VRChat (Open-Beta) 2024.3.1 (opens new window) on 2024/7/25, VRChat officially supports SteamVR skeletal hand tracking.

  • This allows for finger bending actions for each joint of the hand in VRChat without needing to individually configure OSC settings for avatars.
  • Avatar Gesture (hand signs) within VRChat can also be used without OSC settings, but OSC configuration is required to reflect DivingStation's unique Avatar Gesture (hand sign) detection to the avatar.
  • To switch to Open-Beta, open Steam, go to SteamVR Library > VRChat > Gear Icon > Properties > Betas, and select Open-Beta from the tab at the top right.

# Overview

TIP

ContactGlove performs Hand Tracking by obtaining the bending and stretching of each of the five fingers' independent joints through built-in sensors in each finger.
Hand Tracking can be performed in VRChat via SteamVR in the following two ways.

  1. Index-Emulated Hand Tracking

    • Performs hand tracking compatible with Valve Index Controllers.
    • From VRChat (Open-Beta) 2024.3.1 (opens new window) on 2024/7/25, supports finger joint bending actions using SteamVR skeletal hand tracking.
    • No avatar modification is required. (Can be used with Public, Sample avatars, etc.)
  2. ContactGlove-OSC Hand Tracking

# Details

# 1. Index-Emulated Hand Tracking


This method uses ContactGlove's Hand Tracking data to perform hand tracking compatible with Index Controllers.

Features
  • Allows integrated, averaged bending and stretching of each of the five fingers rather than joint-specific tracking for both hands.
  • Unlike ContactGlove-OSC Hand Tracking, it cannot express independent bending and stretching of each finger joint. ( = Detail of Hand Tracking is lost)
  • Can be used without modifying avatars in VRChat.

# 2. ContactGlove-OSC Hand Tracking


ContactGloveOSC reflects ContactGlove's Hand Tracking data to VRChat avatars via OSC parameters.
For setting up ContactGloveOSC, please refer to this section (opens new window).

Features
  • Allows independent bending and stretching of joints for all five fingers on both hands to be reflected to the avatar.
  • DivingStation mainly sends the following as OSC parameters to VRChat:
    • Bending and stretching values for each joint (float)
    • Dedicated GestureParameter (int) / GestureWeight (float) values
  • ContactGloveOSC installation is essential for the VRChat avatar being used.
  • Uses the following within the 256-bit limit of the ExpressionParameter synchronization parameters (TotalMemory):
    • Full version: 177 bits
      • Allows bending of all joints to be moved in increments of 0.01 between 0 and 1.
    • Lite version: 107 bits
      • Expresses bending of all joints with fewer parameters than Full version.
      • Bending/stretching of the thumb, ring finger, and little finger joints is in 0/1 actions.
About GestureToggle Feature

When using ContactGlove-OSC Hand Tracking, due to VRChat specifications, the GestureToggle feature on the VRChat side does not work. Unique Avatar Gesture (hand sign) detection by DivingStation is reflected to the avatar, and the GestureToggle feature is realized through a custom implementation bind using DivingStation and OSC. For details, please refer to the setup here (opens new window).

About Finger Movement Network Synchronization
  • Due to VRChat specifications, network synchronization of ExpressionParameters other than Puppet menu is via Playable Sync, not IK.
  • As a result, the synchronization speed of avatar synchronization parameters reflected to the network is usually 1-10 updates per second.
  • Therefore, synchronization parameters for specialized animations running locally have slow synchronization speeds, leading to noticeable stuttering in network-reflected animations.
  • To prevent this, the OSCmooth (opens new window) mechanism is introduced to perform interpolation of ExpressionParameters operating on the network.