通过


Microsoft 混合现实 Toolkit 2.5 发行说明

重要

存在一个已知的编译器问题,该问题会影响使用 ARM64 为 Microsoft HoloLens 2 生成的应用程序。 此问题可通过将 Visual Studio 2019 更新到版本 16.8 或更高版本来修复。 如果无法更新 Visual Studio,请导入 com.microsoft.mixedreality.toolkit.tools 包以应用解决方法。

2.5.4 中的新增功能

修复了使用 UPM 时 Oculus 集成的 bug

使用 UPM 时,OculusXRSDKDeviceManagerProfile 在启动时始终将其 预制件设置为“无”。 此版本将设备管理器配置为在启动时指向一组工作预制件。

修复了通过 UPM 使用 OpenXR 的问题

修复了以下问题:默认情况下,OpenXR 提供程序未添加到 link.xml,导致新项目在通过 Unity 的包管理器使用 OpenXR 和 MRTK 时无法在设备上运行。 升级的现有项目仍然需要手动添加此内容。

2.5.3 中的新增功能

修复了 2.5.2 中引入的 Oculus 的回归

2.5.2 在集成 Oculus SDK 时引入了生成问题。 此版本会还原此问题。

2.5.2 中的新增功能

添加对 OpenXR 的支持

添加了对 Unity OpenXR 预览包和 Microsoft 混合现实 OpenXR 包的初始支持。 有关详细信息,请参阅 MRTK/XRSDK 入门页Unity的论坛帖子Microsoft的文档

重要

Unity 中的 OpenXR 仅在 Unity 2020.3 及更高版本上受支持。 它还仅支持 x64、ARM 和 ARM64 版本。

已修复边界可视化错误

现在,根据边界配置文件,边界可视化效果(如地面或墙)将正确配置并在运行时可见。

MSBuild for Unity 支持

自 2.5.2 版本起,已删除对 MSBuild for Unity 的支持,以符合 Unity 的新包指南

2.5.1 中的新增功能

修复了包依赖项错误

此版本修复了不正确的包间文件依赖项 (例如:Standard资产中的文件不再错误地引用 Foundation) 中的文件。 版本 2.5.1 还添加了文本网格 Pro 上的显式依赖项。

Standard复制到 Assets/MRTK/Shaders 的资产包着色器

通过 UPM 安装 Standard Assets 包时,着色器将复制到 Assets/MRTK/Shaders 文件夹,以便它们不再不可变。 这解决了为通用渲染管道更新着色器的问题, (URP) 在下次加载项目时还原旧行为。

修复了传送光标粘在手上

此版本修复了传送目标光标可以粘附在手部视觉对象 上的问题

2.5.0 中的新增功能

Unity包管理器 (UPM) 支持

现在可以使用 Unity 包管理器管理 混合现实 工具包。

MRTK Foundation UPM 包

注意

导入 MRTK UPM 包需要一些手动步骤。 有关详细信息,请查看 混合现实 工具包和 Unity 包管理器

Oculus Quest XR SDK 支持

MRTK 现在支持使用本机 XR SDK 管道运行 Oculus Quest 头戴显示设备和控制器。 由于 Eric Provencher 在 MRTK-Quest 上的工作,Oculus 集成Unity包也支持手部跟踪!

有关如何使用新管道在 Oculus Quest 上部署设备的说明,请参阅 Oculus Quest 设置指南

滚动对象集合

MRTK UX 组件已从实验性功能升级,为不同大小的 3D 内容布局提供了更大的自由度,并增加了对未附加碰撞器的对象的支持。 还添加了用于禁用内容掩码的新选项,使原型制作更容易。

有关详细信息 ,请参阅滚动对象集合

滚动对象集合

传送指针动画、处理和声音改进

传送指针现在改进了动画和音频反馈。 我们还改进了传送指针的处理方式,以便在从指向附近表面到较远表面的过渡时处理更流畅。

输入模拟备忘单

HandInteractionExamples 场景现在有一个可配置的快捷方式,用于显示输入模拟的帮助页面

输入模拟备忘单

使用鼠标输入模拟眼睛凝视

