XR 手部追蹤子系統
XR 手部追蹤子系統由 OpenXR 手部追蹤功能(néng)實例化。它負責啓動和停止底層數據獲取循環,暴露手部數據,并觸發與手部追蹤相關的事件。
靜态 | 描述 |
XRHandTrackingSubsystem GetSubsystemInManager() | 返回 Subsystem Manager 中(zhōng)的第一個 XR 手部追蹤子系統實例(如果存在)。 |
非靜态 | 描述 |
HandTrackingStatus Status | 獲取手部追蹤狀态,可(kě)能(néng)的狀态包括空閑(Idle)、運行中(zhōng)(Running)或錯誤(Error)。 |
void Start() | 啓動手部追蹤子系統。 |
void Stop() | 停止手部追蹤子系統。 |
Hand LeftHand | 獲取左手的數據。 |
Hand RightHand | 獲取右手的數據。 |
Hand GetHand(XrHandedness handedness) | 根據手部屬性獲取手部數據。 |
event Action<Hand> OnHandTracked | 如果這一幀中(zhōng)有(yǒu)手部被追蹤,會觸發此事件。 |
event Action<Hand> OnHandUntracked | 如果這一幀中(zhōng)有(yǒu)手部被取消追蹤,會觸發此事件。 |
event Action<UpdatePhase> OnHandsUpdated | 在兩隻手的數據都已更新(xīn)後觸發此事件。更新(xīn)階段可(kě)以是動态(Dynamic,更新(xīn)調用(yòng)之前)或渲染之前(BeforeRender)。 |
Hand 結構體(tǐ)
手部數據是由手部追蹤子系統及其手部追蹤提供程序填充的結構體(tǐ)。
可(kě)以通過調用(yòng)子系統引用(yòng)中(zhōng)的 LeftHand 和 RightHand 方法來獲取左右手的數據。
有(yǒu)關詳細信息,請參閱上述 XR 手部追蹤子系統中(zhōng)的 LeftHand 和 RightHand。
非靜态 | 描述 |
XrHandedness Handedness | 手部屬性,可(kě)以是 XR_HAND_LEFT(左手)或 XR_HAND_RIGHT(右手)。 |
XrSpace Space | 存儲關節數據的空間,可(kě)以是 XR_HAND_LOCAL(本地空間)或 XR_HAND_WORLD(世界空間,在 XR Origin 中(zhōng))。 |
bool IsTracked | 如果手部當前被追蹤,則為(wèi)真。 |
XrHandGesture Gesture | 手部追蹤後端檢測到的手勢。 |
float GestureRatio | 檢測到的手勢的比例,範圍從 0f 到 1f。 |
float FlipRatio | 手部翻轉比例,範圍從 -1f 到 1f,表示手掌朝向頭顯(HMD)位置的相反方向或相同方向。 |
float Scale | 手部縮放範圍,從 0.5f 到 1.6f。 |
Pose Root | 手部根部姿勢(相當于 XR Origin 中(zhōng)的手腕中(zhōng)心姿勢)。 |
Pose[] Joints | 手部關節姿勢。 |
Pose GetHandJoint(XrHandJoint joint) | 返回指定的關節姿勢。 |
XR 手部追蹤管理(lǐ)器
XR 手部追蹤管理(lǐ)器是負責處理(lǐ)手部追蹤可(kě)視化的組件。它通過監聽手部追蹤子系統事件來實例化手部預制體(tǐ)。
靜态 | 描述 |
GameObject DefaultLeftHandPrefab | 參考資源文(wén)件夾中(zhōng)的默認左手預制體(tǐ):Packages > Prefabs > Resources > QualcommHandLeft |
GameObject DefaultRightHandPrefab | 參考資源文(wén)件夾中(zhōng)的默認右手預制體(tǐ):Packages > Prefabs > Resources > QualcommHandRight |
XRHandTrackingManager InstantiateHandTrackingManager() | 使用(yòng)默認手部預制體(tǐ)實例化手部跟蹤管理(lǐ)器。 |
XRHandTrackingManager GetOrCreate(GameObject leftHandPrefab, GameObject rightHandPrefab) | 獲取現有(yǒu)的手部跟蹤管理(lǐ)器,如果不存在則創建一個,并使用(yòng)參數中(zhōng)給出的手部預制體(tǐ)。 |
void Destroy(XRHandTrackingManager manager) | 銷毀指定的手部跟蹤管理(lǐ)器實例,如果存在則嘗試找到并銷毀它。 |
非靜态 | 描述 |
GameObject LeftHandPrefab | 要實例化的左手預制體(tǐ)對象。 |
GameObject RightHandPrefab | 要實例化的右手預制體(tǐ)對象。 |
void RefreshLeftHand() | 如果預制體(tǐ)發生更改,則重新(xīn)生成左手對象。 |
void RefreshRightHand() | 如果預制體(tǐ)發生更改,則重新(xīn)生成右手對象。 |
void ToggleLeftHand(bool visible) | 切換左手的可(kě)見性。 |
void ToggleRightHand(bool visible) | 切換右手的可(kě)見性。 |
void SetLeftHandSkin(HandSkin skin) | 如果手部對象支持設置皮膚,則設置左手的皮膚。 |
void SetRightHandSkin(HandSkin skin) | 如果手部對象支持設置皮膚,則設置右手的皮膚。 |