XR Hand Tracking Subsystem
XR Hand Tracking Subsystem
は、 OpenXRのハンドトラッキング機能によってインスタンス化されます。基盤となるデータループの取得の開始と停止を制御し、ハンドデータを公開し、ハンドトラッキング関連のイベントをThrowします。
静的 | 説明 |
---|
XRHandTrackingSubsystem GetSubsystemInManager() | Subsystem Manager内にXR Hand Tracking Subsystemのインスタンスが存在する場合、最初のインスタンスを返します。 |
非静的 | 説明 |
---|
HandTrackingStatus Status | ハンドトラッキングの状態の取得します。 (Idle , Running , Error ) |
void Start() | ハンドトラッキングのサブシステムの開始します。 |
void Stop() | ハンドトラッキングのサブシステムの停止します。 |
Hand LeftHand | 左手のデータ。 |
Hand RightHand | 右手のデータ。 |
Hand GetHand(XrHandedness handedness) | 利き手別のデータの取得します。 |
event Action<Hand> OnHandTracked | このフレームで手が追跡された場合に発生します。 |
event Action<Hand> OnHandUntracked | このフレームで手が追跡されていない場合に発生します。 |
event Action<UpdatePhase> OnHandsUpdated | 両手のデータが更新された後に発生します。UpdatePhaseはDynamic (Updateコール前)またはBeforeRender にすることができます。 |
ハンド構造
ハンドデータは、ハンドトラッキングのサブシステムとプロバイダーによって満たされる構造体です。両手のデータは、サブシステムリファレンスでLeftHand
とRightHand
を呼び出すことで取得できます。
上記のXR Hand Tracking SubsystemでLeftHand
とRightHand
を参照してください。
非静的 | 説明 |
---|
XrHandedness Handedness | 利き手(XR_HAND_LEFT 、XR_HAND_RIGHT ) |
XrSpace Space | 関節データが格納されるSpace。XR_HAND_LOCAL またはXR_HAND_WORLD (XR Originの場合)。 |
bool IsTracked | 手がトラッキングされている場合はTrue 。 |
XrHandGesture Gesture | ハンドトラッキングのバックエンドで検出されたジェスチャー。 |
float GestureRatio | 検出されたジェスチャの比率。 (0f 〜1f ) |
float FlipRatio | 手のひらの向きがHMDの位置と反対を向いているか、またはHMDの位置に向かっているか。(-1f 〜1f ) |
float Scale | 手のスケール。(0.5f 〜1.6f ) |
Pose Root | 手のルートポーズ。(XR Originの手首のセンターポーズに相当) |
Pose[] Joints | 手の関節のポーズ。 |
Pose GetHandJoint(XrHandJoint joint) | 特定の関節ポーズを返します。 |
XR Hand Tracking Manager