如何在 Unity 中获取 HoloLens 2 和 MRTK 的眼动追踪数据?

Posted

技术标签:

【中文标题】如何在 Unity 中获取 HoloLens 2 和 MRTK 的眼动追踪数据?【英文标题】:How to get the Eye tracking data for HoloLens 2 and MRTK in Unity? 【发布时间】:2020-11-13 15:16:43 【问题描述】:

我的问题是如何检索和存储眼球追踪/眼球注视数据(例如用户查看不同时间戳坐标位置热图)在 Unity 中使用 HoloLens 2MRTK

我已经看到 some C# codes 用于获取注视的方向和来源,但我不知道将它们放在哪里或在哪里/如何添加它们(以及添加到什么)。

是否可以在不进行编码的情况下直接从 Unity 和 MRTK 中检索和存储此类数据? 如果不是,那么我该如何通过编码来做到这一点?以及在哪里可以找到检索到的数据?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

要访问眼动追踪数据,只需在 MonoBehaviour 脚本中使用 CoreServices.InputSystem.EyeGazeProvider

EyeGazeProviderGazeOrigin 属性将返回注视光线原点,GazeDirection 属性将返回注视光线方向。更多信息请看:Accessing eye tracking data in your Unity script

【讨论】:

感谢赫尔南多的回复。我在 Unity 中使用 MRTK,它已经有这些脚本并且它们运行良好。我的问题是如何检索眼动追踪数据,例如用户在不同时间戳处以坐标点 (x,y,z) 的形式查看的位置。我需要将这些点作为某种形式的数据集。这些坐标(甚至是凝视原点或方向数据)是如何以及在何处生成和存储的?有什么想法吗? 眼睛注视坐标点在HitPosition字段的Vector3中提供。如本示例所示:Examples for using CoreServices.InputSystem.EyeGazeProvider。正如您所提到的答案,MRTK 没有提供返回带有时间戳的位置的方法,但没有什么可以阻止您在自己的代码中执行此操作。 谢谢 Hernando,但是我怎样才能得到 HitPosition 的值作为输出呢?当我在 HoloLens 中运行眼动追踪应用程序时,我发现一切正常,但没有看到任何生成的输出,例如坐标。你能详细说明一下吗? @Arde 实际上,注视通常喜欢half-open line segment,它从您的眼睛开始,仅沿线朝一个方向,并无限期地进行。而一旦视线碰到一个物体,它就会变成一条封闭的线段,并得到两个端点。这时可以返回另一个端点的位置字段。因此,要获得点坐标,您应该先击中一个对象。 亲爱的 Hernando,这是一个很好的观点!但即使我用眼睛注视物体(例如目标定位示例),我也没有收到任何输出。所以我的问题是:当击中物体时,坐标点是否会自动记录并存储在设备的某个位置或日志文件中?如果是,我在哪里可以找到该输出?如果没有,我该如何生成该输出?您已经提到 HitPosition 字段包含这些输出,但我如何存储或打印此字段以查看实际坐标或点?

以上是关于如何在 Unity 中获取 HoloLens 2 和 MRTK 的眼动追踪数据?的主要内容,如果未能解决你的问题,请参考以下文章

Unity+Hololens2 HoloLens2-Unity-ResearchModeStreamer-master打开RGB相机总结

在 Unity 开发中使用 FileOpenPicker 应用程序合约 Hololens 2

HoloLens开发手记 - Unity之场景共享 Shared holographic experiences in Unity

HoloLens开发手记 - Unity之Spatial Sounds 空间声音

可移动存储 Hololens 2、unity 和 xamarin uwp 的问题

HoloLens开发手记 - Unity之Persistence 场景保持