mrtk_developmentreleases/2.0.0releases/2.1.0releases/2.2.0
  • 指南
  • API 文档
  • 指南
  • 功能概述
  • 输入系统 Input System
  • 眼动跟踪 Eyes
  • 验证跟踪校准 Validate Tracking Calibration

    Show / Hide Table of Contents
    • MRTK入门
      • 发布说明
      • MRTK包内容
      • 从早期版本更新
      • 从HTK更新
      • 生成和部署MRTK
      • NuGet包
      • MRTK配置对话框
      • 开始使用 MRTK和XR SDK
      • 性能
      • 全息图稳定
      • 在大型项目中使用MRTK
    • 架构
      • 概述
      • 框架和运行时
      • 输入系统
        • 术语
        • 核心系统
        • Controllers, pointers, and focus
      • 系统,扩展服务和 data providers
    • 功能概述
      • 边界系统 Boundary System
        • 边界系统概述
        • 配置边界可视化
      • 相机系统 Camera System
        • 相机系统概述
        • Camera Settings Providers
          • Windows 混合现实相机设置
          • Unity AR相机设置[实验性]
          • 创建camera settings provider
      • 跨平台支持
        • 为iOS和Android配置MRTK
      • 检测平台能力
      • 诊断系统 Diagnostics System
        • 诊断系统概述
        • 配置诊断系统
        • 使用可视化分析器
      • 扩展服务 Extension Services
        • 扩展服务创建向导
        • 场景过渡服务概述
      • 输入系统 Input System
        • 输入概览
        • 输入动作 Input Actions
        • 输入事件 Input Events
        • Input Providers
          • Input Providers 概述
          • 创建一个 input data provider
        • 控制器 Controllers
        • 眼动跟踪 Eyes
          • 概述
          • 入门
          • 通过代码访问数据
          • 验证跟踪校准 Validate Tracking Calibration
        • 凝视 Gaze
        • 手势 Gestures
        • 手部 Hands
        • 如何添加近距离交互 Near Interaction
        • 编辑器内输入模拟 In-Editor Input Simulation
        • 指针 Pointers
        • 语音输入 Voice Input
          • 语音转录 Dictation
          • 语音(命令和控制) Speech
      • 多场景系统 Multi Scene System
        • 多场景系统概述
        • 场景类型 Scene Types
        • 内容场景加载 Content Scene Loading
        • 监测内容加载 Monitoring Content Loading
        • 光照场景操作 Lighting Scene Operations
      • 打包 Packaging
        • MRTK包 MRTK Packages
        • MRTK模块化 MRTK Modularization
      • 配置文件 Profiles
        • 配置文件概述
        • 配置指南 Configuration Guide
      • 渲染 Rendering
        • 材质实例概述 Material Instance Overview
        • Shaders
          • MRTK标准着色器 MRTK Standard Shader
      • 服务 Services
        • 什么是混合现实特性
        • 什么是 MixedRealityServiceRegistry 和IMixedRealityServiceRegistrar
        • 扩展服务 Extension services
      • 空间感知系统 Spatial Awareness System
        • 空间感知概述
        • Spatial Observers
          • 为设备配置 Observers
          • 为Editor配置 Observers
          • 通过代码控制 Observers
          • 创建自定义 Observer
      • 传送系统概述 Teleport System Overview
      • 工具
        • Dependency Window
        • Extension Service Creation Wizard
        • Holographic Remoting
        • Input Animation Recording
          • Input Animation File Format Specification
        • Optimize Window
        • Runtime tools
          • Controller Mapping tool
      • UX 构建模块
        • 工具箱窗口 Toolbox Window
        • 按钮 Button
        • 边界框 Bounding Box
        • 对象操纵器 Object Manipulator
        • Manipulation Handler [废弃]
        • Slate
        • 系统键盘 System Keyboard
        • 可交互的 Interactable
        • Solvers
          • 点击放置 Tap to Place
        • 对象集合 Object Collection
        • 提示工具条 Tooltips
        • 滑动条 Slider
        • 手部菜单 Hand Menu
        • 近处菜单 Near Menu
        • 应用程序栏 App Bar
        • 指尖可视化 Fingertip Visualization
        • 进度指示器 Progress Indicator
        • 对话框 Dialog [实验性]
        • 手势教学 Hand Coach [实验性]
        • 可滚动对象集合 Scrolling Object Collection [实验性]
        • 脉冲着色器 Pulse Shader [实验性]
        • 停靠控件 Dock Control [实验性]
        • HoloLens键盘助手 [实验性]
      • 示例场景
        • 示例中心
        • 手势交互示例场景
        • 眼动跟踪示例场景
    • Contributing
      • Contributing Overview
      • Coding Guidelines
      • Writing and Running Tests
      • Writing Documentation
      • Pull Requests
      • Experimental Features
      • Breaking Changes
      • How to use DocFX
    • Planning
      • Roadmap
    • Notice
    • Authors

    Eye Calibration

    Screenshot from eye calibration notification

    To be or not to be eye calibrated

    If eye tracking is a fundamental part of your app experience, you may wish to ensure that the user's eye calibration is valid. The main reason for it to be invalid is that the user has chosen to skip the eye tracking calibration when putting on the device.

    This page covers the following:

    • Describes how to detect that a user is eye calibrated
    • Provides a sample for how to trigger a user notification to instruct the user to go through the eye calibration
      • Automatically dismiss notification if eye calibration becomes valid
      • Manually dismiss notification if user chooses to continue without calibration

    How to detect the eye calibration state

    The MixedRealityToolkit.InputSystem.EyeGazeProvider provides a bool? property called IsEyeGazeValid. It returns null if no information from the eye tracker is available yet. Once data has been received, it will either return true or false to indicate that the user's eye tracking calibration is valid or invalid.

    Sample eye calibration notification - Step-by-step

    1. Open the MRTK eye tracking example package

    2. Load EyeTrackingDemo-00-RootScene.unity scene

    3. Check out EyeCalibrationChecker:

      • In this scene, we have already a sample for detecting whether the current user is calibrated under the EyeCalibrationChecker game object. It simply parents a few text meshes and has some additional triggers for blending the notification in and out. This includes slowly increasing its size and opacity on activation. Once the notification is dismissed, it will slowly decrease its size and fade out.

      • Attached to the EyeCalibrationChecker game object is the EyeCalibrationChecker script which exposes two Unity Events:

        • OnEyeCalibrationDetected()
        • OnNoEyeCalibrationDetected()
      • These events will only trigger if the calibration status changes. Hence, if a user chooses to dismiss the notification, the notification will not show up again until

        • The app gets restarted
        • A valid user has been detected and then a new uncalibrated user has put the device on
      • For testing whether the animations and events are triggered correctly, the EyeCalibrationChecker script possesses a bool editorTestUserIsCalibrated flag. For example, when the app is running in the Unity Editor you can test, whether the notification automatically pops up once the calibration status changes from true to false and whether it automatically dismisses the notification again once the status changes from false to true.

        private bool? prevCalibrationStatus = null;
        ...
    
       void Update()
       {
          // Get the latest calibration state from the EyeGazeProvider
          bool? calibrationStatus = CoreServices.InputSystem?.EyeGazeProvider?.IsEyeCalibrationValid;
    
          ...
    
          if (calibrationStatus != null)
          {
             if (prevCalibrationStatus != calibrationStatus)
             {
                if (calibrationStatus == false)
                {
                   OnNoEyeCalibrationDetected.Invoke();
                }
             else
             {
                OnEyeCalibrationDetected.Invoke();
             }
    
             prevCalibrationStatus = calibrationStatus;
          }
       }
    

    Back to "Eye tracking in the MixedRealityToolkit"

    • Improve this Doc
    In This Article
    • To be or not to be eye calibrated
      • How to detect the eye calibration state
      • Sample eye calibration notification - Step-by-step
    Back to top Generated by DocFX