寫在前面的話
此前(用Pico 4U)接入了MRTK3,現項目落地需要部署,發現串流場景中,Pico4UE的企業串流無法正常識別手勢。(一體機方式部署使用無問題)
花了半小時解決,怕忘,故記一下解決過程。
(Pico 4 Ultra Enterprise)關于Pico4U Enterprise在使用SteamVR串流時無法識別手勢的問題
使用Pico 4U Enterprise串流SteamVR無法識別手勢問題排查與解決記錄
使用 MRTK3 搭建交互場景,需在 Pico 4 Ultra Enterprise(簡稱 Pico4U 或 Pico4UE)中使用手勢識別進行交互測試。在部署落地階段,設備以 企業串流方式連接 PC 的 SteamVR,但串流后手勢識別功能完全失效。本文檔總結了問題分析、串流版本對比與具體解決過程,以供后續開發或部署參考。
一、項目背景與問題現象
此前我們已經在 Pico 4U(普通一體機模式) 下成功完成了 MRTK3 的接入,手勢識別良好,交互穩定。然而,當我們將設備切換至企業版串流模式,并使用 SteamVR 進行遠程渲染時,發現如下異常現象:
- SteamVR 中無法識別手勢數據
- 在控制器顯示面板中 缺失“Hand”圖標
- Unity 場景內 MRTK3 無法響應手勢相關交互(如抓取、點按)
下圖展示了異常狀態下的控制器界面:
對比正常情況下的表現,應當在控制器中能看到代表左右手的識別圖標:
顯然,在串流過程中手勢數據未被識別或傳遞,導致交互中斷。接下來,我們從串流軟件版本入手,逐步排查可能原因。
二、Pico 企業串流軟件版本對比
Pico 官方目前提供兩類企業串流版本,分別為:
- 企業串流 V1.0 系列(最新版本:v1.2.9.0)
- 企業串流 V2.0 系列
兩種版本具有不同的使用方式與支持特性,在實際部署時也需根據項目特點進行合理選擇。
2.1 企業串流 V1.0
企業串流 V1.0 是較早發布的一類串流工具,穩定性強,兼容性良好,支持手勢數據傳輸(需手動開啟),并可與大多數基于 OpenXR 的系統兼容。
文檔地址:Pico Business Streaming V1
該版本的關鍵特點如下:
- 支持將 PC 端 SteamVR 內容串流至 Pico 頭戴設備
- 手勢識別功能需要在設置中手動開啟
- 推薦版本:v1.2.9.0
版本更新日志部分截圖:
2.2 企業串流 V2.0
企業串流 V2.0 是官方更新后的新架構串流方案,默認開啟對手勢支持,但在實際使用中,部分功能可能存在兼容性問題,尤其在 Unity 開發環境中串流時,容易發生插件沖突或識別異常。
文檔地址:Pico Business Streaming V2
其核心特性包括:
- 更好地適配 Steam 平臺及 OpenXR 內容
- 默認支持手勢識別(無需手動設置)
- 支持將 Windows 桌面內容串流至頭顯并進行交互操作
但需要注意,V2.0 的某些特性在高依賴 OpenXR 手勢輸入的場景下,識別穩定性不如 V1.0。
三、問題排查與解決過程
在明確手勢功能異常后,我們對串流軟件版本與設置進行了全面排查,以下為兩個版本下的解決方案:
3.1 使用 V1.0 的解決步驟
- 打開 Pico 企業串流 PC 軟件(v1.2.9.0)
- 進入 設置 → 通用
- 找到并勾選 “串流時支持手勢” 選項
- 重啟 SteamVR,重新連接頭顯
如下圖所示,必須手動啟用該選項:
完成設置后,SteamVR 內即可重新識別到手勢輸入,控制器界面恢復正常,MRTK3 內手勢交互邏輯也同步恢復。
3.2 使用 V2.0 的情況
根據官方文檔說明,V2.0 默認支持手勢輸入,理論上無需手動設置。
若是有問題以下問題,請檢查設置
- SteamVR 仍無法穩定識別手勢圖標
- 手勢輸入偶爾延遲或直接失效
- 在 Unity 中調試時,
XR Hands
模塊接收不到HandJoint
數據
V2.0 的軟件設置界面如下:
官方也提供了降級方式:
就是重新下載配套的串流APK和串流軟件
若 V2.0 無法滿足使用需求,可通過命令卸載并回退至 V1.0:
adb uninstall com.picoxr.bstreamassistant
然后重新安裝 V1.0 的 APK 與 PC 串流工具。
因此,如項目對手勢識別要求較高,建議仍優先使用 V1.2.9.0 版本串流。
四、MRTK3 與 OpenXR 手勢的兼容性要點
MRTK3 框架依賴 Unity XR 插件架構進行手勢數據讀取。若串流過程中無法傳入 OpenXR 的 XR_HAND_TRACKING_EXT
數據擴展,將導致手勢組件初始化失敗。
建議檢查以下幾個方面配置:
-
Unity 插件設置
- 勾選 OpenXR 插件 → Features → Hand Tracking
- 配置手勢輸入源為 “Both Hands”
-
MRTK3 配置
- 檢查 XR Hands 數據源是否正確加載
- 在 Scene 中添加
MRTK XR Rig
及手勢調試器
-
調試建議
- 使用 Unity 的
XR Hands Debugger
查看是否能讀取 hand joints - 結合 Pico 開發者助手查看設備端是否激活手勢識別
- 使用 OpenXR Toolkit 檢查手勢數據是否被正確傳入 SteamVR
- 使用 Unity 的
五、經驗總結與開發建議
本次問題的核心在于:PC 端串流軟件未正確傳遞或啟用手勢輸入數據,導致 Unity 中基于 OpenXR 的手勢組件無法工作。
常見誤區
- 誤以為串流默認支持所有數據通道 → 實際需手動開啟
- 未檢查 OpenXR 插件與手勢 Feature 狀態
- 誤用 V2.0 導致功能異常 → 建議在正式部署前充分測試各版本兼容性
六、結語
通過本次問題的排查與實踐,我得出結論:
- MRTK3手勢識別能在 Pico4U和Pico4UE 一體機與串流模式下穩定運行
- 串流軟件版本和配置直接影響 Unity 中手勢模塊的行為