MRTK3

MRTK3设置指南

 

这个示例场景展示了如何将MRTK3集成到您的Unity项目中。有关MRTK的更多信息,请查阅MRTK3文档

 

在Windows上设置新的Unity项目

该指南将引导您如何为Snapdragon Spaces设置和构建全新的MRTK3项目。


注意事项!

请避免使用涉及虚拟键盘和Web浏览器的组件,因为它们目前不受支持,可能导致意外行为。

 

Unity项目设置

从从Unity 设置指南开始,按照Unity设置指南的步骤进行,直到启用Spaces功能。

 

设置完成后,请保持Unity项目处于打开状态,并记下文件路径。

 

MRTK项目配置

● 安装MRTK3的先决条件:

○ Visual Studio 2019社区版或更高版本

○ 混合现实功能工具,用于访问MRTK3包。目前仅在Windows上可用。下载但不要运行。

○ 您将需要包含在Visual Studio 16.11.14+中的.NET 0.5+运行时。


导入MRTK3包:

打开混合现实功能工具(MixedRealityFeatureTool.exe)。

 

图片11.png


● 等待工具加载完成后,点击“开始”。

● 将项目路径设置为Unity项目的文件路径。

● 点击“发现功能”。

○ 对于MRTK3的项目条目,点击“全选”。

○ 点击“获取功能”。可能会显示一些推荐的依赖项,如有,请选择并导入它们。

○ 完成后,您可以选择关闭功能工具,或根据需要保持其打开,以进行进一步的调整。


图片12.png


返回Unity完成包导入

回到Unity项目,并等待由混合现实功能工具添加新功能导致的任何导入过程。

如果出现提示,请选择“我已备份,继续!”以确认XR交互层掩码。

如果需要重新启动,请选择“是”。

 

图片13.png


场景设置

创建一个新场景。这个场景将用于从头设置相机和输入。

 

修改适用于Snapdragon Spaces的相机设置

● 从场景层级中删除主相机。

● 找到MRTK XR Rig预制体,并将其拖拽到场景中。位置在:Packages/com.microsoft.mrtk.input/Assets/Prefabs/MRTK XR Rig.prefab

 

图片14.png


配置适用于Snapdragon Spaces的控制器输入

如前所述,本指南仅适用于使用Companion控制器作为设备输入。要为Companion控制器设置,请按照以下步骤操作:

 

● 在MRTK XR Rig(顶级GameObject)上:

○ 在输入动作管理器组件中,向动作资源下拉菜单添加第二个元素,并设置为:输入动作,位置在:Samples/Snapdragon Spaces/[版本ID]/Core Samples/Shared Assets/Input Actions。这将映射输入动作到从Snapdragon Spaces核心示例中设置的动作,以便正确连接到Companion控制器。

 

图片15.png


● 现在添加设备指针预制体,它位于:Samples/Snapdragon Spaces/[版本ID]/Core Samples/Shared Assets/Prefabs/Interaction/。

○ 在XR Interactor Line Visual组件中,将线宽度调整为0.005。

 

图片16.png

 

最后,设置MRTK配置文件

● 创建MRTK配置文件的副本,路径为Packages > MRTK Core Definitions > Configuration > Default Profiles,并将其拖放到项目的Assets目录中。

 

图片17.png


● 打开编辑 > 项目设置 > MRTK3。

● 将复制的配置文件拖放到Android选项卡下的配置文件部分。

● 取消勾选MRTK Hands Aggregator子系统。

● 取消勾选Hand Synthesis子系统。

 

图片18.png


可选步骤:添加交互组件以测试MRTK功能

可选择的物体

● 向场景中添加一个3D立方体。

○ 将其位置设置为(0, 0, 1.5)。

○ 将旋转设置为(45, 45, 45)。

○ 将缩放设置为(0.5, 0.5, 0.5)。

○ 添加ObjectManipulator组件,以便通过激光指针进行抓取。

 

MRTK按钮组

● 添加一个ButtonGroup_32x32mm_H3预制体到场景中,通过此步骤测试MRTK的预制交互组件。

● 这可能会提示您安装TextMeshPro。如果需要,请选择导入TMP Essentials。

● 在层次结构中选择ButtonGroup,在检视器中将Transform的位置设置为0,0,0.5。按下播放按钮以处理脚本并可视化按钮面板,然后停止返回编辑模式。

● 展开ButtonGroup,逐个展开三个PressableButton_32x32mm_IconAndText对象。

 

图片19.png


● 第一个按钮:选择顶层按钮对象,在检视器中找到Pressable Button组件,点击+号添加OnClicked()事件,将其设置为场景中的立方体,并将动作设置为GameObject.SetActive,复选框不勾选。

○ 在子对象CompressableButtonVisuals中:

○ 找到UX.Button.Icon.Char子对象,并将SpriteRenderer的Sprite更改为空圆。

● 第二个按钮,选择顶层按钮对象,在检视器中找到Pressable Button组件,点击+号添加OnClicked()事件,将其设置为场景中的立方体,并将动作设置为GameObject.SetActive,复选框勾选。

○ 在子对象CompressableButtonVisuals中:

○ 找到UX.Button.Icon.Char子对象,并将SpriteRenderer的Sprite更改为填充圆。

