眼动跟踪示例概述 - MRTK2

本主题介绍了如何通过生成 MRTK 眼动跟踪示例 (Assets/MRTK/Examples/Demos/EyeTracking) 来快速开始使用 MRTK 中的眼动跟踪。 这些示例让你体验我们新的神奇输入功能之一:眼动跟踪! 该演示包括各种用例,范围从基于眼睛的隐式激活,到如何将有关你正在查看的内容的信息与语音和手部输入无缝结合。 用户只需看着目标并说“选择”或执行手势,即可快速、轻松地选择和移动全息内容。 演示还包括一个示例,用于在盖板上以视线为导向滚动、平移和缩放文本和图像。 最后,提供了一个示例,用于在 2D 盖板上记录和可视化用户的视觉注意力。 在下一节中,将详细介绍 MRTK 眼动跟踪示例包 (Assets/MRTK/Examples/Demos/EyeTracking) 中每个不同示例包含的内容:

List of eye tracking scenes

以下部分简明扼要介绍了各个眼动跟踪场景的作用。 MRTK 眼动跟踪演示场景是以添加方式加载的,我们将在下面解释如何设置。

眼动跟踪演示示例概述

支持眼动的目标选择

本教程展示了如何轻松访问眼睛凝视数据以选择目标。 本教程包括一个巧妙且强大的反馈示例,让用户确信焦点就在目标上,不会不知所措。 另外,还有一个简单的例子,演示智能通知被阅读后自动消失。

摘要:结合眼睛、语音和手部输入,快速轻松地选择目标。

支持眼动的导航

想象一下,你正在远程的显示屏或电子阅读器上阅读一些信息,在你看到显示文本的末尾时,文本会自动向上滚动以显示更多内容。 或者如何神奇地直接放大到你正在看的位置? 上面这些就是本教程中展示的一些有关支持眼动的导航的示例。 此外,还有一个 3D 全息影像的免手动旋转示例,可让这些全息影像根据你当前的焦点自动旋转。

摘要:使用眼睛、声音和手写输入的组合进行滚动、平移、缩放、3D 旋转。

支持眼动的定位

本教程展示了一个名为“放在哪儿”的输入方案,该方案可以追溯到 1980 年代早期麻省理工学院媒体实验室的研究,包括眼睛、手和语音输入。 想法很简单:利用你的眼睛快速选择和定位目标。 只需查看全息影像并说“放下这个”,看看想想把它放在哪里,然后说“那里!”。 为了更精确地定位你的全息影像,你可以使用来自你的手、语音或控制器的额外输入。

摘要:使用眼睛、语音和手部输入(拖放)定位全息影像。 采用眼 + 手的支持眼动的滑块。

视觉注意力的可视化

基于用户注视位置的数据是一个强有力的手段,可以评估设计的可用性,并确定高效工作流中的问题。 本教程讨论了不同的眼动跟踪可视化以及它们如何满足不同的需求。 我们提供了记录和加载眼动跟踪数据的基本示例,以及如何将它可视化的示例。

摘要:盖板上的二维注意力图(热图)。 记录和回放眼动跟踪数据。

设置 MRTK 眼动跟踪样本

先决条件

请注意,在设备上使用眼动跟踪示例需要 HoloLens 2 和示例应用程序包,该程序包是使用包的 AppXManifest 上的“注视输入”功能生成的。

要在设备上使用这些眼动跟踪示例,请确保在 Visual Studio 中生成应用之前,按照这些步骤执行操作。

1. 加载 EyeTrackingDemo-00-RootScene.unity

EyeTrackingDemo-00-RootScene 是基础场景(根场景),其中包含所有核心 MRTK 组件。 这是需要首先加载的场景,你将从中运行眼动跟踪演示。 它具有图形场景菜单,能够在不同的眼动跟踪样本之间轻松切换,并且这些样本将以添加方式加载

Scene menu in eye tracking sample

根场景包括一些核心组件,这些组件将以添加方式加载的场景中持续存在,例如 MRTK 配置的配置文件和场景照相机。 MixedRealityBasicSceneSetup(参阅下面的屏幕截图)包含一个脚本,该脚本将在启动时自动加载引用的场景。 默认情况下,这是 EyeTrackingDemo-02-TargetSelection。

Example for the OnLoadStartScene script

2. 将场景添加到生成菜单

若要在运行时加载累加场景,必须先将这些场景添加到生成设置 -> 生成菜单中的场景。 根场景必须显示为列表中的第一个场景,这一点很重要:

Build Settings scene menu for eye tracking samples

3.在 Unity 编辑器中播放眼动跟踪样本

在将眼动跟踪场景添加到生成设置并加载 EyeTrackingDemo-00-RootScene 之后,你可能需要检查最后一件事:附加到 MixedRealityBasicSceneSetup GameObject 的“OnLoadStartScene”脚本是否已启用? 这是为了让根场景知道首先加载哪个演示场景。

Example for the OnLoad_StartScene script

让我们开始吧! 点击“播放”! 你应该会看到几个宝石出现,并且场景菜单位于顶部。

Sample screenshot from the ET target select scene

你应该还会注意到,游戏视图中心有一个半透明的小圆圈。 这充当模拟眼睛凝视的指示器(光标):只需按下鼠标右键并移动鼠标即可更改其位置。 当光标悬停在宝石上时,你会注意到,光标会与当前查看的宝石的中心对齐。 要测试在看向目标时事件是否按预期触发,这是一种不错的方法。 请注意,对于我们的眼球的快速且有偶然性的运动来说,通过鼠标控制模拟的眼睛凝视只能算是一个补充,而且是糟糕的补充。 但是,它非常适合在通过将设计部署到 HoloLens 2 设备来迭代设计之前测试基本功能。 回到我们的眼动跟踪示例场景:只要用户看向宝石,宝石就会旋转,并且可以通过“盯住”宝石而将其摧毁...

  • 按 Enter(模拟说话“选择”)
  • 朝着麦克风说“选择”
  • 在按空格键显示模拟手部输入的同时,单击鼠标左键执行模拟捏合

我们在支持眼动的目标选择教程中更详细地描述了如何实现这些交互。

将光标上移到场景中的顶部菜单栏时,你会注意到当前悬停的项将会有变化。 可以使用上述提交方法之一(例如,按 Enter)来选择当前突出显示的项目。 这样,便可以在不同的眼动跟踪示例场景之间切换。

4. 如何测试特定的子场景

在处理特定场景时,你可能不想每次都浏览场景菜单。 而是希望在按下“播放”按钮时直接从当前正在处理的场景开始。 没问题! 可以这样做:

  1. 加载根场景

  2. 在根场景中,禁用“OnLoadStartScene”脚本

  3. 将下面描述的眼动跟踪测试场景之一(或任何其他场景)拖放到你的“层次结构”视图中,如下面的屏幕截图所示。

    Example for additive scene

  4. 按“播放”

请注意,像这样加载子场景不是持久的:这意味着如果你将应用部署到 HoloLens 2 设备,设备只会加载根场景(假设根场景出现在你的生成设置的顶部)。 此外,与他人共享你的项目时,不会自动加载子场景。


你已经了解了如何让 MRTK 眼动跟踪示例场景正常工作,让我们继续深入研究如何用你的眼睛选择全息图:支持眼动的目标选择


返回“MixedRealityToolkit 中的眼动跟踪”