在 MRTK2 中開始使用眼球追蹤

此頁面涵蓋如何設定 Unity MRTK 場景,以在應用程式中使用眼球追蹤。 下列檔假設您開始使用全新的場景。 或者,您可以查看我們已設定 的 MRTK 眼球追蹤範例 ,其中包含許多您可以直接建置的絕佳範例。

眼球追蹤需求檢查清單

若要讓眼球追蹤正常運作,必須符合下列需求。 如果您不熟悉 HoloLens 2 的眼球追蹤,以及如何在 MRTK 中設定眼球追蹤,請別擔心! 我們將在下列各節中進一步說明如何進一步處理它們。

  1. 眼球注視數據提供者」 必須新增至輸入系統。 此數據提供者會從平臺提供眼球追蹤數據。
  2. 必須在應用程式指令清單中啟用 『GazeInput』 功能。 這項功能可以在 Unity 2019 中設定,但在 Unity 2018 和更早版本中,此功能僅適用於 Visual Studio 和透過 MRTK 建置工具
  3. HoloLens 必須 針對目前用戶進行眼部校正。 查看我們用於偵測使用者是否經過眼睛校正的樣本

GazeInput 功能的附註

MRTK 提供的建置工具 (Mixed Reality 工具組 - 公用程式 ->> 建置視窗) 可以自動為您啟用 GazeInput 功能。 若要執行此步驟,您必須確定 [Appx 組建選項] 索引標籤上已核取 [注視輸入功能] :

MRTK 建置工具

此工具會在 Unity 建置完成後找到 AppX 指令清單,並手動新增 GazeInput 功能。 在 Unity 2019 之前,使用 Unity 的內建建視窗 (檔案 -> 組建設定) 時,此工具不會作用中。

在 Unity 2019 之前,使用 Unity 的建置視窗時,必須在 Unity 建置之後手動新增此功能,如下所示:

  1. 開啟已編譯的 Visual Studio 專案,然後在您的方案中開啟 'Package.appxmanifest'
  2. 請務必勾選 [功能] 底下的 [GazeInput] 複選框。 如果您沒有看到 『GazeInput』 功能,請檢查您的系統是否符合 使用 MRTK (的必要條件,特別是 Windows SDK 版本) 。

注意: 如果您建置至新的組建資料夾,您只需要執行此動作。 如果您已經建置 Unity 專案並設定 appxmanifest,且現在再次以相同的資料夾為目標,則不需要重新套用變更。

逐步設定眼球追蹤

設定場景

單擊功能表欄中的 [Mixed Reality 工具組 -> 設定...] 來設定MixedRealityToolkit

MRTK 設定

設定眼球追蹤所需的 MRTK 設定檔

設定 MRTK 場景之後,系統會要求您選擇 MRTK 的設定檔。 您可以選取 DefaultMixedRealityToolkitConfigurationProfile ,然後選取 [複製 & 自定義] 選項。

MRTK 設定檔

建立「眼球注視數據提供者」

  • 按下 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'

MRTK 資料提供者

啟用[使用眼球追蹤數據]

  • 流覽至您的 MRTK 組態設定檔 ->'Input' ->'Pointers'
    • 複製 'DefaultMixedRealityInputPointerProfile' 來變更它。
  • 在設定中尋找 [使用眼球追蹤數據], 並加以啟用。
  • 您現在可能會看到 [設定 GazeInput 功能 ] 按鈕,應該按下它來啟用 UWP 功能。

MRTK 使用眼球追蹤數據

在 Unity 編輯器中模擬眼球追蹤

您可以在 Unity 編輯器中模擬眼球追蹤輸入,以確保在將應用程式部署至您的 HoloLens 2 之前,已正確觸發事件。 使用相機的位置作為眼球注視原點,以及相機的向前向量作為眼球注視方向來模擬眼球注視訊號。 雖然這很適合進行初始測試,但請注意,這不是快速眼球移動的良好模擬。 因此,最好確保對 HoloLens 2 上以眼部為基礎的互動進行頻繁的測試。

  1. 開啟模擬眼球追蹤

    • 按下 MRTK 組態設定檔中的 [輸入] 索引標籤。
    • 從該處流覽至 [輸入數據提供者] ->'Input Simulation Service'
    • 複製 'DefaultMixedRealityInputSimulationProfile' 以變更它。
    • 選取適當的 [預設眼部注視模擬模式] 設定。

    MRTK 眼睛模擬

  2. 停用默認頭部註視游標:一般而言,建議您避免顯示眼睛注視游標,或者,如果絕對必要,請 讓它非常 細微。 建議您預設隱藏附加至 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 眼球追蹤教學課程和範例 ,示範如何使用眼球追蹤輸入,並提供可在專案中重複使用的腳本。


回到 「MixedRealityToolkit 中的眼球追蹤」