共用方式為


眼球追蹤 - MRTK3

概觀

眼球追蹤是由 Unity 輸入系統原生處理,不過 MRTK3 提供實用的協助程式,讓新增眼球追蹤變得容易。

根據預設, MRTK XR Rig 預製物件已經有 MRTK3 的注視控制器。 如果您未使用 MRTK XR Rig ,而且想要使用 MRTK3 的注視控制器,請將 MRTK Gaze Controller 預製專案新增至 Unity 場景。

MRTK 的注視控制器預製工具具有 Unity XR 控制器和互動器,其系結至 Unity 的眼睛和頭部注視輸入。 控制器的動作是設定的,讓眼睛注視優先于頭部注視。 如果眼睛注視已停用、未設定或未校正,控制器將會改用頭部注視姿勢。 如需如何設定 MRTK3 注視控制器動作系結的詳細資訊,請參閱包含的 MRTK 預設輸入動作 Unity 資產。

顯示 MRTK 預設輸入動作 Unity 資產內注視動作設定的影像。

重要

如果您想要在使用 OpenXR 時啟用眼球追蹤, 則必須將眼球注視互動設定檔 新增至 OpenXR 的互動設定檔群組態。 如需在 Unity 中設定 OpenXR 設定的詳細資訊,請參閱 使用 MRTK 設定新的 OpenXR 專案

此外,如果您使用通用 Windows 平臺,請務必在[專案 > 專案設定 > 發佈設定 > ] 功能中新增GazeInput功能。

模糊注視互動器

MRTK3 的注視控制器已設定為使用 FuzzyGazeInteractor ,這是一種 Unity 互動器,可實作模糊注視互動技術,其中特定圓角和距離範圍內的物件是以目標為目標,並根據使用者的注視方向與互動。 評分系統會根據其互動適用性,協助排定潛在目標的優先順序。

腳本會定義數個欄位和屬性,以控制注視互動程式的行為。 其中一些重要欄位包括:

  • coneAngle:注視會將物件視為目標的角度。
  • minGazeDistancemaxGazeDistance:注視可以鎖定物件的最小和最大距離。 distanceWeight、angleWeight、distanceToCenterWeight 和 angleToCenterWeight:指派給不同準則的加權,用來判斷物件的「注視分數」。
  • precision:用來調整模糊注視物理光線廣播精確度的值。
  • performAdditionalRaycast:旗標,指出是否執行眼球注視後的額外光線廣播以改善評分結果。
  • precisionCurve:動畫曲線,用來根據目標距離來控制精確度層級。

腳本會覆寫基類 XRRayInteractor 中的一些方法,以提供自己的實作。 值得注意的覆寫方法包括:

  • IsHitValid:根據 coneAngle、minGazeDistance 和 maxGazeDistance 欄位所定義的角度和距離準則,判斷可互動物件的點擊是否視為有效。
  • ScoreHit:根據距離、光線廣播點擊角度和目標中心角度,評分可互動及其相關聯的光線廣播點擊。 分數是加權因數的組合。
  • ConecastScoreCompare:以遞增順序比較 raycast 點擊次數。
  • GetValidTargets:根據光線廣播點擊及其分數,擷取注視互動程式的有效目標。

Interactor Dwell Manager

MRTK3 的注視控制器也會使用腳本元件進行 InteractorDwellManager 設定。 此腳本會使用 Unity 中的 XR 互動工具組,在可互動的物件上實作以停留為基礎的選取。 它會管理停留計時器、觸發選取範圍,並追蹤指定互動器可互動的保留狀態。 若要利用注視停留選取,目標互動必須是 MRTK3 且 StatefulInteractableUse Gaze Dwell 設定旗標。

注意

不建議在手部或語音輸入的情況下選擇保留,因為停留可能會導致無法預測或非預期的 UI 元素啟用。 應用程式可能仍想要考慮在協助工具或無法使用語音和手部輸入的情況下暫留輸入。 如需如何使用停駐的設計指引,請參閱 眼球注視和 停留和 頭部注視和停駐

進入暫留狀態之後,此互動器會持續選取,再經過暫留觸發時間,然後選取專案就會在可互動上觸發。 您可以使用下列專案來設定停留設定:

  • DwellTriggerTime:決定互動者在進入暫留狀態之後,仍會繼續選取可互動的時間長度。