在 MRTK2 中開始使用眼球追蹤
此頁面涵蓋如何設定 Unity MRTK 場景,以在應用程式中使用眼球追蹤。 下列檔假設您開始使用全新的場景。 或者,您可以查看我們已設定 的 MRTK 眼球追蹤範例 ,其中包含許多您可以直接建置的絕佳範例。
眼球追蹤需求檢查清單
若要讓眼球追蹤正常運作,必須符合下列需求。 如果您不熟悉 HoloLens 2 的眼球追蹤,以及如何在 MRTK 中設定眼球追蹤,請別擔心! 我們將在下列各節中進一步說明如何進一步處理它們。
- 「 眼球注視數據提供者」 必須新增至輸入系統。 此數據提供者會從平臺提供眼球追蹤數據。
- 必須在應用程式指令清單中啟用 『GazeInput』 功能。 這項功能可以在 Unity 2019 中設定,但在 Unity 2018 和更早版本中,此功能僅適用於 Visual Studio 和透過 MRTK 建置工具。
- HoloLens 必須 針對目前用戶進行眼部校正。 查看我們用於偵測使用者是否經過眼睛校正的樣本。
GazeInput 功能的附註
MRTK 提供的建置工具 (Mixed Reality 工具組 - 公用程式 ->> 建置視窗) 可以自動為您啟用 GazeInput 功能。 若要執行此步驟,您必須確定 [Appx 組建選項] 索引標籤上已核取 [注視輸入功能] :
此工具會在 Unity 建置完成後找到 AppX 指令清單,並手動新增 GazeInput 功能。 在 Unity 2019 之前,使用 Unity 的內建建視窗 (檔案 -> 組建設定) 時,此工具不會作用中。
在 Unity 2019 之前,使用 Unity 的建置視窗時,必須在 Unity 建置之後手動新增此功能,如下所示:
- 開啟已編譯的 Visual Studio 專案,然後在您的方案中開啟 'Package.appxmanifest' 。
- 請務必勾選 [功能] 底下的 [GazeInput] 複選框。 如果您沒有看到 『GazeInput』 功能,請檢查您的系統是否符合 使用 MRTK (的必要條件,特別是 Windows SDK 版本) 。
注意: 如果您建置至新的組建資料夾,您只需要執行此動作。 如果您已經建置 Unity 專案並設定 appxmanifest,且現在再次以相同的資料夾為目標,則不需要重新套用變更。
逐步設定眼球追蹤
設定場景
單擊功能表欄中的 [Mixed Reality 工具組 -> 設定...] 來設定MixedRealityToolkit。
設定眼球追蹤所需的 MRTK 設定檔
設定 MRTK 場景之後,系統會要求您選擇 MRTK 的設定檔。 您可以選取 DefaultMixedRealityToolkitConfigurationProfile ,然後選取 [複製 & 自定義] 選項。
建立「眼球注視數據提供者」
- 按下 MRTK 設定檔中的 [輸入 ] 索引標籤。
- 若要編輯預設 ('DefaultMixedRealityInputSystemProfile') ,請按兩下其旁邊的 [複製] 按鈕。 [ 複製設定檔] 選單隨即出現。 按下該功能表底部的 [複製 ]。
- 按兩下新的輸入設定檔,展開 [輸入資料提供者],然後選取 [+ 新增資料提供者]。
- 新增正確的資料提供者:
- 針對舊版 Windows Mixed Reality
- 在 [類型 ] 下,選取 [Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input' ->'WindowsMixedRealityEyeGazeDataProvider'
- 針對 Windows XR 外掛程式
- 在 [類型] 下,選取 [Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality' ->'WindowsMixedRealityEyeGazeDataProvider'
- 針對OpenXR
- 在 [類型] 底下,選取 [Microsoft.MixedReality.Toolkit.XRSDK.OpenXR' ->'OpenXREyeGazeDataProvider'
- 針對舊版 Windows Mixed Reality
啟用[使用眼球追蹤數據]
- 流覽至您的 MRTK 組態設定檔 ->'Input' ->'Pointers'
- 複製 'DefaultMixedRealityInputPointerProfile' 來變更它。
- 在設定中尋找 [使用眼球追蹤數據], 並加以啟用。
- 您現在可能會看到 [設定 GazeInput 功能 ] 按鈕,應該按下它來啟用 UWP 功能。
在 Unity 編輯器中模擬眼球追蹤
您可以在 Unity 編輯器中模擬眼球追蹤輸入,以確保在將應用程式部署至您的 HoloLens 2 之前,已正確觸發事件。 使用相機的位置作為眼球注視原點,以及相機的向前向量作為眼球注視方向來模擬眼球注視訊號。 雖然這很適合進行初始測試,但請注意,這不是快速眼球移動的良好模擬。 因此,最好確保對 HoloLens 2 上以眼部為基礎的互動進行頻繁的測試。
開啟模擬眼球追蹤:
- 按下 MRTK 組態設定檔中的 [輸入] 索引標籤。
- 從該處流覽至 [輸入數據提供者] ->'Input Simulation Service'。
- 複製 'DefaultMixedRealityInputSimulationProfile' 以變更它。
- 選取適當的 [預設眼部注視模擬模式] 設定。
停用默認頭部註視游標:一般而言,建議您避免顯示眼睛注視游標,或者,如果絕對必要,請 讓它非常 細微。 建議您預設隱藏附加至 MRTK 註視指標設定檔的預設頭部注視游標。
- 流覽至您的 MRTK 組態設定檔 ->'Input' ->'Pointers'
- 複製 'DefaultMixedRealityInputPointerProfile' 來變更它。
- 在 「指標設定」頂端,您應該將不可見的數據指標預製專案指派給 「注視數據指標預製專案」。 您可以從 MRTK Foundation 選取 'EyeGazeCursor' 預製專案來執行此動作。
在注視提供者中啟用眼球型注視
在 HoloLens v1 中,頭部注視是用來作為主要指標技術。 雖然 MRTK 中的 GazeProvider 仍然可使用頭部注視,但附加至 您的相機,但您可以在輸入指標設定檔的注視設定中選取 [IsEyeTrackingEnabled] 複選框,改為使用眼睛注視。
注意
開發人員可以變更 『GazeProvider』 的 『IsEyeTrackingEnabled』 屬性,在程式碼中切換眼部注視和頭部型注視。
重要
如果不符合任何眼球追蹤需求,應用程式會自動回復為以頭部為基礎的注視。
存取眼球注視數據
現在您的場景已設定為使用眼球追蹤,讓我們看看如何在您的腳本中存取它: 透過 EyeGazeProvider 存取眼球追蹤數據 ,以及 眼睛支援的目標選取專案。
在 HoloLens 2 上測試您的 Unity 應用程式
使用眼球追蹤建置應用程式的方式應該類似於編譯其他 HoloLens 2 MRTK 應用程式的方式。 Be sure that you've enabled the 'Gaze Input' capability as described above in the section A note on the GazeInput capability.
確定已針對 HoloLens 2 設定專案
檢閱 使用 MRTK 設定 OpenXR 專案中所述的設定步驟,以確定您已正確設定專案。
要思考的重要重點:
- 在 [項目設定] 視窗中檢閱索引鍵設定。
- 確定已正確設定外掛程式提供者
- 解決 警告三角形。
- 應該設定互動配置檔
- 應該正確選取 OpenXR 功能群組
眼球校正
別忘了在 HoloLens 2 上執行眼球校正。 如果使用者未校正,眼球追蹤系統將不會傳回任何輸入。 若要進行校正,最簡單的方式是向上翻轉面板,然後再向下翻轉。 系統通知應該會顯示為新用戶歡迎您,並要求您進行眼球校正。 或者,您可以在系統設定中找到眼球校正:設定 > 系統 > 校正 > 執行眼球校正。
眼球追蹤許可權
當您第一次在 HoloLens 2 上啟動應用程式時,提示應該會快顯要求使用者使用眼球追蹤的許可權。 如果提示未顯示,這通常表示未設定 『GazeInput』 功能。
許可權提示顯示一次之後,它不會再次自動顯示。 如果您 「拒絕眼球追蹤許可權」,您可以在 [設定 -> 隱私權 - 應用程式] 中> 重設此功能。
這應該可讓您開始在 MRTK Unity 應用程式中使用眼球追蹤。 別忘了查看 我們的 MRTK 眼球追蹤教學課程和範例 ,示範如何使用眼球追蹤輸入,並提供可在專案中重複使用的腳本。