用户现在可以使用鼠标来模拟眼动跟踪。 Eye Simulation Mode查看输入模拟配置文件中的 字段,并将其设置为“鼠标”。 这将替换上一个 Simulate Eye Position 字段。

眼睛凝视鼠标

编辑器播放模式下的输入模拟运动控制器

用户现在可以像在编辑器播放模式下的手一样模拟运动控制器。 目前支持触发器、抓取和菜单按钮。

圆锥形抓取指针

现在可以将抓取指针配置为使用从抓取点(而不是球体)使用锥形查询附近的对象。 这更类似于默认HoloLens 2接口的行为,该接口使用圆锥查询附近的对象。 DefaultHoloLens2InputSystemProfile 也已调整为使用新的 ConicalGrabPointer

锥形抓取指针

TestUtilities 包

现在有一个包 (Microsoft.MixedReality.Toolkit。Unity。TestUtilities.2.5.0.unitypackage) ,其中包含 MRTK 用于创建端到端测试的 PlayMode 和 TestMode 测试基础结构。 此基础结构对于 MRTK 团队本身来说非常方便,我们很高兴让消费者使用它将测试覆盖范围添加到自己的项目中。

以下代码演示如何创建测试手,将其显示在特定位置,移动它,然后捏合和打开。

TestHand leftHand = new TestHand(Handedness.Left);
yield return leftHand.Show(new Vector3(-0.1f, -0.1f, 0.5f));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Pinch);
yield return leftHand.Move(new Vector3(0.2f, 0.2f, 0));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Open);

有关如何使用这些 TestUtilities 编写测试的说明,请参阅有关 编写测试的此部分。

有关使用此基础结构的现有测试的示例,请参阅 MRTK 的 PlayModeTests

支持 Leap Motion 4.5.1 Unity 模块

添加了对 Leap Motion Unity模块版本 4.5.1 的支持,并且已删除对 4.4.0 资产的支持。 Leap Motion Unity 模块的当前支持版本为 4.5.0 和 4.5.1。

初始 Leap Motion 集成还有一个附加步骤,有关详细信息,请参阅 如何在 MRTK 中配置 Leap Motion 手部跟踪

空间感知网格观察程序可以更好地处理材料的自定义

在此版本中, Windows Mixed Reality Spatial Mesh ObserverGeneric XR SDK Spatial Mesh Observer 组件改进了视觉材料处理。 当观察程序更新网格时,材料现在会保留,此前,这些网格已重置为配置文件中配置的默认 VisibleMaterial。

这使开发人员能够更改网格材料,并且不会意外覆盖更改。

在 MixedRealityToolkit.Generated 文件夹中创建的 Link.xml

随着 Unity 包管理器 MRTK 的引入,MRTK 现在会将文件写入link.xmlAssets/MixedRealityToolkit.Generated文件夹(如果没有文件)。 建议 (添加此文件,) link.xml.meta 添加到源代码管理。 Link.xml 用于影响Unity链接器托管代码剥离功能。

有关 MRTK link.xml 文件的详细信息,请参阅 MRTK 和托管代码剥离 一文。

Unity 2019.3+:MRTK 配置对话框不再尝试启用旧版 XR 支持

为了避免在使用 Unity 的 XR 平台时发生潜在冲突,已从 MRTK 配置对话框中删除了启用旧版 XR 支持的选项。 如果需要,可以在 2019 Unity使用编辑>项目设置>播放器>XR 设置>虚拟现实支持来启用旧版 XR 支持。

减少 InitializeOnLoad 开销

我们一直在努力减少 InitializeOnLoad 处理程序中运行的工作量,这应该可以提高内部循环开发速度。 每次编译脚本时,在进入播放模式之前,以及编辑器启动时,InitializeOnLoad 处理程序都会运行。 这些处理程序现在运行的情况要少得多,因此通常Unity响应能力得到改进。

在某些情况下,必须进行权衡:

边界控件已分级

边界控件

边界控制 从实验阶段逐步淘汰,并附带了一系列新功能和大量 bug 修复。 下面是此更新的亮点列表:

  • 属性拆分为配置,以便更轻松地设置边界控件
  • 可以通过可编写脚本的对象共享配置
  • 每个属性/可编写脚本的属性都是运行时可配置的
  • 边界控制钻机不再在属性更改上重新创建
  • 翻译句柄支持
  • 通过约束管理器提供完全约束支持
  • elastics system integration (experimental)

