Microsoft 混合现实工具包 2.7 发行说明

2.7.3 中的新增功能

Redmond 特别致谢

MRTK 团队要向 MRTK 社区表示热烈的感谢。 你的发布、反馈和投票帮助 MRTK 赢得了 2021 Auggie Award 最佳开发工具奖! 没有你的支持,我们就不会有今天的成就。 无论是添加新的平台支持、新的功能、bug 修复、建议、问题,还是其他任何贡献方式:谢谢你!

2021 Auggie Awards Best Developer Tool

Unity 2021 支持

随着 2.7.3 版本的发布,在 Unity 2021 上的构建变得更加容易了! 如果你在使用 MRTK 和 Unity 2021 时发现任何问题,请在我们的 GitHub 存储库中提交问题

通过遥控支持提供的场景理解(仅 OpenXR)

在 HoloLens 2 上使用 OpenXR 平台遥控的过程中,现在可以使用场景理解。

MRTK 2.7.3 的 bug 修复和变化

  • 已停止创建 CustomProfiles 文件夹,除非配置文件已克隆到该文件夹 #9916
  • 已删除 GameObjects 上对 .gameObject 的调用 #9939
  • 已修复一个 bug,即包含禁用组件的对象可能导致指针被焦点锁定 #9945
  • 已更新弃用的方法并已修复 Unity 2021 的编译器错误 #9938
  • 已修复 Unity 2021 的 link.xml#9942
  • 已更新按钮配置检查器以显示图标名称 #9972
  • 已更新控制器映射列表的页眉和对齐 #9976
  • MRTK 的各种 Unity 改进 #9940
  • 已修复 BoundsControl 碰撞器问题和不一致性 #9973
  • 已修复按钮图标集检测器 #9999
  • 已修复 BoundsControl 缩放句柄碰撞器对齐 #10007
  • 已修复 SDF 字体纹理分类 #10006
  • 已修复 BoundsControl 自动展平和缩放句柄定向 #10013
  • 已提交 BoundsControl 展平修复的反馈 #10016
  • 已修复动画播放过程中手部网格的奇怪变形问题 #10024
  • 已修复场景理解的日志记录和 SpatialAwarenessSurfaceTypes#10026
  • 在 Leap 示例场景脚本中添加了独立的定义指令 #10036
  • 已修复在编辑器中制定非默认激活类型时的 BoundsControlOnEnable 问题 #10039
  • 已修复 OpenGL ES 和 Metal 的无效着色器字节码错误 #10041
  • 添加了 ClearProgressBar 调用来修复 Unity 2020 上的生成窗口冻结问题 #10046
  • 更新了字体资产的序列化 #10047
  • 修正了手部互动场景,使其具有正确的捏合滑块碰撞器 #10060
  • 修复了 Surface Magnetism 四元数学问题 #10074
  • 改进了 PV 相机版本消息 #10077
  • 修复了 BoundingBoxHelper.GetRawBoundsCorners 保护级别 #10093
  • 更新了 gLTF 导入日志,使其成为一个日志,而不是多个 #10090
  • 从不包含 MRTK 的场景中移除了 MRSceneContent 脚本 #10091
  • 为了兼容 Unity 2018,从示例场景中删除了基于包的事件系统 #10092
  • 删除了对 Microsoft OpenXR 预览包的支持 #10119
  • 修复了接收数据时冻结的应用 #10033
  • 修复了在从具有 EyeTrackingTarget 的碰撞器传递到不具有 的碰撞器,EyeTrackingTarget 不触发 OnLookAway 的问题 #10127
  • 改变了默认的指针范围,使鼠标指针的行为更加直观 #10075
  • 更新了摘要,澄清了 Initialize 的运行时间 #10177
  • 修复了 LinePointer 中的 NullReferenceException 问题 #10190
  • 修复了 BoundsControl 的非一致缩放问题 #10133
  • 修复了在不同区域中处理 IOSMinOSVersion 的问题 #10178
  • 移除了已启用眼球注视的物体的额外射线辐射 #10162
  • 在编辑器检查器中将鼠标悬停在 MixedRealityToolkit 预制件的各种配置文件上时增加了工具提示 #10180
  • 修复了 EyeTrackingExample 中的语音命令下拉和更新命令 #10197
  • 修复了“gLTF”对象在使用 Unity 的标准着色器加载时显示为黑色的问题 #10209
  • 修复了当 IsEnabled 属性为 false 时 UnityTouchDeviceManager 更新自身的问题 #10203
  • 更新了按钮配置帮助程序中的属性名称 #10221
  • 修复了对象导出器中的坐标空间、缠绕顺序和文化格式问题 #10208
  • 增加了将抓取点移至指尖的选项 #10206
  • 添加了 Leap UnityModules 4.9.1 的支持 #10282
  • 将某些细微更改向后移植到 ReserializeAssetsUtility.cs#10280
  • enumValueIndex 的错误使用转换为 intValue#10274
  • 修复了在近距离操纵时物体漂移的问题 #10294
  • 修复了边界控制会主动删除其他组件的情况 #10296
  • 修复了近距离照明闪烁的问题 #10325
  • 增加了检查,看看是否有东西与事件挂钩,然后再决定是否启动这些事件 #10330
  • 进行了各种各样的细小更改 #10316
  • 引入了 .HasFlag 的替代方法 #10319
  • 减少 HandConstraint 求解器调试日志垃圾邮件 #10331
  • 修复了来自 HandConstraintPalmUp.cs 的日志垃圾邮件 #10326
  • 通过 OpenXR 实现全息遥控的场景理解 #10338
  • 向 InteractableOnClickReceiver 添加无参数的构造函数 #10353
  • FingerChaser 预制件移动到示例包中的常见文件夹 #10358
  • 为 OpenXR 上的清晰手部选择增加了回退案例 #10359
  • 修复了 Windows Mic Stream 演示 UPM 导入问题 #10362
  • 已重命名 OpenXR 配置文件 #10363
  • 改进了 Unity 2021 的射线传输命中日志输出,并修复了使用 AssetBundles 时的崩溃问题 #10370
  • 将字符串更新为 const 和 cache 类型以减少 allocs #10369
  • 修复了使用基于应用的全息遥控时基于 XRSDK 的网格观察器 #10366
  • 集成了 Oculus Visualization #10067
  • 添加了 BoundsControl 属性的文档 #10361
  • 修复了 Hand Joint Chaser 预制件 #10377
  • 修复了 Oculus 的部署错误 10374
  • 修复了场景理解示例场景配置文件的问题 #10368
  • 修复了在 Unity 2021.2 最新版本中导入时的 MRTK 控制台错误 #10182
  • 添加了有关如何更改游标的缺失文档 #4934
  • 改进了 MRTK Unity 软件包发布页面上的说明,使其更加清晰 #9575
  • 修复了 MicStream 选择演示场景未处理语音 (UPM 包) 的问题 #9908
  • 修复了无法在 MRTK 示例包中单独导入样本的问题 #10216
  • 添加了 BoundsControl 缺少某些属性的文档 #10346
  • 修复了无法将 InteractableOnClickReceiver 添加到具有不可交互组件的游戏对象的 bug #10341

