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

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
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()プレハブが変更された場合、右手のオブジェクトを再生成します。
HandSkin LeftHandSkin左手のスキンを、変更または取得します。
HandSkin RightHandSkin右手のスキンを、変更または取得します。
void ToggleHand(XrHandedness handedness, bool visible)手の表示と非表示を切り替えます。
bool TrySetHandPose(XrHandedness handedness, HandData? data, HandMask? mask)手のオブジェクトにカスタムハンドポーズの適用を試みます。
bool TrySetPoking(XrHandedness handedness, Vector3? pokePoint)手のオブジェクトにpokePointの設定を試みます。
bool TrySetVff(XrHandedness handedness, bool active)手のオブジェクトの仮想的な触覚フィードバックのシステムの作動を試みます。