旧的边界框现已弃用,可以使用 迁移工具 或边界框 检查器升级使用边界框的现有游戏对象。

约束管理器组件

现在,边界控件和对象作器都可以通过新的 约束管理器组件使用约束。 这两个组件将按默认值创建约束管理器,并自动处理任何附加的约束。

此外,自动行为约束管理器还附带了一个手动模式,允许用户决定应处理哪个约束。 因此,在属性检查器中显示约束的方式发生了一些变化。

显示手动约束管理器选择的检查器视图

应用于组件的约束现在显示为约束管理器组件中的列表,而使用约束管理器的组件 (边界控件对象作器) 现在将显示所选的约束管理器和模式 (自动或手动) 。 有关详细信息,请阅读文档中 的约束管理器 部分。

HoloLens 2按钮材料更新

更新了HoloLens 2按钮的前笼材料,以消除 MRC 中的黑色。

HoloLens 2按钮材料更新

说明面板更新,可移动的示例场景

更新了说明面板。 (SceneDescriptionPanelRev.prefab) 新设计提供了一个可抓取的顶部栏,允许用户调整/移动整个场景。

说明面板更新

空间网格可视化 - 空气点击上的脉冲

更新了空间网格的脉冲着色器示例,以匹配HoloLens 2的 shell 行为。

气龙头上的脉冲

弹性系统 (实验性)

Elastic System2

MRTK 现在附带了一个 弹性模拟系统 ,该系统包括各种可扩展和灵活的子类,为四维四元数弹簧、三维体积弹簧和简单的线性弹簧系统提供绑定。

目前,支持 弹性管理器 的以下 MRTK 组件可以利用弹性功能:

展开弹性菜单 抓取弹性咖啡杯

游戏杆 (实验)

可控制大型目标对象的游戏杆接口示例。

操纵 杆

颜色选取器 (实验性)

一个实验性控件,可在运行时轻松更改任何对象上的材料颜色。

颜色选取器控件的三种不同方法

颜色选取器控件的四种不同方法

中断性变更

程序集定义文件更改

某些 asmdef 文件已更改,现在仅支持 Unity 2018.4.13f1 或更高版本。 在早期版本的 Unity 中更新到 MRTK 2.5 时,会出现编译错误。 可通过在项目窗口中转到 Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef 并删除检查器中缺少的引用来解决此问题。 使用 Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdefAssets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef重复这些步骤。 请注意,必须还原更改,方法是将这三个 asmdef 文件替换为原始 (,即升级到 2019 Unity时未修改的) 文件。

IMixedRealityPointerMediator

此接口已更新为具有新函数:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

如果你有一个不子类 DefaultPointerMediator 的自定义指针中介,则需要实现此新函数。 有关添加 此内容 的原因的更多背景信息,请参阅此问题。 添加此项是为了确保将指针首选项显式传递给中介,而不是基于采用 IPointerPreferences 的构造函数的存在隐式完成。

Rest/Device Portal API

静态 UseSSL 属性已从 RestDevicePortal移到 。

如果以前这样做过...

Rest.UseSSL = true

立即执行此作...

DevicePortal.UseSSL = true

Link.xml

如果应用程序以前使用 MRTK 的 NuGet 分发,则 link.xml 该文件已从基础包中删除。 若要还原代码保留规则,请在 Unity 中打开项目一次将在 中创建Assets/MixedRealityToolkit.Generated默认link.xml文件。 建议将此文件 (并 link.xml.meta) 添加到源代码管理。

转换约束更改

TargetTransform 属性已标记为已过时,因为它未被约束系统使用。 约束逻辑基于传递到 Initialize 和 Apply 方法的转换。 依赖于此属性的派生用户约束可以通过存储约束组件的转换来实现相同的行为,在其实现中缓存 TargetTransform。

存储的初始世界姿势 worldPoseOnManipulationStart 数据类型已从 MixedRealityPose 更改为 MixedRealityTransform,其中包括作对象的本地刻度值。 通过此更改,不再需要单独缓存任何初始缩放值。

IMixedRealityDictationSystem 中的新属性

