MRTK-眼动跟踪

作者:追风剑情 发布于:2023-11-3 11:25 分类:Unity3d

[微软] 眼动跟踪概述

手动运行眼部校准程序

[设置]->[系统]->[校准]->[眼部校准]->[运行眼部校准]

删除眼部校准配置

[设置]->[隐私声明]->[眼球跟踪程序]

HoloLens 2 可存储 50 位用户的眼部校准配置文件,当校准过眼部的用户戴上设备时,显示屏可无缝调整。

在下列情况中,HoloLens 2 会提示用户校准设备:

  • 用户首次使用设备
  • 用户之前选择退出校准过程
  • 用户上次使用设备时校准过程不成功
  • 用户已删除其校准配置文件
  • 设备被关闭并重新打开

无法获得眼动跟踪数据的常见情况:

  • 系统未能校准用户。
  • 用户跳过了校准过程。
  • 用户已校准,但决定不授予应用使用其眼动跟踪数据的权限。
  • 用户的眼镜比较独特或存在某种眼睛状况,系统尚不支持这种情况。
  • HoloLens 挡板或眼镜上的污迹、强烈的阳光直射以及眼睛前面的毛发等外部因素导致无法可靠地运行眼动跟踪。

开启凝视输入

[Edit]->[Player Settings]->[Player]->"Capabilities"->勾上"GazeInput"
或者在 Build 出来的 Visual Studio 工程中的 Package.appxmanifest 文件的[功能]列表中勾上"注视输入"。

相关类
Microsoft.MixedReality.Toolkit.CoreServices

判断用户是否校准过眼睛

bool? calibrationStatus = CoreServices.InputSystem?.EyeGazeProvider?.IsEyeCalibrationValid;
if (calibrationStatus.HasValue)
{
	if (calibrationStatus.Value)
	{
		//用户已校准眼睛
	}
	else
	{
		//用户未校准眼睛
	}
}
else
{
	//尚未从眼睛跟踪系统接收到数据
}  

凝视目标

将脚本 EyeTrackingTarget.cs 挂到要捕获凝视的对象上。需要注意的是对象必须要有碰撞器(Collider)。

111111.png

事件

  • OnLookAtStart: 目光移到对象上时触发
  • WhileLookingAtTarget: 目光持续注视着对象是触发
  • OnLookAway: 目光移开对象时触发
  • OnDwell: 当注视时间大于Dwell Time In Sec秒时触发
  • OnSelected: 点击注视的对象时触发
  • OnTapDown: 未实现
  • OnTapUp: 未实现

属性
Eye Cursor Snap To Target Center: 当目光移动到对象上时,光标自动吸附到对象中心位置
EyeTrackingTarget.LookedAtEyeTarget: 获取当前注视的对象。

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号