2.7.2 中的新增功能

修复了一个 UPM 包依赖关系问题

MRTK 2.7.1 UPM 包中存在一个未正确设置依赖关系的问题。 该问题会导致混合现实功能工具无法正确导入 MRTK 2.7.1 包。 该问题现已在 2.7.2 中得到解决。 与 2.7.1 相比,此版本中的代码未有更改。

2.7.1 中的新增功能

显示版本

“混合现实”>“工具包”菜单现在包含一个“显示版本…”项,该项可用于检查混合现实工具包基础包,以确定项目所使用的 MRTK 版本

Show version menu

MRTK version dialog

注意

如果 MRTK 是从 GitHub 存储库克隆的,则不会设置版本信息。

Unable to determine version

作者列表

从 MRTK 2.7.1 开始,混合现实工具包基础包中包含了作者列表文件。

在配置器设置流中集成了 OpenXR 项目设置

从 MRTK 2.7.1 开始,混合现实 OpenXR 插件的用户将收到有关如何通过 MRTK 设置该插件的说明。 有一个选项可供以 HoloLens 2 为目标的用户自动应用建议的设置。

Configurator window with OpenXR setup instructions

值得注意的 Bug 修复和更改

  • 已将 Unity Joystick Manager 标记为在 XR SDK 管道上受支持 #9954#9994
  • 添加了对可交互检查器代码的检查,以防止出现 null 错误 #9943
  • 在脉冲着色器示例场景中添加了 OpenXR 网格提供程序 #9902
  • 在示例场景中还原了手部物理特性配置文件 #9915
  • 清理了部分 HandConstraint 脚本 #9935
  • 修复了一些会影响创建和克隆配置文件的 bug #9982