已将新属性 AudioClip 添加到 IMixedRealityDictationSystem 接口。 属性 AudioClip 允许访问与当前听写会话关联的音频剪辑。 用户必须在实现 接口的脚本中实现 属性。

服务外墙调低

服务外墙在 2.5 中被关闭。 最初添加此功能是为了让 MRTK 配置文件的配置更容易 (,方法是创建表示 MRTK 的每个服务) 的假场景内 GameObject。 从长远来看,我们希望避免创建虚假的游戏内对象,并尝试使它们保持同步 (,因为数据同步和“事实来源”问题非常难以缩放和获得正确的) 。

在 2.5 中,保留服务外观处理程序,以确保项目升级顺利进行 - 服务外观处理程序将删除项目中存在的任何外墙,以确保在 2.5 中打开的场景得到自动修复。

与服务外观功能关联的剩余代码将在将来的版本中删除。

将运动控制器添加到输入模拟服务

运动控制器模拟现在与现有手部模拟一起以编辑器播放模式提供。 若要启用此更改,许多当前函数/字段/属性现在标记为已过时,并InputSimulationService.csMixedRealityInputSimulationProfile.cs获取最重要的更改。 相关代码的逻辑和行为基本上保持不变,大多数过时的函数等都与将对“hand”的引用替换为更通用的术语“控制器” (例如 from DefaultHandSimulationMode to DefaultControllerSimulationMode) 相关。 除了获取新名称外,某些新函数的返回类型会更新,以匹配名称/行为更改 (例如 GetControllerDevice ,基于原始 GetHandDevice 现在返回 BaseController 而不是 SimulatedHand) 。

IInputSimulationService 现在具有新的属性 MotionControllerDataLeftMotionControllerDataRightMixedRealityInputSimulationProfile 现在包括某些运动控制器按钮的键盘映射的新字段。

已知问题

CameraCache 可能会在关闭时创建新相机

在某些情况下, (例如,在Unity编辑器) 中使用 LeapMotion 提供程序时,CameraCache 可以在关闭时重新创建 MainCamera。 有关详细信息 ,请参阅此问题

通过 Unity 包管理器导入示例时,FileNotFoundException

根据项目路径的长度,通过 Unity 包管理器导入示例可能会在 Unity 控制台中生成 FileNotFoundException 消息。 原因是“缺失”文件的路径长度超过 MAX_PATH () 256 个字符。 若要解决此问题,请缩短项目路径的长度。

未指定空间化器。 应用程序将不支持空间声音

如果未配置音频空间化器,将显示“未指定空间化器”警告。 如果未安装 XR 包,则可能会出现这种情况,因为Unity这些包中包含空间化器。

若要解决此问题,请确保:

  • 窗口>包管理器 已安装一个或多个 XR 包

  • 混合现实工具包>实用工具>配置Unity项目并针对音频空间化器进行选择

    选择音频空间化器

NullReferenceException:对象引用未设置为对象实例 (SceneTransitionService.Initialize)

在某些情况下,打开 EyeTrackingDemo-00-RootScene 可能会导致 SceneTransitionService 类的 Initialize 方法中出现 NullReferenceException。 此错误是由于未设置场景转换服务的配置文件。 若要解决此问题,请使用以下步骤:

  • 导航到 MixedRealityToolkit 层次结构中的 对象
  • 在“检查器”窗口中,选择 Extensions
  • 如果未展开,请展开 Scene Transition Service
  • 将 的值 Configuration Profile 设置为 MRTKExamplesHubSceneTransitionServiceProfile

修复场景切换

Oculus Quest

目前,在 面向独立平台时,使用 Oculus XR 插件时存在一个已知问题。 查看 Oculus bug 跟踪器/论坛/发行说明以获取更新。

该 bug 表示为以下 3 个错误集:

Oculus XR 插件错误644204

UnityUI 和 TextMeshPro

较新版本的 TextMeshPro (1.5.0+ 或 2.1.1+) 存在已知问题,其中下拉列表的默认字体大小和粗体字体字符间距已更改。

TMP 映像

可以通过降级到早期版本的 TextMeshPro 来解决此问题。 有关更多详细信息 ,请参阅问题 #8556