○ 找到TextMeshPro子对象,并将Text输入设置为显示。

○ 对于第三个按钮,您需要首先创建一个新脚本并将其添加到立方体上。该脚本应该包含一个公开的函数,例如

 

图片20.png


● 第三个按钮继续:

○ 选择顶层按钮对象,在检视器中找到Pressable Button组件,点击+号添加OnClicked()事件,将其设置为场景中的立方体,并将动作设置为从新脚本中调用的Quit()函数。

○ 在子对象CompressableButtonVisuals中:

○ 找到UX.Button.Icon.Char子对象,并将SpriteRenderer的Sprite更改为“Quit”按钮。

○ 找到TextMeshPro子对象,并将Text输入设置为Show。

 

图片21.png

 

连接设备进行测试:

● 配置构建设置和播放器设置以便构建应用程序。

● 从构建设置窗口中构建应用程序并将其保存到本地。

● 连接您的Android设备,并在提示时批准USB调试。

● 将apk安装到您的设备上。

● 长按应用图标,点击“应用信息”,并批准所有权限。

● 插入眼镜,并等待应用程序完全加载后运行。

 

MRTK示例:

为了进一步了解可用的MRTK3用户界面组件,建议下载MRTK3示例并为其配置Snapdragon Spaces。按照以下步骤操作:

 

获取MRTK3示例:

● 克隆或下载Unity项目示例的存储库:https://github.com/MixedRealityToolkit/MixedRealityToolkit-Unity/tree/main/UnityProjects

● 在文件名较短的位置解压或克隆此存储库。该存储库包含多个文件夹,文件名过长可能导致Unity中出现问题。

● 请不要移动存储库中的任何文件,因为存在许多依赖项,移动文件可能会导致问题。如果必须移动存储库,请整体移动整个存储库。

 

打开项目并集成Snapdragon Spaces:

● 在Unity Hub中的UnityProjects文件夹中添加MRTKDevTemplate。

● 打开Unity项目。

● 按照Unity设置指南中的步骤导入Snapdragon Spaces包。

● 选择要打开的场景。建议打开HandInteractionExamples场景。

● 根据以上说明配置场景,修改相机和输入设置。

● 构建并部署到设备。


手部跟踪

手部跟踪插件设置

手部跟踪使用混合现实OpenXR插件支持。要获取插件,请使用混合现实功能工具(如上文所述),并从平台支持部分选择混合现实OpenXR插件。

 

图片22.png


完成项目更新过程后返回Unity项目。

 

Unity配置

在Unity中,有两个地方需要更新。

 

MRTK设置

首先是MRTK设置。确保启用MRTK Hands Aggregator子系统和OpenXR Hands API子系统的复选框。


图片23.png

 

另外,建议尝试调整“Pinch Closed Threshold”设置的校准值,该设置默认为0.25。一些开发者已经尝试将该阈值调整到0.45或0.5,并取得了一定的成功。

 

OpenXR设置

第二个需要更新的区域是OpenXR设置。请注意可能存在两个手部跟踪功能选项。为避免冲突,请仅启用“Microsoft Hand Tracking”复选框,并禁用其他任何手部跟踪复选框。正确的选项旁边有一个问号,通过点击设置图标可以确认其为Microsoft版本。

 

图片24.png


手部可视化设置

除了MRTK提供的手部网格外,Snapdragon Spaces SDK还提供了一个用于显示虚拟手部叠加效果的QCHT手部网格。

 

实施方法是,在场景层级结构中选择MRTK XR Rig > Camera Offset > MRTK RightHand Controller下的MRTK RightHand Controller对象。


图片27.png

 

将位于 packages/QCHT Unity Interactions/Prefabs/MRTK3/ 目录下的 hand_right_qcht 预制体拖放到 MRTK XR Rig 的 MRTK RightHand Controller 的 Model Prefab 字段中。

 

图片26.png


对于左手,同样地进行这个操作。

 

手部追踪选项


注意!

由于与 OpenXR 控制器配置文件的冲突,目前无法同时从 Snapdragon Spaces 控制器和两只手进行射线投射。因此,有两个可选方案。

 

选项1:禁用左手跟踪

要禁用左手跟踪,请在 MRTK XR Rig 中关闭左手控制器,但保持右手控制器开启。如果保留左手控制器,它可能仍能作为碰撞体工作,但可能无法正确作为射线交互器工作。这个选项允许继续使用设备指针,但这种限制可能不是理想的选择。

 

图片27.png


选项2:禁用Snapdragon Spaces控制器(双手选项)

 

要禁用Snapdragon Spaces控制器,请在场景中移除或停用设备指针预制体。

 

接着,从OpenXR设置中移除该配置文件。


图片28.png

 

这会在基础运行时功能旁边标记一个警告,但可以忽略。这样可以使双手都能跟踪,但手机控制器将不会向应用程序发送任何指针跟踪或按钮按下的消息,因为它处于“仅手部跟踪”模式。这种模式主要推荐用于直接从其他“仅手部跟踪”平台移植应用程序。

 

MRTK资源

如需更多关于MRTK的详细信息,请查阅MRTK3文档或访问Github MRTK项目的源代码。