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 にすることができます。 |
ハンド構造
ハンドデータは、ハンドトラッキングのサブシステムとプロバ イダーによって満たされる構造体です。両手のデータは、サブシステムリファレンスで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 。 |
float Scale | 手のスケール。(0.5f 〜1.6f ) |
Pose Root | 手のルートポーズ。(XR Originの手首のセンターポーズに相当) |
Pose[] Joints | 手の関節のポーズ。 |
Pose GetHandJoint(XrHandJoint joint) | 特定の関節ポーズを返します。 |
XR Hand Tracking Manager
XR Hand Tracking Managerは、ハンドトラッキングの視覚化の部分を処理するコンポーネントです。ハンドトラッキングのサブシステムのイベントをListenして、手のプレハブをインスタンス化する役割を担います。
静的 | 説明 |
---|---|
GameObject DefaultLeftHandPrefab | Resourcesフォルダー内のデフォルトのLeft Handプレハブへの参照。Packages > Prefabs > Resources > QualcommHandLeft |
GameObject DefaultRightHandPrefab | Resourcesフォルダー内のデフォルトの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) | 手のオブジェクトの仮想的な触覚フィードバックのシステムの作動を試みます。 |