在 MRTK2 中开始使用眼动跟踪

本页介绍如何设置 Unity MRTK 场景,以在应用中使用眼动跟踪。 以下文档假设你从全新的场景开始。 此外,还可以查看已配置的 MRTK 眼动跟踪示例,其中包含可使用它直接生成的大量极佳示例。

眼动跟踪要求清单

要使目视跟踪正常工作,必须满足以下要求。 如果你不熟悉 HoloLens 2 上的目视跟踪功能,不了解如何在 MRTK 中设置目视跟踪,请不要担心! 下面各节将详细介绍如何进一步解决这些问题。

  1. 必须将“眼睛凝视数据提供程序”添加到输入系统。 此数据提供程序提供来自平台的眼动跟踪数据。
  2. 必须在应用程序清单中启用“GazeInput”功能。 此功能可以在 Unity 2019 中进行设置,但在 Unity 2018 和更早版本中,此功能仅在 Visual Studio 中和通过 MRTK 生成工具提供
  3. HoloLens 必须针对当前用户进行目视校准。 请查看我们的检测用户是否已完成目视校准的示例

有关 GazeInput 功能的说明

MRTK 提供的生成工具(“混合现实工具包”->“实用工具”->“生成窗口”)可自动为你启用 GazeInput 功能。 为执行此操作,需要确保在“Appx 生成选项”选项卡上选中“凝视输入功能”:

MRTK Build Tools

此工具将在 Unity 生成完成后找到 AppX 清单,并手动添加 GazeInput 功能。 对于 Unity 2019 之前的版本,在使用 Unity 的内置生成窗口时,此工具不处于活动状态(“文件”->“生成设置”)。

对于 Unity 2019 之前的版本,在使用 Unity 的生成窗口时,需要在 Unity 生成后手动添加该功能,如下所示:

  1. 打开已编译的 Visual Studio 项目,然后在解决方案中打开“ackage.appxmanifest”
  2. 请确保在“功能”下勾选“GazeInput”复选框。 如果看不到“GazeInput”功能,请检查系统是否满足使用 MRTK 的先决条件(特别是 Windows SDK 版本)。

注意:只有在生成到新的生成文件夹时,才需要执行此操作。 如果你之前已生成 Unity 项目并设置 appxmanifest,现在再次面向同一文件夹,则无需重新应用更改。

分步设置眼动跟踪

设置场景

只需在菜单栏中单击“Mixed Reality Toolkit”->“配置…”,即可设置 MixedRealityToolkit

MRTK configure

设置眼动跟踪所需的 MRTK 配置文件

设置 MRTK 场景后,需要为 MRTK 选择配置文件。 可选择 DefaultMixedRealityToolkitConfigurationProfile,然后选择“复制和自定义”选项。

MRTK profile

创建“眼睛凝视数据提供程序”

  • 在 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 data provider

启用“使用眼动跟踪数据”

  • 导航到 MRTK 配置文件 ->“输入”->“指针”
    • 克隆“DefaultMixedRealityInputPointerProfile”以对其进行更改。
  • 在设置中找到“使用眼动跟踪数据”并启用它
  • 此时可能会看到“设置 GazeInput 功能”按钮,应按它来启用 UWP 功能

MRTK use eye tracking data

在 Unity 编辑器中模拟眼动跟踪

可以在 Unity 编辑器中模拟眼动跟踪输入,以确保在将应用部署到 HoloLens 2 之前正确触发事件。 只需将摄像头的位置用作眼睛凝视原点,将摄像头的向前矢量用作眼睛凝视方向,即可模拟眼睛凝视信号。 虽然这非常适用于初始测试,但请注意,它并不能很好地模仿快速眼球运动。 为此,最好确保在 HoloLens 2 上对基于眼睛的交互进行频繁的测试。

  1. 启用模拟的眼动跟踪

    • 在 MRTK 配置文件中单击“输入”选项卡。
    • 在那里,导航到“输入数据提供程序”->“输入模拟服务”
    • 克隆“DefaultMixedRealityInputSimulationProfile”以对其进行更改。
    • 选择适当的“默认眼睛凝视模拟模式”设置

    MRTK eyes simulate

  2. 禁用默认的头部凝视光标:通常情况下,建议不要显示眼睛凝视光标,或者如果确实需要,也要使其变得不易察觉。 建议默认隐藏附加到 MRTK 凝视指针配置文件的默认头部凝视光标。

    • 导航到 MRTK 配置文件 ->“输入”->“指针”
    • 克隆“DefaultMixedRealityInputPointerProfile”以对其进行更改。
    • 在“指针设置”的顶部,应将不可见的光标预制件分配给“凝视光标预制件”。 为此,可以从 MRTK Foundation 中选择“EyeGazeCursor”预制件。

在凝视提供程序中启用基于眼睛的凝视

在 HoloLens v1 中,头部凝视用作主要指向技术。 尽管仍可通过附加到摄像头的 MRTK 中的 GazeProvider 来使用头部凝视,但你可以通过选择输入指针配置文件的注视设置中的“IsEyeTrackingEnabled”复选框来使用眼睛凝视。

注意

通过更改“GazeProvider”的“IsEyeTrackingEnabled”属性,开发人员可以在代码中切换基于眼睛的凝视和基于头部的凝视。

重要

如果不满足任何眼动跟踪要求,应用程序将自动回退到基于头部的凝视。

访问眼睛凝视数据

现在,场景已设置为使用眼动跟踪,接下来让我们看看如何在脚本中访问它:通过 EyeGazeProvider 访问眼动跟踪数据支持眼动的目标选择

在 HoloLens 2 上测试 Unity 应用

使用眼动跟踪生成应用的方式应类似于编译其他 HoloLens 2 MRTK 应用。 请确保已启用“凝视输入”功能,如上文中的 GazeInput 功能的说明部分所述。

确保为 HoloLens 2 配置项目

请查看使用 MRTK 设置 OpenXR 项目中介绍的配置步骤,确保已正确配置项目。

要考虑的要点:

  • 在“项目设置”窗口中查看密钥设置。
    • 确保正确设置插件提供程序
  • 解决警告三角形
    • 应设置交互配置文件
    • 应正确选择 OpenXR 功能组

目视校准

请不要忘记在 HoloLens 2 上运行目视校准。 如果用户未校准,眼动跟踪系统不会返回任何输入。 进行校准的最简单方法是向上翻转面罩然后向下翻转。 应会出现一条系统通知,欢迎你成为新用户,并要求你进行目视校准。 或者,可以在系统设置中查找目视校准:“设置”>“系统”>“校准”>“运行目视校准”。

眼动跟踪权限

首次在 HoloLens 2上启动应用时,系统应会弹出提示,要求用户授予使用眼动跟踪的权限。 如果未显示提示,通常表示未设置“GazeInput”功能。

权限提示出现一次后,不会自动再次显示。 如果“已拒绝眼动跟踪权限”,可以在“设置”->“隐私”->“应用”中重置此功能。


这应会帮助你开始在 MRTK Unity 应用中使用眼动跟踪。 别忘了查看我们的 MRTK 眼动跟踪教程和示例,其中演示了如何使用眼动跟踪输入,并方便地提供了可在项目中重复使用的脚本。


返回“MixedRealityToolkit 中的眼动跟踪”