眼动追踪演示:SVG作为关注区域
概述
在这个演示中, 我们的目标是捕捉眼动追踪凝视数据。具体而言,我们希望捕捉与特定关注区域(AOIs)相关的凝视数据,这些区域在研究中以SVG格式的形状对象提供。
下面展示了演示的预览,红色圆圈实时指示凝视的位置:
![]()
- 注意: 演示录音是通过5.5分钟的校准选项完成的;红色圆圈是一个对象,实时代表参与者的凝视,整体设置在下面会进一步解释。
请查看这个快速视频,显示演示的实际操作,以及记录数据的预览:
对象
此演示包含一个背景图像,背景为码头,上面放置了4个SVG人形对象。同时还有一个凝视反馈对象(红色圆圈)。为了此演示的目的,我们希望实时展示凝视,而这个红色圆圈反映了这一点。
![]()
创建的自定义变量
为了记录数据,需要变量。为此演示创建的所有自定义变量的列表如下,可以通过‘变量’标签访问。下面的图像显示了此演示所使用变量的详细信息和设置:
![]()
以下是关于这些变量及其目的的说明:
| 变量名称 | 描述 | 记录类型 |
|---|---|---|
All Gaze Data | 用于存储x/y坐标数组[X,Y],以及时间捕捉[T]和测量的置信水平[C]。 | 所有变更 / 时间序列 |
AOI1_gaze_data | 用于存储当参与者注视名为AOI1的SVG对象时的[X,Y,T,C]数组。 | 所有变更 / 时间序列 |
SVG1_path | 记录凝视停留在AOI1的SVG节点的路径(进一步解释如下)。 | 所有变更 / 时间序列 |
AOI2_gaze_data | 用于存储当参与者注视名为AOI2的SVG对象时的[X,Y,T,C]数组。 | 所有变更 / 时间序列 |
SVG2_path | 记录凝视停留在AOI2的SVG节点的路径。 | 所有变更 / 时间序列 |
依此类推….
设置的事件
由于我们感兴趣于捕捉凝视数据,因此使用以下事件:
- 所有凝视数据: 该事件在任务开始时立即启动,并持续记录眼动追踪的凝视数据。
- AOI凝视数据: 该事件在参与者注视特定AOI(即四个人中的一个)时立即启动,并记录与凝视相关的值。
- 结束实验: 接受/结束会话的事件,并在受试者点击‘结束’按钮时记录数据。
事件1:所有凝视数据
对于第一个事件,我们希望完成以下任务:
- 记录在研究过程中所有眼动追踪数据
- 实时在屏幕上显示检测到的凝视位置(这样您作为研究人员可以在尝试演示时感知到网络摄像头的追踪)
触发器
因此,我们使用眼动追踪凝视触发器来启动此事件。
![]()
动作
一旦检测到凝视,将执行以下动作: 首先,我们在All Gaze Data变量中调用之前创建的变量,在Set / Record Variable动作中记录数据为[X,Y,T,C]数组。
![]()
如下面所示,通过点击绿色按钮,选择目标变量,然后点击铅笔图标值选择菜单,选择来自触发器特定(眼动追踪凝视)菜单的[X,Y,T,C]数组,如下所示:
![]()
我们还添加了Set Object Property动作,以便将红色圆圈对象(称为‘凝视’)的X属性设置为并将Y属性分别设置为坐标X和坐标Y。换句话说,我们设置对象的x和y值等于x和y坐标……最终,这使得对象能够实时移动。
![]()
注意: 选择Coordinate X和Coordinate Y的选项来自触发器特定(眼动追踪凝视)菜单。
事件2:AOI凝视数据
在此事件中,我们希望设置事件,使得:
- 当凝视专门聚焦在目标AOIs(即我们上传的SVG对象)时也要记录凝视
- 要报告AOI的特定SVG节点数据
触发器
Eyetracking Gaze触发器也在此处用作触发器。但在此上下文中,我们指明我们仅对特定元素感兴趣,通过单击相应的选项,然后选择作为关注区域(AOIs)的4个SVG对象。
![]()
动作
要为每个AOI设置调用,我们需要Control Action → Requirement Action (If…Then)。本质上,我们希望Labvanced执行以下操作:“如果参与者注视AOI1,则我们希望在特定变量中记录特定数据,并记录该凝视的SVG路径。”
首先,我们点击+ Requirement按钮,将出现两个笔图标值。
- 第一个笔图标: 对于第一个字段我们选择,从触发器特定(眼动追踪凝视)菜单, 选择
Stimulus Name选项,它使用触发器(在这种情况下为凝视)所处的刺激的对象名称。 - 第二个笔图标: 选择
Constant Value,然后选择String选项,并输入对象名称(例如AOI1):
![]()
到目前为止,我们已经确定了何时触发器(凝视)在名为AOI1的刺激上……然后:
![]()
- 我们之前创建的变量
AOI_gaze_data将记录[X,Y,T,C]数组。 - 同样,
SVG1_path变量将被记录,以包含Stimulus Info,在此情况下,由于目标是SVG,该刺激信息将包含SVG的节点。
要指定下一个AOI,+Add Else If Case按钮的对话框中,然后重复之前所展示的结构/设置,主要区别在于将Stimulus Name设置为AOI2,然后调用用于存储数据的特定变量,即AOI2_gaze_data和SVG2_Path,如下所示:
![]()
接下来,对于AOI3,我们选择再次Add Else If Case,然后遵循相同的结构,但使用我们创建的自定义变量来存储该特定AOI的数据:
![]()
同样,对于AOI4,我们选择再次Add Else If Case,并遵循相同的结构,但使用我们创建的自定义变量来存储该特定AOI的数据:
![]()
事件3:结束实验 / 保存数据
最后,为了记录和存储数据,我们需要选择Jump Action来Accept / End Session动作,一旦点击Finish按钮(这是触发器),如下所示。
触发器
触发器指定在使用‘结束按钮’时发生:
![]()
动作
将发生的动作是接受会话,这意味着数据将被记录。
![]()
记录的数据
记录的数据包括所有自定义变量以及实验特定的值,如任务编号、会话编号等。
在下面的示例中,Dataview & Export 标签 显示了当数据按时间序列文件分开时的样子。每个时间序列变量(即记录所有变更的变量)在下面的左侧面板中显示其自己的CSV文件。这可以通过指定相关设置来实现,利用Configure Export设置。
当选择_All Gaze Data.csv_时,记录多种变量,包括下方显示的变量。‘值’列捕捉[X,Y,T,C]数组,其中的值用逗号分隔:
![]()
下图显示了在凝视AOI1时特别记录的数组预览,如‘值’列所示:
![]()
下图显示了在凝视AOI1时特别记录的SVG路径的预览,如‘值’列所示:
![]()
结论
此演示旨在展示如何记录凝视数据,并利用SVG对象记录特定情况下的凝视,例如在关注区域(AOI)发生时。
如果您有任何问题,请与我们联系并告知您的实验细节,特别是如果您需要进行可行性检查!