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

Unity2020.3/OpenXR/MRTK2.8下Hololens2全息远程无手部追踪问题

Hololens2迁移至Unity2020.3 LTS+OpenXR后远程原点偏移及手部追踪失效问题解决

问题背景与现象

  • 原开发环境:Unity2019.4 + 内置XR/Windows Mixed Reality,全息远程、手部追踪功能正常
  • 新环境:Unity2020.3 LTS + OpenXR,编辑器/本地运行正常,可按官方指引连接HL2远程,但出现两个核心问题:
    1. 远程运行时场景原点偏移(常加载于身后或下方),非远程运行时原点位置正常
    2. 设备内完全无法实现手部追踪
  • 已尝试操作:导入DotNetWinRT、官方排查步骤,均无效
  • 附:Unity2019、2020包列表及Unity2020 OpenXR项目设置截图

排查与解决步骤

一、远程场景原点偏移问题

  1. 校准OpenXR空间设置
    • 进入Edit > Project Settings > XR Plug-in Management > OpenXR > Windows Mixed Reality,将Tracking Origin Mode设置为Floor(匹配Hololens2默认空间定位规则)
    • 打开Unity编辑器XR > Windows Mixed Reality > Holographic Remoting窗口,将Spatial Locator Mode设为Shared,避免独立定位导致的原点偏移
  2. 重置设备空间校准
    • 在Hololens2设备中进入Settings > System > Spatial Mapping > Reset Spatial Mapping,重新完成空间校准后再连接远程
    • 远程连接前,确保设备处于稳定空间环境,避免初始定位异常
  3. 检查场景对象设置
    • 禁止手动修改Camera或XR Origin的初始位置/旋转,OpenXR会自动接管空间定位逻辑
    • 排查项目中是否存在强制修改原点位置的自定义脚本,远程模式下临时禁用后测试

二、手部追踪失效问题

  1. 启用OpenXR手部追踪扩展
    • 进入Edit > Project Settings > XR Plug-in Management > OpenXR > Features,勾选Hand Tracking和Windows Mixed Reality Hand Tracking扩展(需保证包版本与2020.3 LTS兼容)
    • 检查Packages/manifest.json中com.microsoft.mixedreality.openxr版本,建议使用>=1.4.0的稳定版
  2. 验证设备权限与远程传输设置
    • 在Hololens2设备中,确认Settings > Privacy > Camera权限已授予应用,Settings > Privacy > Speech, inking, & typing > Get to know me处于开启状态
    • 远程连接时,在Unity的Holographic Remoting窗口勾选Stream Input,确保手部输入数据能正常传输到设备
  3. 替换兼容的手部追踪逻辑
    • Unity2019内置XR手部API与OpenXR环境不兼容,需改用OpenXR原生API或适配OpenXR的手部组件,示例代码:
      using UnityEngine.XR.OpenXR.Features.Interactions;
      using UnityEngine.XR.OpenXR;
      
      void Update()
      {
          var handTrackingFeature = OpenXRSettings.Instance.GetFeature<WindowsMixedRealityHandTrackingFeature>();
          if (handTrackingFeature != null && handTrackingFeature.enabled)
          {
              bool isLeftHandTracked = handTrackingFeature.GetJoint(TrackedHandJoint.Wrist, UnityEngine.XR.InputDeviceCharacteristics.Left).isValid;
              bool isRightHandTracked = handTrackingFeature.GetJoint(TrackedHandJoint.Wrist, UnityEngine.XR.InputDeviceCharacteristics.Right).isValid;
              // 此处添加手部追踪后的业务逻辑
          }
      }
      
  4. 清理包依赖冲突
    • 对比Unity2019与2020的包列表,移除2020环境中与OpenXR冲突的旧XR包(如旧版本com.unity.xr.windowsmr)
    • 执行Window > Package Manager > Remove Unused Packages清理冗余依赖,重新导入OpenXR相关包

三、通用兼容性排查

  • 确保Hololens2设备系统版本为最新(>=20H2),修复系统层面的XR兼容性问题
  • 远程连接前关闭设备上其他XR应用,避免资源抢占
  • 重新生成Visual Studio解决方案,确保OpenXR配置正确写入项目文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:30:46