2.7.0 中的新增功能

OpenXR 现已在 MRTK 中正式受支持

随着新的 OpenXR 插件变得更加成熟,MRTK 现已正式支持 OpenXR。 与以前的版本相比,我们在使用 OpenXR 的项目中添加了以下功能:

如果你通过 OpenXR 将 HoloLens 2 或 Windows Mixed Reality 头戴显示设备用作目标,请确保通过混合现实功能工具安装/更新到混合现实 OpenXR 插件版本 0.9.5 或更高版本,否则你可能会错过上述某些改进

现在可以在同一配置文件中使用旧版 XR 和 XR SDK 数据提供程序

现在,仅当选择了相应的管道时,才会加载数据提供程序,使得旧版 XR 和 XR SDK 数据提供程序可共存于同一个配置文件中。 为了适应这一点,旧版 XR 和 XR SDK 数据提供程序现通过配置文件视图中的不同选项卡进行整理。 这种整理应帮助确定是否已为目标 XR 管道选择正确的配置文件。

Legacy and XR SDK data providers can now be unified under a single profile

为了适应这种变化,null 数据提供程序现在不再会加载并显示在配置文件检查器中。 用户可以在“编辑”->“项目设置”->“混合现实工具包”下切换 Show null data providers in the profile inspector,以调试在缺少数据提供程序时发生的意外行为

Null data providers are now hidden by defaultToggle show null data providers in the profile inspector

添加了体验设置和一个关联的混合现实场景内容行为

用户现在可以配置体验设置,使得 MRTK 能够根据目标体验适当显示混合现实场景内容

如果用户以前的“体验规模”设置与新的体验设置配置文件不匹配,系统会提示他们在检查器中进行更正。

Experience Scale Migration

重新设计的配置器现在会指导用户完成设置过程

新的 MRTK 配置器为用户提供分步指导,使他们能够正确配置项目以进行 XR 开发,并将其与 MRTK 配合使用。 在该配置器中可以选择 XR 管道、获取特定于平台的插件、导入 TextMeshPro,并显示示例(在使用 UPM 时)以及以前包含的为项目建议的设置。

Configurator showing the pipelines list

正式推出了传送热点

已正式推出一个新的传送热点组件。 你可以将传送热点添加到 GameObject,以确保用户在传送到特定位置时处于该特定位置和方位。

Teleport Hotspot example

正式推出了停留功能

在经过试验后,停留功能和示例现已正式推出。 示例场景中包含容积型 HoloLens 2 样式按钮的新示例。

Dwell hero

添加了对 Leap Motion Unity 模块版本 4.6.0、4.7.0、4.7.1 和 4.8.0 的支持

对最新版 Leap Motion Unity 模块的支持现在与 MRTK 2.7.0 兼容。 有关详细信息,请参阅如何为 Leap Motion 配置 MRTK

非常感谢 @jackyangzzh 为新的 LeapMotionOrientationExample 场景所做的贡献!

引发的目标语音事件不再局限于凝视指针

以前,只能对通过凝视指针聚焦的对象引发目标语音事件。 现在,通过任何指针聚焦的对象都可以接收语音事件。

Speech Events with Far Pointers

TextToSpeech 从 HTK 移植到了 MRTK

广受欢迎的 TextToSpeech 脚本现在终于可在 MRTK 中使用,以便帮助你在 UWP 平台上使用 SpeechSynthesizer 从文本生成语音。 此外还添加了一个示例场景来演示该功能。

OpenXR 上支持系统提供的运动控制器模型

在 OpenXR 上添加了对系统提供的运动控制器模型的支持(在编辑器中以及在运行时)。

Editor window showing two motion controller models

OpenXR 上支持 HoloLens 2 铰接式手部网格

The hand mesh running on-device in an MRTK example scene

旧版 WMR、Windows XR 插件和 OpenXR 均支持控制器触觉

添加了旧版 WMR、Windows XR 插件和 OpenXR 对控制器触觉的支持。 #9735

Windows XR 插件支持眼动跟踪

添加了在使用 Windows XR 插件最低版本 2.7.0 (Unity 2019)、4.4.2 (Unity 2020) 和 5.2.2 (Unity 2021) 时的眼睛凝视支持。 #9609

