微软最初在6月初的混合现实开发者大会发布了MRTK3 公共预览版,并表示会以每两周-四周的频率进行更新,而GA通用版本则计划于2022年秋季或冬季与大家见面。
微软的开源项目Mixed Reality Toolkit(MRTK)旨在帮助开发者轻松利用Unity开发跨平台MR应用,它同时允许开发者通过编辑器模拟轻松进行原型设计,并立即查看相应的改动。
这个MRTK提供了丰富的组件,用于手和眼追踪、输入、解算器、诊断工具、场景管理等的组件可以帮助你用更少的时间来搭载更出色的体验。通过MRTK构建的体验可以兼容任何支持OpenXR运行时的设备,例如HoloLens和MetaQuest。
对于全新的MRKT3,开发者届时可以选择更轻量级的解决方案。它允许你仅选择所需工具包的组件,而且提供了一个新的交互系统、新的主题和数据绑定功能、Unity画布支持,以及更新的设计语言。另外,本机OpenXR支持更容易定位多个设备,如HoloLens、Meta Quest、Windows Mixed Reality和未来支持OpenXR的设备。
1. 模块化打包
微软已经将MRTK分为一系列的模块化软件包。你可以根据实际独立安装和更新软件包,从而大大减少利用相关功能所需的MRTK代码量。
MRTK3完全支持OpenXR和Unity的XRI工具包。MRTK3的目标之一是,将团队从MRTK2中学到的一切,与在OpenXR和Unity的行业合作伙伴的知识和进步相结合,从而允许MRTK能够更加专注于提供与众不同的产品和全面改进的用户(和开发人员)体验。
2. OpenXR
OpenXR是Khronos提供的一种开放免版税API标准,在混合现实范围内为引擎提供了对一系列设备的原生访问。Unity提供了一个OpenXR插件,为渲染、头部追踪和控制器输入等功能提供了核心规范的集成。微软提供的Mixed Reality OpenXR Plugin基于Unity插件,并增加了对HoloLens 2等设备的相关附加功能支持。微软特定的新增功能包括空间映射和平面、空间锚点和可定位camera等。它同时通过跨供应商的OpenXR扩展增加了对手关节追踪的支持。
3. XR交互工具包
MRTK3将Unity XR Interaction Toolkit(XRI)作为输入抽象、交互和操作的基础。大多数MRTK3只是XRI提供的交互原语之上的一层。所以,MRTK3不再是一个定制的交互和输入系统,而仅仅是XRI框架和社区中的“守法公民”。事实上,Unity的XRI是在MRTK团队的投入下构建,微软与XRI团队进行了频繁的同步,不断提供反馈,帮助解决错误,并确保MRTK系统是按照XRI框架的精神构建。
这种方法的最大优点之一是,MRTK3与其他基于XRI的XR应用程序和交互系统高度兼容。例如,现有的未修改XRI项目和应用可以利用MRTK3可交互功能,如体三维UI控件、ObjectManipulator和BoundsControl。另一方面,MRTK3项目可以使用现有的XRI可交互对象,甚至XR rig本身都是高度灵活和兼容的,定制rig可以在没有任何MRTK代码的情况下进行使用。
最重要的是,微软可以依赖XRI提供的坚实交互系统,并专注于MRTK最擅长的方面,如操作全息图的新方法。令人鼓舞的是,XRI已经在整个行业得到了广泛的采用,并在XR领域产生了相当的兴奋。团队表示:“我们非常自豪能在这方面与Unity合作,我们同时非常期待看到这次合作将释放出什么样的机会,特别是当我们将MRTK的开箱即用兼容性扩展到更广泛的XR应用时。”
4. 体三维UI
MRTK3引入了与Unity的RectTransform+Canvas系统集成的体三维UI。尽管RectTransform和Canvas过去主要用于2D平面UI,但它们完全能够渲染和布局三维立体UI。MRTK3包括用于3D UI的系统和预置,加快了设计迭代,并在设计体三维用户界面时提高了保真度和细节的标准。
对于MRTK2,构建UI非常困难,尤其是在需要任何动态布局或集合的情况下。基于RectTransform的UI工具可以完全重新创建UI工作流。Unity的布局组可以用于内容的动态和灵活安排,就像用于传统平面UI一样。默认情况下,设计师期望从现代设计工具中获得的众多基本功能都包括在内,如调整大小、响应布局、对齐、锚定、边距和填充等等。
与手工计算尺寸、有损缩放操作和脆弱的静态布局不同,UI的构建方式与设计师使用其他现代表示框架的方式大致相同。布局由水平、垂直和网格状组构建,并且完全可组合和响应。面板、窗口和场记板的大小可以从动态数量的子元素中膨胀,并且可以在运行时立即响应时编辑、重新排序和删除子元素。
另一个优势是,通过在Canvas/UnityUI系统下统一UX控件,我们可以利用Unity的跨平台UI输入系统,在默认情况下启用定向导航和gamepad输入。开箱即用,你将在相同的体三维UI控件获得丰富的gamepad支持,并通过手动追踪来操作控件。
这同时是无障碍性的一大胜利,因为大多可访问性输入和控制器需要传统的2D gamepad类型输入模式。在架构方面,传统的2D输入调用完全相同的事件,并与高级XR交互完全相同,这意味着与UI交互的每种方法都有一个单一的代码路径。
所以,构建production-grad UI非常容易,并且更易于维护,可以跨更大的团队和更成熟的设计进行扩展。这对团队而言至关重要,因为他们需要更成熟、更稳健、更可维护的UI系统。另外,它允许减少预制变量的数量和搅动,因为不再需要为UI控件大小或配置的每个排列都提供大量的预制。这使得更大规模的团队能够协同工作,同时保持设计语言在大型复杂布局中的一致性和完善性。
5. 新的混合现实设计语言
在MRTK3中,微软基于Mesh应用引入的新设计语言提供了更新的UI构建基块。在过去的几年中,团队从大量不同的项目和实验中积累了经验教训。新的混合现实设计语言是设计师、研究人员和工程师多次设计迭代的结果。
以下是部分变化:圆角几何设计,带来更亲切友好的体验 更新的视觉系统(网格和模块),以支持各种类型的混合现实UI场景 改进了多模式输入的视觉反馈 模块化背板系统,用于构建清晰可用的复杂布局 更新了边界框视觉效果,以减少视觉噪点并实现流畅的注视点交互
6. 先进交互
6.1 注视
MRTK3旨在帮助用户尽可能轻松地使用注视与对象进行交互。为了实现这一点,团队极大地改进了注视定位的实现,并引入了一种新的一流的交互类型;注视捏合操作。
目标瞄准改进:
在MRTK2的大部分时间里,注视定位是一个有限的功能。你可以调整最小和最大注视距离,用户的眼睛注视捕获为追踪用户眼睛注视的单个光线投射。然而,它很难定位较小的对象,并且需要用户保持专注、稳定的注视以瞄准目标。
在MRTK3中,团队极大地改进了这个实现。用户的眼睛注视现在由几个球体图标表示,每个球体图标的精确度都在提高。然后,通过指定锥角,可以将覆盖范围进一步细化为圆锥体。这允许对与用户视线不直接对齐的对象进行定位,从而大大减少了对较小对象进行定位和瞄准定位所需的工作量。与此相结合,微软同时开发了一种更智能的算法,以对用户眼睛注视捕捉到的所有潜在目标进行评分,并使用距离和角度等不同因素来确定用户最有可能选择的目标。
所有这些参数都可以在设计时和运行时由开发人员进行调整,从而为开发人员提供了以最适合其需要的方式调整注视的灵活性。
6.2 注视捏合
眼睛注视不仅仅是被动瞄准和选择对象的好方法;这同时是确定用户意图和焦点的一种很好的方法。与基于手部追踪的操纵手势配合使用时,它的功能尤其强大。微软开发了一种令人愉快且功能强大的新方法,用户可以通过注视定位和更精细的手势来操纵对象,从而减少交互过程中的精神和身体疲劳。
注视捏合利用上述新的模糊注视算法。首先确定用户想要操纵的对象。然后,用户可以使用手指和手来操纵对象,就像它就在附近一样,并使用捏、抓和其他熟悉的输入手势。
6.3 默认情况下为多手交互
在MRTK2中,无论是直接操作全息图还是使用手射线,用户都能享受到直观的多手交互。微软已经进行了大量的交互设计迭代来完善多手交互。
在MR环境中,用户希望至少能够使用双手,这使得多输入交互比以往任何时候都更加重要。在MRTK3中,由于与Unity的XRI框架的协作,默认情况下,所有interactable都可以由多个Interactor进行交互。使用XRI明确定义的交互状态和事件,开发者可以在考虑多输入的情况下设计可交互的内容。这意味着一个按钮现在可以被多个输入源按下,并且可以在这些输入源中的任何一个结束其选择时保持按下状态。
在MRTK3中,团队将多手交互提升到了一个新的层次。用于处理任意数量的参与交互者的友好API使构建更复杂的多手交互变得容易。在MRTK2中,多手交互主要用于ObjectManipulator和BoundsControl;现在,默认情况下,它包含在每个interactable中,用户可以期望所有对象同时对任意数量的输入做出合理的反应。按钮、滑块甚至绘图表面都会响应任意数量的交互,而无需开发人员手动追踪每个输入。
6.4 变量选择性
混合现实基本上是一种高度“模拟”的输入场景;用户与全息图交互的大多数方式都是可变的、模拟的,甚至有时是由用户的身体主观决定的。所以,我们面临着一组来自用户的高度“模糊”输入,以及一组必须响应这些可变输入的可交互对象和行为。受这一挑战的激励,MRTK3引入了变量选择的概念,允许用户部分选择对象,并使用多种输入模式。
在内部,interactables有一个selectedness变量,它是所有悬停和选择Interactor返回的最大selectedness。对于实现IVariableSelectInteractor的Interactor,可以使用挤压强度、触发压力或开发人员决定实现的任何内容来计算。对于所有其他Interactor,它是0还是1取决于Interactor当前是否正在选择。
这种选择性的定义是完全可扩展的,无论你决定使用什么interactor,MRTK3 interactable都能够响应它,无需更改其任何底层源代码。
6.5 交互模式
在MR中,用户有多种方式与对象交互,不再局限于单一的鼠标指针/手指/控制器。为了更好地利用多个“控制器”给人们带来的优势,MRTK3引入了交互模式的概念。每个交互模式指定一组处于活动状态的interactor,每个控制器在任何给定时间都处于单一交互模式。这允许开发人员灵活地允许每个控制器处于不同的交互模式,或将它们全部同步到相同的模式。如果用户需要用一只手操纵附近的对象,而用另一只手瞄准远处,这将非常有用。
根据在交互模式管理器中定义的顺序优先启用。这使得通过模式检测器分配模式成为一种单调操作,无论模式变化的顺序如何,最终都会将具有最高优先级的模式分配给相关控制器。
7. 数据绑定
在MRTK3中,微软提供了使构建动态UI更容易的工具。他们提供了一个用于获取、绑定和消费各种动态数据的框架。这包括将文本绑定到UI,动态更新材质和纹理,甚至绑定更复杂的数据,如音频片段。数据和更新可以从任何类型的源中提取,包括远程web服务和本地托管的JSON或asset。
以下是使用新数据绑定功能填充的按钮和列表:
8. Theming
Theming可以在运行时更改整个应用程序、场景或预设的整体外观。主题的样式信息可以在本地和远程指定,可以通过场景中的配置对象指定,也可以绑定到远程主题源,如基于云的品牌存储库。Theming同时使得MRTK3能够支持MRTK2样式,而不需要包含整个复制的UX预制集。
9. 马上开始吧!
团队表示:“希望你喜欢MRTK3公开预览版,并期待你能够在正式版本亮相前继续提供反馈。”更多信息请访问MRTK3 公共预览版。