混合现实开发工具包(MRTK)是一个跨平台的工具集,它可以帮助你构建MR(混合现实),VR(虚拟现实)以及AR(增强现实)程序。http://MrPP.com开始翻译这些文档。
前期准备
在开始工作前,你需要安装以下开发工具:
Visual Studio 2019
Unity 2018.4.x, 2019.1.x 或者 2019.2.x
MRTK在Unity2018中同时支持IL2CPP和.NET两种脚本后端。
最新的 MRTK f发布版本
Windows SDK 18362+.
如果你需要构建WMR\HoloLens1 \HoloLens2程序,你需要构建UWP平台程序,否则,你只需要支持OpenVR就足够了。
入门教程
如果您是MRTK或混合现实开发的新手,我们建议您查看使用MRTK v2的入门教程。
把MRTK配置到你的Unity工程中来
去到MRTK的发布页面。
下载以下数据包
Microsoft.MixedRealityToolkit.Unity.Foundation.unitypackage
Microsoft.MixedRealityToolkit.Unity.Extensions.unitypackage
Microsoft.MixedRealityToolkit.Unity.Tools.unitypackage
Microsoft.MixedRealityToolkit.Unity.Examples.unitypackage
如果需要了解相关的细节,可以查看 Downloading the MRTK.
选择你的Unity目标平台
在导入MRTK包进入你的工程之前,需要你选择正确的发布平台。
如果你需要创建一个HoloLens程序,你就需要切换平台到Universal Windows Platform(UWP)。
打开目录:File > Build Settings
在Platform 列表下选择 Universal Windows Platform
点击Switch Platform 按钮
导入MRTK包进入你的Unity工程中
创建一个新的Unity项目,或者打开一个现有的项目。创建项目时,请确保选择“3D”作为模板类型。
导入Microsoft.MixedRealityToolkit.Unity.Foundation。进入“Asset -> Import Package -> Custom Package”,选择.unitypackage文件,确保选中所有要导入的项目,然后选择“Import”。
导入Microsoft.MixedRealityToolkit.Unity.Examples。unitypackage遵循与上面相同的步骤。示例包是可选的,并且包含了当前MRTK特性的有用演示场景。
导入Microsoft.MixedRealityToolkit.Unity.Tools。unitypackage遵循与foundation包相同的步骤。这些工具包是可选的,并且包含有用的工具,比如ExtensionServiceCreator,它们增强了MRTK开发人员的体验。
导入Microsoft.MixedRealityToolkit.Unity.Extensions。unitypackage遵循与foundation包相同的步骤。扩展包为MRTK提供了一组有用的可选组件。
导入Foundation包后,可能会看到如下设置提示:
MRTK正在帮助您开启混合现实项目,在这个过程中做了以下工作:
为当前平台启用XR设置(启用XR复选框)。
强制开启文本序列 和可视化Meta文件(用于使用源代码控制的Unity项目)
虽然看起来这些是可选的选项,但还是强烈建议你在这里选择开启。
某些预设和资源需要TextMeshPro插件的支持,你需要在 (Window -> TextMeshPro -> Import TMP Essential Resources) 选择导入相应插件(TMP ),别忘了重重新启动Unity之后才能看到相应的效果。
在编辑器中打开并运行HandInteractionExamples场景
hand interaction examples场景是一个很好的起点,因为它显示了MRTK中各种各样的UX控件和交互。首先,我们将导入MRTK,打开示例场景,并在编辑器中探索一下。
创建一个新的Unity项目,然后按照上面的步骤导入基础(Foundation )和示例(Examples )Unity包。
打开 Assets\MixedRealityToolkit.Examples\Demos\HandTracking\Scenes\HandInteractionExamples下的HandInteractionExamples场景
您可能会收到一个提示,要求您导入“TMP Essentials”。
如果您得到这样一个提示,选择“Import TMP essentials”按钮。“TMP Essentials”指的是Text Mesh Pro插件,一些MRTK的例子使用这个插件来改进文本渲染。(详情请参阅Unity中的文本)
关闭TMP对话框。之后你需要重新加载场景。您可以通过双击project选项卡中的场景来实现这一点。
按下Play按钮。
使用编辑器中的模拟手输入来测试场景
编辑器内输入模拟允许您测试给定特定输入类型(如手或眼睛)的虚拟对象行为。
如何在场景中移动:
使用W/A/S/D键将相机向前/向左/向后/向右移动。
按住鼠标右键旋转相机。
如何模拟手输入:
按住空格键,切换右手可用。
按住空格键时,移动鼠标来移动手。
使用鼠标中轴滚动来调整手的深度。
点击鼠标左键切换手势。
祝你玩得愉快!您可以在手动交互示例指南中了解更多关于UI控件的信息。另外,阅读输入模拟文档,了解更多关于MRTK中编辑器内手动输入模拟的信息。
恭喜你,你刚刚用了你的第一个MRTK场景。从此开始谱写你自己的经历吧。
将MRTK添加到新场景或新项目中
创建一个新的Unity项目,或者在你当前的项目中开始一个新的场景。
确保您已经按照上面的步骤导入了MRTK包(我们推荐基础和示例,但示例不是必须的)。
从菜单栏,选择混合现实工具包->添加到场景和配置
你会见到下面的画面
点击"OK"按钮。
然后将提示您选择MRTK配置概要文件。双击“DefaultMixedRealityToolkitConfigurationProfile”。
注意:如果您开始使用HoloLens2,那么应该选择“DefaultHoloLens2ConfigurationProfile”。有关DefaultMixedRealityToolkitConfigurationProfile和DefaultHoloLens2ConfigurationProfile之间的区别的更多信息,请参见配置文件。
然后你会在你的场景Hierarchy中看到以下内容:
其中包括以下内容:
混合现实工具包——工具包本身,为整个框架提供了中心配置入口点。
MixedRealityPlayspace— 头显的父节点,确保头显/控制器和其他所需系统在场景中得到正确管理。
主相机(Main Camera)作为Playspace子节点——这允许Playspace与SDK一起管理主相机
注意,在你的场景中工作时,不要将主相机(或Playspace)从场景原点(0,0,0)移动。这是由MRTK和DK控制的。如果你需要移动玩家的起点,那么移动场景内容而不是相机!
按下空格键,点击Play并通过模拟手来进行测试。
现在可以构建并部署到设备了! 可以参考构建和部署MRTK的步骤说明。
之后做什么
以下是一些建议的下一步:
添加一个PressableButton到您的场景(我们建议使用PressableButtonPlated prefab开始)。
向场景中添加一个立方体,然后使用PressableButtonPlated 组件使其可移动。
了解MRTK中UI和交互构建块中可用的UX控件。
阅读输入模拟指南,学习如何在编辑器中模拟手输入。
了解如何在混合现实配置指南中使用MRTK配置概要文件。
、
| Bounding Box | Manipulation Handler |
一个按钮控件,支持各种输入方法,包括HoloLens 2的手触摸 | 用于在三维空间中操作对象的标准UI | 用一只或两只手操纵对象的脚本 |
Slate | System Keyboard | Interactable |
二维风格的平面,支持滚动与手触摸的输入 | 在Unity中使用系统键盘的例子脚本 | 使对象具有可视状态和主题支持的可交互性的脚本 |
Solver | Object Collection | Tooltip |
各种对象定位行为,如尾随,车身锁定,恒视尺寸和表面磁性 | 用于以三维形状布局对象数组的脚本 | 带有灵活锚/枢轴系统的标注UI,可用于标注运动控制器和对象。 |
App Bar | Pointers | Fingertip Visualization |
Bounding Box'所使用的UI | 了解各种类型的指针 | 指尖的视觉启示,提高了直接互动的反馈 |
Slider | MRTK Standard Shader | Hand Joint Chaser |
滑块UI,用于调整支持直接手动跟踪交互的值 | MRTK的标准着色器支持各种流畅的设计元素与性能 | 演示如何使用求解程序将对象附加到手部关节 |
| Eye Tracking: Heat Map | |
结合眼睛,声音和手的输入,快速和毫不费力地选择全息图通过您的场景 | 学习如何自动滚动文本或流畅地放大聚焦内容的基础上,你正在看的方向 | 用于记录、加载和可视化用户在应用程序中查看的内容的示例 |