在 Unity 脚本中访问眼动跟踪数据

本文假设用户已了解如何在 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,这将返回头部凝视方向。

  • HitInfo、HitPosition、HitNormal 等:有关当前目标的信息。
    同样, 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;

另请参阅