メインコンテンツまでスキップ
バージョン: 0.23.2

QCHT API

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にすることができます。

ハンド構造

ハンドデータは、ハンドトラッキングのサブシステムとプロバイダーによって満たされる構造体です。両手のデータは、サブシステムリファレンスでLeftHandRightHandを呼び出すことで取得できます。 上記のXR Hand Tracking SubsystemLeftHandRightHandを参照してください。

非静的説明
XrHandedness Handedness利き手(XR_HAND_LEFTXR_HAND_RIGHT)
XrSpace Space関節データが格納されるSpace。XR_HAND_LOCALまたはXR_HAND_WORLD (XR Originの場合)。
bool IsTracked手がトラッキングされている場合はTrue
XrHandGesture Gestureハンドトラッキングのバックエンドで検出されたジェスチャー。
float GestureRatio検出されたジェスチャの比率。 (0f1f)
float FlipRatio手のひらの向きがHMDの位置と反対を向いているか、またはHMDの位置に向かっているか。(-1f1f)
float Scale手のスケール。(0.5f1.6f)
Pose Root手のルートポーズ。(XR Originの手首のセンターポーズに相当)
Pose[] Joints手の関節のポーズ。
Pose GetHandJoint(XrHandJoint joint)特定の関節ポーズを返します。

XR Hand Tracking Manager

XR Hand Tracking Managerは、ハンドトラッキングの視覚化の部分を処理するコンポーネントです。ハンドトラッキングのサブシステムのイベントをListenして、手のプレハブをインスタンス化する役割を担います。

静的説明
GameObject DefaultLeftHandPrefabResourcesフォルダー内のデフォルトのLeft Handプレハブへの参照。Packages > Prefabs > Resources > QualcommHandLeft
GameObject DefaultRightHandPrefabResourcesフォルダー内のデフォルトのRight Handプレハブへの参照。Packages > Prefabs > Resources > QualcommHandRight
XRHandTrackingManager InstantiateHandTrackingManager()デフォルトのハンドプレハブを使用してHand Tracking Managerをインスタンス化します。
XRHandTrackingManager GetOrCreate(GameObject leftHandPrefab, GameObject rightHandPrefab)既存のHand Tracking Managerを取得します。存在しない場合はパラメーターで指定されたハンドプレハブを使用してHand Tracking Managerを作成します。
void Destroy(XRHandTrackingManager manager)指定されたHand Tracking Managerのインスタンスを破棄します。存在する場合は破棄するインスタンスを探します。
非静的説明
GameObject LeftHandPrefab インスタンス化される左手のプレハブのオブジェクト。
GameObject RightHandPrefabインスタンス化される右手のプレハブのオブジェクト。
void RefreshLeftHand()プレハブが変更された場合、左手のオブジェクトを再生成します。
void RefreshRightHand()プレハブが変更された場合、右手のオブジェクトを再生成します。
void ToggleLeftHand(bool visible)左手の表示と非表示を切り替えます。
void ToggleRightHand(bool visible) 右手の表示と非表示を切り替えます。
void SetLeftHandSkin(HandSkin skin)左手のスキンを設定します。(設定可能な場合)
void SetRightHandSkin(HandSkin skin)右手のスキンを設定します。(設定可能な場合)