值得注意的 Bug 修复和更改

  • 捏合检测变得更顺利。 现在更不容易出现意外中断捏合手势的情况。 #9576
  • 现在,在设置标志后,具有对象操控器组件的对象在释放时会持续保持速度。 #9733
  • 向后扫射现在会查找地面,帮助防止摄像头固定到环境中或用户将光标悬停在空白空间上的情况。#9697
  • IsNearObject 现在是一个虚拟属性,可让用户更灵活地展开球体或戳击指针。 #9803
  • 在显示可用的语音命令时,按钮现在会显示正确的关键字。 #9824
  • Oculus 控制器现在使用自身的独立可视化工具,防止 MRTK 可视化效果与 Oculus 集成包的可视化效果相冲突。 #9589
  • 与键盘相关的脚本已更改,以便与最新 Unity 版本(2019.4.25+ 和 2020.3.2+)的行为相一致。 在该版本中,仍然存在会影响 HoloLens 的自动完成 bug 和 TMP 输入字段 bug(这两个 bug 都出现在 MRTK 的外部)。 有关详细信息,请参阅 #9056#9724
  • 改进了滚动对象集合的性能。 此外,还修复了一个导致集合中的 GameObject 在复制后丢失材料的问题。 #9813#9718
  • 在场景理解演示脚本中,添加了 GetSceneObjectsOfType 函数以检索特定种类的所有已观测到的场景对象。 #9524#9744
  • 在命令行生成工具中,只会将 sceneListsceneListFile 标志(如果存在任一标志)指定的场景包含在生成中。 #9695
  • 在生成工具中,有一个新选项可用于指定 nuget.exe 的路径,并使用该路径执行包还原,而无需使用 msbuild(默认选项)。 #9556
  • 修复了使用 Windows XR 插件可能会导致手关节僵硬和手部网格数翻倍的问题。 #9890
  • 修复了使用 Windows XR 插件的自动远程控制功能导致丢失输入和交互的问题。 #9868
  • 修复了 BuildDeployWindow 尝试在无效注册表项中查询 Windows SDK 路径的问题。 #9664
  • MRTK 的 glTF 导入器现在是可选的。 如果存在多个 glTF 导入器,可以通过将 MRTK_GLTF_IMPORTER_OFF 添加到自定义脚本定义符号来禁用 MRTK 的导入器。 #9658
  • 修复了无法正常检测 OpenVR 上的指节控制器的问题。 #9881
  • 减少了可视化手部网格时的每帧分配数 #9756
  • 添加了一个菜单项用于启动 MRTK 示例包(在 Unity 包管理器中),以便更轻松地导入示例 #9798
  • 减少了使用 Unity 2020.3 时显示的加载时间警告数。
  • 添加了生成窗口功能文档:访问页面

已知问题

音频演示缺少 asmdef 文件(UPM 包)

通过混合现实功能工具导入 MRTK 时,会使用 Unity 包管理器 UI 将示例和演示添加到项目。 导入音频演示后,WindowsMicrophoneStreamDemo.unity 场景将无法正常运行。 这种行为是示例缺少 asmdef 文件所致。

若要解决此问题,请执行以下步骤:

  • 将 Library/PackageCache/com.microsoft.mixedreality.toolkit.examples@[...]/MRTK.Examples.asmdef 复制到“Assets/Samples/Mixed Reality Toolkit Examples”文件夹中
  • 将复制的文件重命名为 Examples
  • 打开 Examples 文件
  • 在“名称”框中,将内容替换为 Examples
  • 单击“应用”
  • 构建和部署

将来的 MRTK 版本将修复此问题。

MRTK 生成窗口在 Unity 2020.3 中不停地触发“正在导入资产”对话框

Unity 2020.3 上的 MRTK 生成窗口存在一个已知问题,其中“导入资产”对话框在 UWP 生成后未完成。 Unity 正在调查此问题。

Unity 2020 中出现 Text Mesh Pro 画布渲染器警告

使用 Unity 2020 时,大部分 MRTK 示例场景中都会记录以下警告:

Please remove the `CanvasRenderer` component from the [TextMeshPro] GameObject as this component is no longer necessary.

TextMeshPro 版本 3.0.3 中添加了画布渲染器警告。 这些警告不会影响 MRTK 的示例场景,可以从控制台中清除。 有关详细信息,请参阅问题 9811