Snapdragon Spaces 开发指南(5)

Snapdragon Spaces 开发指南(5)


5.4 交互包指南

5.4.1 MRTK3 设置指南

此示例场景演示了如何将 MRTK3 集成到您的 Unity 项目中。有关 MRTK 的更多信息,请访问MRTK3 文档

在 Windows 上使用 MRTK3 和 Snapdragon Spaces 设置新的 Unity 项目

本指南引导您完成如何为 Snapdragon Spaces 设置和构建全新的 MRTK3 项目的步骤。

笔记
请避免使用虚拟键盘和 Web 浏览器的组件,因为这些组件目前不受支持,可能会导致意外行为。

Unity 项目设置

从《Unity 设置指南》开始,从先决条件一直到启用空间功能。

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

MRTK 的项目配置

  • 安装 MRTK3 的 MRTK 要求:
    - Visual Studio 2019 社区版或更高版本
    - 访问 MRTK3 包需要混合现实功能工具。目前该功能仅适用于 Windows。下载,但尚未运行。
    - 您将需要 .Net 0.5+ 运行时,它包含在 Visual Studio 16.11.14+ 中

导入 MRTK3 包

  • 打开混合现实功能工具(MixedRealityFeatureTool.exe)
  • 等待它加载,然后单击左下角的“设置”图标。
    - 单击功能选项卡。
    - 选中显示预览版本复选框。
    - 单击“确定”进行确认。
  • 单击“开始”。
  • 将“项目路径”设置为 Unity 项目的文件路径。
  • 单击“发现功能”。
    - 点击 MRTK3 订单项的“全选”。
    - 单击“获取功能”。可能会显示一些推荐的依赖项。如果是这样,也选择它们。完成后单击“导入”以下载文件并更新 Unity 项目清单。
    - 完成后,可以选择关闭功能工具,或使其保持打开状态以根据需要继续进行调整。

返回Unity完成包导入

  • 切换回 Unity 项目并等待混合现实功能工具添加新功能后发生任何导入。
    - 如果出现提示,请选择I made a backup, go ahead!XR 交互层蒙版。
    - 如果提示重新启动,请选择Yes

场景设置

创建一个新场景。该场景将用于设置相机并从头开始输入。

修改 Snapdragon Spaces 的相机

  • 从场景层次结构中删除主摄像机。
  • 找到 MRTK XR Rig Prefab 并将其拖动到场景中,位于:Packages/com.microsoft.mrtk.input/Assets/Prefabs/MRTK XR Rig.prefab

配置 Snapdragon Spaces 控制器输入

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

  • 在 MRTK XR Rig(顶级游戏对象)上:
    - 在输入操作管理器组件中,将第二个元素添加到操作资产下拉列表中并将其设置为:Input Actions位于:Samples/Snapdragon Spaces/[version ID]/Core Samples/Shared Assets/Input Actions。这会将输入操作映射到 Snapdragon Spaces 核心示例中设置的操作,从而允许正确连接到配套控制器。
  • 现在添加位于以下位置的设备指针预制件:Samples/Snapdragon Spaces/[版本 ID]/Core Samples/Shared Assets/Prefabs/Interaction/
    - 在 XR Interactor 线视觉组件中,将线宽更改为 0.005。

最后,设置 MRTK 配置文件。

  • 创建在 Packages > MRTK Core Definitions > Configuration > Default Profiles 中找到的 MRTKProfile 的副本,并将其放入项目 Assets 目录中。
  • 打开编辑 > 项目设置 > MRTK3。
  • 将副本拖到 Android 选项卡下的配置文件部分。
  • 取消选中MRTK Hands Aggregator Subsystem。
  • 取消选中 Hand Synthesis 子系统。

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

可选择的对象

  • 将 3D 立方体添加到场景中。
    - 将位置设置为 (0, 0, 1.5)
    - 旋转至 (45, 45, 45)
    - 缩放至 (0.5, 0.5, 0.5)
  • 添加组件“ObjectManipulator”以允许从激光笔进行抓取。

MRTK 按钮组

  • 通过将 ButtonGroup_32x32mm_H3 预制件添加到场景中来测试 MRTK 预制件交互组件。
  • 这可能会提示您安装 TextMeshPro。如果是这样,请选择Import TMP Essentials。
  • 在层次结构中选择 ButtonGroup,然后在检查器中将变换位置设置为 0,0,0.5。按Play可处理脚本并可视化按钮面,然后Stop返回“编辑”。
  • 展开 ButtonGroup 以找到三个 PressableButton_32x32mm_IconAndText 对象,然后一次展开它们。
  • 对于第一个,选择顶级按钮对象,在检查器中找到 Pressable Button 组件,单击+OnClicked(), 将其设置为场景中的 Cube,并将操作设置为 GameObject.SetActive 并取消选中复选框。
    - 在子 CompressableButtonVisuals 下:
    - 找到 UX.Button.Icon.Char 子对象并将 SpriteRenderer 的 Sprite 更改为空圆圈。
  • 对于第二个,选择顶级按钮对象,在检查器中找到 Pressable Button 组件,单击+OnClicked(),将其设置为场景中的 Cube,并将操作设置为 GameObject.SetActive 并选中复选框。
    - 在子 CompressableButtonVisuals 下:
    - 找到 UX.Button.Icon.Charchild 对象并将 SpriteRenderer 的 Sprite 更改为实心圆。
    - 找到 TextMeshPro 子项并将文本输入设置为“显示”。
  • 对于第三个按钮,您首先需要创建一个新脚本并将其添加到多维数据集中。该脚本应该具有可公开访问的功能,例如
      ...
    public void Quit() {
    
    
        Application.Quit();
    }
    ...
  • 仍然在第三个按钮上:
    - 选择顶级按钮对象,在检查器中找到 Pressable Button 组件,单击+OnClicked(),将其设置为场景中的 Cube,并将新脚本中的操作设置为 Quit()。
    - 在子 CompressableButtonVisuals 下:
    - 找到 UX.Button.Icon.Char 子对象并将 SpriteRenderer 的 Sprite 更改为 Quite 按钮。
    - 找到 TextMeshPro 子项并将文本输入设置为“显示”。

