# ハンドトラッキング仕様
# VRChatにおけるハンドトラッキング仕様
SteamVR skeletal hand trackingについて
2024/8/15の2024.3.1 build 1490 (opens new window)より、公式に SteamVR skeletal hand tracking にVRChatが対応しました。
- これにより、アバターに個別にOSCの設定を行わずとも、VRChatで手指の関節ごとに指を曲げる動作が可能になりました。
- VRChat内でのAvatar Gesture(ハンドサイン)に関してもOSCの設定をすることなくご利用いただけますが、DivingStationによる独自のAvatar Gesture(ハンドサイン)判定をアバターへ反映するにはOSCの設定が必要です。
# 概要
TIP
ContactGloveは各指ごとに内蔵されたセンサによって各5指の独立した関節の曲げ伸ばしを取得し、HandTrackingを行います。
以下2通りの方法で、SteamVR経由のVRChatにおいてHandTrackingを行うことができます。
Index-Emulated HandTracking
- Valve Index Controller互換のHandTrackingを行います。
- 2024/8/15の2024.3.1 build 1490 (opens new window)より、SteamVR skeletal hand trackingを利用した指の関節ごとの曲げ動作に対応
- アバター改変が不要です。(Public・Sampleアバター等でのご利用も可能です)
ContactGlove-OSC HandTracking
- ContactGloveのHandTrackingをOSCパラメータによりアバターへ反映します。
- ContactGloveOSCを導入する必要があります(= アバター改変が必須です) (opens new window)
# 詳細
# 1. Index-Emulate HandTracking
ContactGloveのHandTrackingデータを利用し、Index Controller互換のHandTrackingを行う方法です。
特徴
- 両手の関節ごとではない統合・平均された各5指の曲げ伸ばしを行うことができます。
ContactGlove-OSC HandTracking と異なり、指の各関節ごとの独立した曲げ伸ばしは表現できません。( = HandTrackingの詳細度は失われます)- 2024/7/25のVRChat(Open-Beta)2024.3.1 (opens new window)より、こちらのモードでのSteamVR skeletal hand trackingを利用した指の関節ごとの曲げ動作に対応いたしました。詳細についてはこちら (opens new window)をご参照ください。
- VRChat内のアバター改変を行うことなくご利用いただけます。
# 2. ContactGlove-OSC HandTracking
ContactGloveOSCにより、ContactGloveのHandTrackingデータをOSCパラメータ経由でVRChat内アバターへ反映させ、HandTrackingを行う方法です。
ContactGloveOSC のセットアップについてはこちら (opens new window)の項目をご参照ください。
特徴
- 両手の各5指ごとに独立した関節の曲げ伸ばしをアバターへ反映させることができます。
- DivingStationから主に以下のをOSCパラメータとしてVRChat側へ送ります。
- 各関節ごとの曲げ伸ばしの値(float)
- 専用GestureParameter(int)/ GestureWeight(float) 値
- ご利用になるVRChat内アバターへ、ContactGloveOSCの導入が必須です。
- アバターのExpressionParameterの同期パラメータ(TotalMemory)の利用上限256bitの内以下を利用します。
- Full verで177bit
- 全ての関節の曲げを0~1の間で0.01刻みで動かすことが出来ます。
- Lite verで107bit
- Full ver よりも少ないパラメータ数で全ての関節の曲げを表現できます。
- 親指・薬指・小指の関節の曲げ/伸ばしは0/1の動作になります。
- Full verで177bit
GestureToggle機能について
ContactGlove-OSC HandTracking 利用時、VRChat側の仕様上、VRChat側のGestureToggle機能は動作しません。 DivingStationによる独自のAvatar Gesture(ハンドサイン)判定をアバターへ反映し、DivingStationとOSCを利用した独自実装のバインドにより、GestureToggle機能を実現しています。 詳細はセットアップのこちら (opens new window)をご覧ください。
指の動きのNetWork同期について
- VRChatの仕様上、Puppet menu以外でのExpressionParameterのNetWork同期はIKではなくPlayable Syncとなります。
- このため、NetWorkへ反映させているアバターの同期パラメータの同期速度は、通常では 1~10 更新/s となります。
- よってLocalでの専用Animationを作動させる同期パラメータはそのままでは同期速度が遅く、NetWorkへ反映させているAnimationの動きに顕著なカクツキが生じます。
- これを防ぐために、アバターへOSCmooth(外部リンク) (opens new window)という仕組みを導入することで、NetWorkで動作しているExpressionParameterの補完を行っています。