原网址:用户手册
SDK version: 4.0
目录
入门
将SDK集成到您的游戏中
导入资产
实施眼动追踪功能
独立构建
API概述
TobiiAPI
凝视点数据
头部姿势数据
用户存在
Gaze Focus和GazeAware组件
系统要求
附录:Unity Editor Howto's
将Windows设置为目标平台
导入SDK资产
好的选择
感谢您选择Tobii!您已经将您的金钱和好奇心投入到眼动仪设备中,现在让我引导您完成各个步骤,让您通过玩家的眼睛注视开发一种全新的游戏互动。
按照以下步骤开始探索SDK中包含的演示场景。
第1步:安装并确保您的眼动仪工作。
确保您的系统满足系统要求。
按照眼动仪随附的说明下载并安装正确的Tobii Engine运行时软件。确保眼动仪和软件正常工作。
第2步:下载Tobii Unity SDK for Desktop
如果您还没有这样做,请从Tobii Developer Zone(http://developer.tobii.com)下载Tobii Unity SDK for Desktop 。您需要登录才能访问“下载”页面。您可以免费创建一个帐户,只需几分钟。
第3步:将SDK资源导入新的Unity项目
将Tobii Unity SDK for Desktop unitypackage文件保存在磁盘上易于记忆的位置。这个unitypackage包括所有Tobii Unity SDK资产和演示场景。
打开Unity,创建一个新的Unity项目。选择Windows作为目标平台。
从Tobii Unity SDK for Desktop unitypackage 导入所有资产。
第4步:了解API和眼睛注视数据
Assets/Tobii
在Unity Editor项目面板中找到该文件夹。展开它并找到该DemoScenes
文件夹。打开01_EyeTrackingData
场景。
使用Tools
→ Add Tobii SDK Demo Scenes to Build
菜单将所有演示场景添加到构建中。
按播放按钮并使用场景的下一个按钮浏览提供的演示场景,并概述SDK的核心功能和游戏中流行的眼动追踪功能。另请参见API概述。
当您探索SDK的功能时,是时候在游戏中尝试一下了。如果在任何时候事情无法按预期工作,请查看“ 故障排除”页面。
部分内容:
确保Windows是构建设置中的选定目标平台。将Tobii Unity SDK for Desktop unitypackage导入游戏(该DemoScenes
文件夹是可选的)。
要开始使用TobiiAPI,请添加using Tobii.Gaming;
到脚本,键入“ TobiiAPI.
”并浏览API的静态函数:
您可能还想通过将Gaze Aware组件添加到某些游戏对象来探索使用眼睛注视选择内置对象的可能性。以下部分提供了一些提示,以便探索。
将眼动追踪功能拖放到游戏中
您可以从脚本顶部添加的任何脚本中调用TobiiAPI.GetGazePoint()来获取最新的Gaze Point using Tobii.Gaming;
。
在Tobii游戏团队中,我们使用这个基本的Gaze Point数据实现并帮助在许多游戏(从AAA游戏到独立游戏)中实现眼动追踪功能。多年来,我们对算法进行了大量迭代和改进。现在,为了您的方便,我们正在制作所有最好的算法,供您在游戏中使用(只要它们与Tobii眼动仪一起使用)。只需拖放,设置/适应您的游戏即可。这可能是您在游戏中添加Tobii Eye Tracking功能的最快方法。
以下是抓取功能的列表,它们的脚本都可以在SDK的DemoScenes文件夹中找到:
让游戏对象Gaze Aware
SDK还带有基本的内置注视对象映射。这使眼动追踪功能如下:
你可以做一个游戏对象凝视意识到在检查添加凝视感知组件:Add Component
→ Eye Tracking
→ Gaze Aware
.
组件的HasGazeFocus
属性使对象知道用户的眼睛注视是否聚焦在对象上。阅读HasGazeFocus
Gaze Aware游戏对象的Update循环中的属性,并通过更改其行为或外观让用户的眼睛注视。或者,让您的基础游戏算法使用TobiiAPI.GetFocusedObject()查询用户正在查看哪个游戏对象,并让游戏以其他方式响应用户的眼睛注视。
// Example script on Gaze Aware object:
// Make object spin when looked at!
using Tobii.Gaming;
using UnityEngine;
[RequireComponent(typeof(GazeAware))]
public class SpinOnGaze : MonoBehaviour
{
private GazeAware _gazeAware;
void Start()
{
_gazeAware = GetComponent();
}
void Update()
{
if (_gazeAware.HasGazeFocus)
{
transform.Rotate(Vector3.forward);
}
}
}
请注意,Gaze Aware对象可能不适合您的特定游戏类型,游戏机制或游戏对象的大小和数量。但它通常至少是一种非常方便的对象交互思想原型设计方法。
为Gaze Aware对象配置Gaze Focus图层
如果使用Gaze Aware组件,则应设置Gaze Focus检测图层。默认情况下,第一次在使用某些Tobii Unity SDK功能的游戏中按“播放”时,会创建Gaze Focus的默认设置。默认设置选择要为Gaze Aware对象测试的所有现有图层。如果稍后将一个新图层添加到游戏中,并且您希望对Gaze Aware对象进行测试,则必须在Gaze Focus图层下拉菜单中手动检查该图层。(请注意,按钮和标签等UI元素不适用于Gaze Aware组件,因为该功能仅适用于带有a的对象UnityEngine.Collider
)。
从编辑菜单打开眼动跟踪设置窗口: Edit
→Eye Tracking Settings...
单击以打开Gaze Focus Layers多选下拉列表,并确保选择所有图层,以便您可以使用眼睛注视使Gaze Aware游戏对象可聚焦。还要确保不选择您不想用眼睛注视的图层(如透明图层)。
Tobii Unity SDK资产包括一个编辑器脚本,用于将正确的插件dll复制到构建输出文件夹。Tobii Unity SDK功能目前仅适用于PC(Windows 10 / 8.1 / 7),但该框架也可在Mac和Linux上编译(无需复制dll)。
跳过文档的这一部分可能很诱人,但我向你保证,它会节省你的时间,至少可以浏览它。
本节概述了Tobii Unity SDK中提供的功能。它介绍了核心概念,让您深入了解SDK为您提供的工具和功能,以及它们的工作方式。
有关每个类和函数的API详细信息,请参阅Tobii Unity SDK 脚本参考。
部分内容:
TobiiAPI类的静态函数是Tobii Unity SDK的基本API。
包括该行
using Tobii.Gaming;
在游戏中的任何位置的脚本中,您将可以访问静态API函数。
以下是一些API函数:
您可以在以下部分中阅读有关凝视点数据,头部姿势数据,用户状态和聚焦对象的更多信息。
检查所有数据点的有效性
TobiiAPI是使用所谓的“延迟初始化”实现的。这意味着在第一次调用API之前,API不会被初始化。因此,第一次调用函数时,它们将返回无效(IsValid
is false
)的值。根据初始化底层框架所需的游戏循环次数,将会有许多帧返回无效数据。
可以通过分别调用TobiiAPI.SubscribeGazePointData或TobiiAPI.SubscribeHeadPoseData来显式初始化Gaze Point数据和Head Pose数据。如果在某个适当的时间内调用这些函数,例如在游戏启动期间,可以在第一次调用TobiiAPI.GetGazePoint()和TobiiAPI.GetHeadPose()时获得有效数据。
在大多数情况下,知道您正在处理最新数据也非常重要。TobiiAPI.GetGazePoint()和TobiiAPI.GetHeadPose()将返回从眼动仪接收的最新数据,但这可能是旧的。例如,如果用户远离监视器。我们建议使用IsRecent()
方法来确保数据既有效又近期。
GazePoint是TobiiAPI.GetGazePoint()返回的数据类型。它表示用户正在查看的屏幕上的点。从技术上讲,它是眼睛跟踪器计算出沿着用户的眼睛注视线与屏幕平面相交的屏幕上的点。
GazePoint.Viewport
返回视口坐标中的注视点,其中(0,0)是左下角,(1,1)是右上角UnityEngine.Screen
。如果用户看起来超出监视器的物理边界,则值可以高于1且低于0。
GazePoint.Screen
返回一个Vector2
(x,y)坐标UnityEngine.Screen
。这可能看起来非常像获取鼠标指针坐标,但请不要像使用鼠标指针坐标那样错误地使用这个开箱即用的点。眼动追踪数据不像鼠标指针数据那么精确 - 实际上,由于我们的眼睛和视觉效果,它实际上是不可能的。相反,将一系列GazePoint视为代表用户正在查看的区域,并考虑到数据的准确性和精确度因用户而异。
HeadPose数据可用于补充GazePoint数据,以进一步改善无限的屏幕体验,如扩展视图。
HeadPose是表示用户头部位置和方向的数据类型。Position
以毫米为单位测量相对于屏幕中间的眼睛跟踪器安装。该位置是头部旋转的空间点。
Rotation
表示用户头部的旋转,用表示Quaternion
。使用它的eulerAngles
属性Quaternion
将其转换为欧拉角。
用户存在是指示用户是否在眼睛跟踪屏幕前面的状态。如果没有用户,则该状态可用于例如暂停某些功能。
Tobii Unity SDK内置支持将眼睛注视数据映射到游戏对象。我们将此功能称为Gaze Focus。不是仅将每个凝视点映射到游戏对象,而是想法是具有Gaze Focus的对象被用户有意聚焦。要做到这一点,我们采用的算法将一系列凝视点,重点物体的历史和人类感知的时间考虑在内。
这些注视对象映射算法是在2.0版本的SDK中引入的。该计划是在框架的未来版本中不断改进算法。目标是进行快速而稳健的计算,该计算适用于具有不同精度和精度特征的不同眼动仪模型,但也适用于最终用户的一系列不同的眼睛注视特征。
Gaze Focus系统仅映射凝视可聚焦的游戏对象。为了使游戏对象凝视可聚焦,您需要将GazeAware组件添加到其中。该组件将游戏对象注册为Gaze Aware,OnEnable
并取消注册OnDisable
。在游戏对象的Update
循环中,可以读取GazeAware组件的HasGazeFocus
属性以了解游戏对象是否被聚焦。
对于单个游戏对象之外的游戏算法,还可以使用静态API函数TobiiAPI.GetFocusedObject()向凝视焦点处理器询问当前聚焦哪个对象,并让游戏响应该信息。当时只有一个物体(或没有物体)被认为具有凝视焦点。
作为开发人员,您应该使用Gaze Focus,因为它是开箱即用的,因为在未来版本中优化算法时,在凝视焦点计算之外进行的任何额外过滤可能都不合适。突出物体和可视化应该使用与人类感知相关的时间,而不是适应特定的凝视聚焦算法,眼动仪模型或特定用户的特征凝视跟踪。
Gaze Focus仅适用于带有游戏的3D游戏对象UnityEngine.Collider
。它不适用于画布上的UI元素。
Tobii Unity SDK for Desktop 4.0版需要在您的计算机上进行以下设置:
SDK中的代码示例和文档中的代码片段都是用C#编写的。如果您愿意,也可以使用UnityScript编写脚本。
有关其他Tobii SDK的下载链接和更多信息,请访问 Tobii Developer Zone(http://developer.tobii.com)。
↑回到顶部
在Unity Editor菜单中,选择:Edit
→ Build Settings...
。
选择以下设置:
PC, Mac & Linux Standalone
Windows
x86
或x86_64
在Unity编辑器菜单中,选择:Assets
→交通Import Assets
→交通Custom package...