测试设备

  • 配置构建设置和播放器设置以构建应用程序。
  • 从“构建设置”窗口构建应用程序并在本地保存您的应用程序。
  • 连接您的 Android 设备并在出现提示时批准 USB 调试。
  • 将 apk 安装到您的设备上。
  • 长按应用程序图标,点击“应用程序信息”,然后批准所有权限。
  • 插上眼镜,完全加载后,运行应用程序。

MRTK样本

如需进一步了解可用的 MRTK3 用户界面组件,建议下载 MRTK3 示例并针对 Snapdragon Spaces 配置它们。请按照以下步骤执行此操作。

获取 MRTK3 示例

  • 克隆存储库或下载 mrtk3 分支:https://github.com/microsoft/MixedRealityToolkit-Unity/tree/mrtk3
  • 在具有短文件名的位置提取或克隆此存储库。此存储库有许多名称很长的文件夹,这可能会导致文件名变得太长并导致 Unity 出现问题。
  • 不要移动此存储库中的任何文件,因为存在许多依赖项,更改文件的位置会导致问题。如果您需要移动存储库,请完全移动整个存储库。

打开项目并集成 Snapdragon Spaces:

  • 从 Unity Hub 的 MRTK3 示例“UnityProjects”文件夹中添加“MRTKDevTemplate”。
  • 打开 Unity 项目。
  • 按照Unity 设置指南中的说明导入 Snapdragon Spaces 包。
  • 选择要打开的场景。推荐场景是 HandInteractionExamples。
  • 配置场景以修改相机和输入,如上所示。
  • 构建并部署到设备。

手部追踪

笔记
手部追踪需要在目标设备上安装 Snapdragon Spaces Services 0.11.1 或更高版本。为 MRTK 手部追踪构建的应用程序可能无法在装有早期版本 Snapdragon Spaces 服务的设备上按预期运行。

手部追踪插件设置

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

单击完成更新项目的过程,然后返回到 Unity 项目。

统一配置

在 Unity 中,有两个区域需要更新。

MRTK 设置

第一个是 MRTK 设置。确保 MRTK Hands Aggregator Subsystem 和 Subsystem of OpenXR Hands API 复选框均已启用。

此外,建议尝试校准“捏合关闭阈值”设置,该设置默认设置为 0.25。开发人员发现将该阈值调整为 0.45 或 0.5 取得了一些成功(如图所示)。

OpenXR 设置

第二个要更新的区域是 OpenXR 设置。在这里,启用两个手部跟踪复选框。一种是让 Spaces Hand Tracking 进行跟踪,另一种是让 MRTK 在交互系统中利用手部跟踪。

手部可视化设置

除了 MRTK 提供的手部网格之外,Snapdragon Spaces SDK 还提供了 QCHT 手部网格,用于可视化虚拟手部覆盖。

要实现,请MRTK RightHand Controller在场景层次结构中的 MRTK XR Rig > 摄像机偏移 > MRTK RightHand Controller 下进行选择。

请添加图片描述
拖动hand_right_qcht位于MRTK RightHand 控制器字段packages/QCHT Unity Interactions/Prefabs/MRTK3/中的预制件Model Prefab

请添加图片描述
用左手执行相同的过程。

手部追踪选项

笔记
由于与 OpenXR 控制器配置文件冲突,目前无法同时从 Snapdragon Spaces 控制器和双手进行光线投射。因此,有两种选择。

选项 1:禁用左手跟踪

要禁用左手跟踪,请关闭 MRTK XR 装备中的左手控制器,但保留右手控制器。如果您保留左手,它可能仍然可以作为碰撞器工作,但可能无法作为光线投射交互器正常工作。此选项允许继续使用设备指针,但限制可能并不理想。

请添加图片描述
选项 2:禁用 Snapdragon Spaces 控制器(双手选项)

要禁用 Snapdragon Spaces Controller,请从场景中删除或停用设备指针预制件(如果存在)。

然后从 OpenXR 设置中删除该配置文件。

请添加图片描述
这将在基本运行时功能旁边标记一个警告,但可以忽略。这允许双手进行跟踪,但手机控制器不会向应用程序发送任何指针跟踪或按钮按下消息,因为它是“仅手部跟踪”模式。这主要推荐用于直接从其他“仅手部跟踪”平台移植应用程序。

MRTK 资源

有关 MRTK 的更多详细信息,请参阅MRTK3 文档 或者查看Github MRTK 项目的源代码

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/132458965