存取 Unity 腳本中的眼睛追蹤資料

本文假設您已瞭解如何在 MRTK 場景中設定眼睛追蹤 (請參閱 基本的 MRTK 安裝程式以使用眼睛追蹤) 。 存取 MonoBehaviour 腳本中的眼睛追蹤資料很簡單! 只要使用 CoreServices. InputSystem. EyeGazeProvider

IMixedRealityEyeGazeProvider

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

  • IsEyeTrackingEnabled:如果使用者已選擇使用眼睛追蹤,則為 True。

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

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

  • IsEyeTrackingDataValid:如果有可用的眼睛追蹤資料,則為 True。 它可能因為超過 timeout 而無法使用 (在) 或缺乏追蹤硬體或許可權的情況之下,應能穩固地提供使用者閃爍。 查看我們 遺漏的眼睛校正通知範例 ,其說明如何偵測使用者是否為眼睛的校正,並顯示適當的通知。

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

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

  • HitInfoHitPositionHitNormal 等等:目前 Gazed 在目標上的相關資訊。 同樣地,如果 IsEyeGazeValid 是 false,則會以使用者的 標頭 為基礎。

使用 CoreServices 的範例 InputSystem. EyeGazeProvider

以下是來自 FollowEyeGaze的範例:

  • 取得使用者所查看的全息圖點:
// 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;

另請參閱