存取 Unity 腳本中的眼球追蹤資料 — MRTK2

本文假設您已瞭解在 MRTK 場景中設定眼球追蹤, (請參閱 基本 MRTK 設定以使用眼球追蹤) 。 在 MonoBehaviour 腳本中存取眼球追蹤資料很簡單! 只要使用 CoreServices.InputSystem.EyeGazeProvider即可。

IMixedRealityEyeGazeProvider

MRTK 中的眼球追蹤設定是透過 介面進行 IMixedRealityEyeGazeProvider 設定。 使用 CoreServices.InputSystem.EyeGazeProvider 可在執行時間提供工具組中註冊的預設注視提供者實作。 的 EyeGazeProvider 實用屬性如下所述。

  • IsEyeTrackingEnabled:如果使用者已選取使用眼球追蹤進行注視,則為 True。

  • IsEyeCalibrationValid:指出使用者的眼球追蹤校正是否有效。 如果值尚未從眼球追蹤系統收到資料,則會傳回 'null'。 這可能是不正確,因為使用者略過眼球追蹤校正。

  • IsEyeTrackingEnabledAndValid:指出目前眼球追蹤資料目前是否用於注視。

  • IsEyeTrackingDataValid:如果可以使用眼球追蹤資料,則為 True。 由於超過逾時,可能會無法使用, (對使用者) 或缺少追蹤硬體或許可權而閃爍。 請參閱 遺漏眼球校正通知範例 ,其中說明如何偵測使用者是否已校正眼睛,以及顯示適當的通知。

  • GazeOrigin:注視光線的來源。 請注意,如果 'IsEyeGazeValid' 為 false,這會傳回 頭部 注視原點。

  • GazeDirection:注視光線的方向。 如果 'IsEyeGazeValid' 為 false,這會傳回 頭部 注視方向。

  • HitInfoHitPositionHitNormal等:目前注視目標的相關資訊。 同樣地,如果 IsEyeGazeValid 為 false,這會以使用者的 頭部 注視為基礎。

使用 CoreServices.InputSystem.EyeGazeProvider 的範例

以下是 FollowEyeGaze.cs的範例:

  • 取得使用者正在查看的全像投影點:
// Show the object at the hit position of the user's eye gaze ray with the target.
gameObject.transform.position = CoreServices.InputSystem.EyeGazeProvider.HitPosition;
  • 在使用者目前查看的位置,以固定距離顯示視覺資產:
// If no target is hit, show the object at a default distance along the gaze ray.
gameObject.transform.position =
CoreServices.InputSystem.EyeGazeProvider.GazeOrigin +
CoreServices.InputSystem.EyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;

另請參閱