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

如何在MRTK3 HoloLens2中切换头部凝视与眼部凝视?

HoloLens2 MRTK3 头部凝视与眼部凝视切换实现方案

核心逻辑

MRTK3通过输入数据提供者管理不同凝视源,切换凝视方式本质就是启用/禁用对应的凝视提供者,同时确保光标绑定到目标凝视源。

静态配置切换(编辑时设置)

如果不需要运行时动态切换,直接在输入配置文件中修改:

  • 打开MRTK配置管理器:Window > Mixed Reality > MRTK3 Configuration
  • 切换到Input标签页,找到你的输入配置文件(默认是DefaultMixedRealityInputSystemProfile)
  • 展开Gaze Settings下的Gaze Providers列表:
    • 取消勾选EyeGazeDataProvider的Enabled,禁用眼部凝视
    • 勾选HeadGazeDataProvider的Enabled,启用头部凝视(如果列表里没有这个提供者,点击Add Data Provider选择添加)
  • 检查Cursor Settings:默认配置下MRTK会自动优先使用启用的凝视源,无需额外调整光标绑定

运行时动态切换(代码实现)

需要通过按钮、手势等触发运行时切换的话,使用以下脚本:

using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;

public class GazeModeSwitcher : MonoBehaviour
{
    // 切换为头部凝视
    public void EnableHeadGaze()
    {
        var inputSystem = MixedRealityToolkit.Instance.ActiveInputSystem;
        if (inputSystem == null) return;

        // 禁用眼部凝视提供者
        inputSystem.GetDataProvider<IEyeGazeDataProvider>()?.Disable();
        // 启用头部凝视提供者
        inputSystem.GetDataProvider<IHeadGazeDataProvider>()?.Enable();

        // 强制光标绑定头部凝视源
        inputSystem.CursorInputModule?.CursorManager?.SetCursorGazeSource(InputSourceType.Head);
    }

    // 切换为眼部凝视
    public void EnableEyeGaze()
    {
        var inputSystem = MixedRealityToolkit.Instance.ActiveInputSystem;
        if (inputSystem == null) return;

        inputSystem.GetDataProvider<IHeadGazeDataProvider>()?.Disable();
        inputSystem.GetDataProvider<IEyeGazeDataProvider>()?.Enable();

        inputSystem.CursorInputModule?.CursorManager?.SetCursorGazeSource(InputSourceType.Eyes);
    }
}
  • 将脚本挂载到场景中任意GameObject上
  • 在UI按钮的点击事件中,分别绑定EnableHeadGaze()和EnableEyeGaze()方法即可触发切换

验证要点

  • 部署到HoloLens2或进入Play模式后,切换到头部凝视时,光标应跟随头部转动方向
  • 测试对象选择:确保Interactable组件能响应头部凝视的聚焦与选择操作
  • 切换回眼部凝视时,光标应恢复跟随眼球移动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:02:35