You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HoloLens 2能否获取、存储并查看瞳孔直径等眼动追踪数据?

基于MRTK的HoloLens 2眼动数据采集存储方案

HoloLens 2原生眼动API支持输出瞳孔直径、注视射线、眼动速度等核心指标,搭配MRTK的眼动追踪模块可以快速实现采集、存储需求,具体实现步骤如下:

1. 项目前置配置

  • 首先在Unity项目中开启眼动追踪权限:打开Edit > Project Settings > Player > Publishing Settings > Capabilities,勾选Gaze Input权限
  • 确保MRTK配置文件中已启用眼动追踪功能:在MRTK配置文件的Input > Data Providers中添加Windows Mixed Reality Eye Gaze Provider

2. 核心数据采集逻辑

编写自定义数据采集脚本,定时读取MRTK的眼动数据接口,核心实现代码如下:

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using System;
using System.Text;
using System.IO;

public class EyeTrackingRecorder : MonoBehaviour
{
    private StringBuilder dataBuilder;
    private string savePath;
    private float recordInterval = 0.02f; // 50Hz采样,可根据需求调整
    private float timer;

    void Start()
    {
        // 初始化存储路径,对应HoloLens本地可访问的应用私有目录
        savePath = Path.Combine(Application.persistentDataPath, $"eye_data_{DateTime.Now:yyyyMMdd_HHmmss}.csv");
        dataBuilder = new StringBuilder();
        // 写入CSV表头
        dataBuilder.AppendLine("Timestamp,PupilDiameterLeft,PupilDiameterRight,GazeOriginX,GazeOriginY,GazeOriginZ,GazeDirectionX,GazeDirectionY,GazeDirectionZ,VelocityX,VelocityY,VelocityZ");
    }

    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= recordInterval)
        {
            timer = 0;
            RecordEyeData();
        }
    }

    void RecordEyeData()
    {
        // 校验当前眼动数据是否有效
        if (CoreServices.InputSystem?.EyeGazeProvider?.IsEyeGazeValid == true)
        {
            var eyeGaze = CoreServices.InputSystem.EyeGazeProvider;
            // 读取双眼瞳孔直径
            float leftPupil = eyeGaze.LeftEyePupilDiameter;
            float rightPupil = eyeGaze.RightEyePupilDiameter;
            // 读取注视原点、方向数据
            var gazeOrigin = eyeGaze.GazeOrigin;
            var gazeDir = eyeGaze.GazeDirection;
            // 读取眼动速度
            var velocity = eyeGaze.GazeVelocity;
            
            // 拼接数据行写入缓存
            string line = $"{DateTime.Now:HH:mm:ss.fff},{leftPupil},{rightPupil},{gazeOrigin.x},{gazeOrigin.y},{gazeOrigin.z},{gazeDir.x},{gazeDir.y},{gazeDir.z},{velocity.x},{velocity.y},{velocity.z}";
            dataBuilder.AppendLine(line);
        }
    }

    // 结束录制时将缓存数据写入本地文件
    public void StopRecording()
    {
        File.WriteAllText(savePath, dataBuilder.ToString());
    }
}

3. 数据存储与导出

  • 上述代码默认将数据存储为CSV格式,保存在HoloLens的应用私有目录下
  • 你可以通过HoloLens设备门户访问该文件:进入设备门户的System > File explorer > LocalAppData > [你的应用名称] > LocalState路径,即可下载导出CSV文件

4. 数据查看

  • 导出的CSV文件可以直接用Excel、WPS或者Python的pandas库打开查看,也可以自行开发简单的可视化工具绘制瞳孔大小、眼动速度的变化曲线
  • 如果需要实时查看数据,可以在Unity编辑器调试模式下通过控制台打印关键指标,或者在HoloLens应用中添加UI文本组件实时显示当前数值

注意事项

  • 瞳孔直径数据仅支持HoloLens 2 21H1及以上版本系统输出,旧版本系统会返回0值
  • 眼动数据采样率最高支持120Hz,可根据需求调整采样间隔,过高采样率会带来额外性能消耗
  • 采集数据前需要用户授权眼动追踪权限,应用启动时会自动弹出权限申请窗口

内容的提问来源于stack exchange,提问作者Schlauchman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:54:03