本文链接:微信推文阅读效果更佳
目录
- 安装工具
- 应用开发举例
- 配置 Unity
- 创建新的 Unity 项目
- 切换生成平台
- 导入和配置资源
- 导入 MRTK Unity 基础包
- 配置 Unity 项目
- 为 XR SDK 配置项目设置
- 创建场景并配置 MRTK
- 交互例子
- 添加并调整第一个立方体
- 向立方体添加脚本
- 添加第二个立方体
- 在播放模式下抓取和移动立方体
- 在 Unity 中生成应用程序
- 生成并部署应用程序
- 配对设备
- 在 HoloLens 上运行应用
笔者在 2020 年首次接触到 HoloLens 2 应用的开发,直到 2021 年开发出一个简单的 AR 程序,并作为一个会议论文的演示部分,着实为论文的成功接收立下了汗马功劳。若干年后的今天需要对会议论文进行扩刊,然而再次想要设计一个新的 HoloLens 2 应用时却发现此前的程序已荡然无存。蓦然回首,是似曾相似的陌生,是无可奈何,又要从头再来。因此,下决心把开发的细节记录下来,以备不时之需。在此分享给诸君,欢迎在留言区交流和讨论!
本文主要参考混合现实文档,使用 HoloLens 2 开发一个简单的 AR 应用。本文旨在通过一个简单的开发案例演示 HoloLens 2 应用的详细的开发流程,是开发复杂应用的基石。
安装工具
除了选择 Unity 游戏引擎进行开发,除此之外,用户还可以选择其它游戏引擎进行开发。
选择 Unity 开发项目,可以使用 Unity 的混合现实工具包的输入模拟来测试各种类型的输入交互,例如手势跟踪和眼动跟踪输入。
混合现实工具包 (MRTK) 是用于构建虚拟现实 (VR) 和增强现实 (AR) 的混合现实体验的跨平台工具包。
需要安装:
工具 | 注释 |
---|---|
安装最新版本的 Windows 10 或 11 | 通过 设置 > 更新&安全 > 对于开发人员` 在电脑上启用开发人员模式。 |
安装 Visual Studio 集成开发环境 | 安装 Visual Studio 2022 请确保安装以下工作负载:.NET 桌面开发 / 使用 C++ 的桌面开发 / 通用 Windows 平台 (UWP) 开发 / 使用 Unity 进行游戏开发 |
HoloLens 2 仿真器 | 使用可选仿真器可在没有 HoloLens 的情况下在 HoloLens 虚拟机映像上运行应用程序。 |
应用开发举例
开发流程包括:
-
为 Windows Mixed Reality 配置 Unity
-
导入和配置资源
配置 Unity
首先,我们将新建 Unity 项目,并为该项目配置 Windows Mixed Reality 开发。 Unity 提供了一些特定于混合现实的行为,这些行为可以通过项目设置进行修改。
创建新的 Unity 项目
- 启动 Unity Hub。
- 在
项目
选项卡中,单击新建项目
。
- 单击
新建项目
下面的下拉列表,然后选择你需要的编辑器版本。如下图所示,所使用的版本是2021.3.16f1c1
:
-
确保所选模板为
3D Core
。 -
在
项目名称
框中,输入项目的名称,例如stgae
。 -
在
位置
框中,单击文件夹图标,然后导航到要在其中保存项目的文件夹,然后选择它。 也可以新建一个文件夹。
- 单击
创建项目
,会在 Unity 中打开项目。
<,>
切换生成平台
- 在菜单栏中,选择
文件
>生成设置
。
- 在
生成设置
窗口中选择通用 Windows 平台
。
确保以下设置处于以下选项:
设置 | 选项 |
---|---|
体系结构 | ARM 64 位 |
生成类型 | D3D 项目 |
目标 SDK 版本 | 已安装最新版本 |
最低平台版本 | 10.0.19041.0 |
Visual Studio 版本 | 已安装最新版本 |
生成和运行位置 | 本地设备 |
生成配置 | 发布(调试存在已知性能问题) |
选择后,如下图所示:
- 单击
切换平台
按钮,Unity 在切换平台时会显示进度栏。
- 切换平台过程完成后,关闭
生成设置
窗口。
导入和配置资源
混合现实工具包是一个开源的跨平台开发工具包,可将其导入 Unity 混合现实项目中。 尽管可以在不使用该包的情况下创建 Windows Mixed Reality 应用,但建议利用它的组件和功能来加速开发。
导入 MRTK Unity 基础包
使用混合现实功能工具 (Mixed Reality Feature Tool) 将混合现实工具包导入项目:
- 请从 Microsoft 下载中心下载混合现实功能工具 的最新版本。
<,,,>
-
下载完成可执行文件
MixedRealityFeatureTool.exe
后,然后使用它启动混合现实功能工具。 -
在混合现实功能工具中,选择
启动
。
<,>
- 选择
浏览
按钮(它是下图中的三个点
按钮),导航到你的项目,然后将其打开。
- 选择
发现功能
。
注意:工具刷新源中的包时可能需要等待几秒钟。
-
在
发现功能
页上,请注意有可用包组的列表。 -
单击
混合现实工具包(0/10)
左侧的+
按钮,然后选择混合现实工具包基础
的最新版本。
- 单击
平台支持(0/5)
左侧的+
按钮,然后选择混合现实 OpenXR 插件
的最新版本。
- 点击
获取功能
后选择验证
以验证所选的包。 系统应显示未检测到任何验证问题
。
<,>
- 选择
确定
关闭对话框,然后选择导入
。
- 出现提示时,选择
批准
以将混合现实工具包添加到项目中。
<,,>
配置 Unity 项目
导入包后,系统将显示 MRTK 项目配置器
。
如果未显示,可从 混合现实
> 工具包
> 实用程序
> 为 MRTK 配置项目
手动打开该配置器。
- 在
编辑
>项目设置
>XR 插件管理
下:
首先,安装插件管理程序:
然后,确保位于 通用 Windows 平台
设置中,并且已选中 启动时初始化 XR
和 Windows Mixed Reality
。
为 XR SDK 配置项目设置
- 在 Unity 菜单中选择
编辑
>项目设置
,打开项目设置
窗口,在窗口中,选择XR 插件管理
>Windows Mixed Reality
>运行时设置
,然后在深度缓冲区格式
下拉列表中,选择16 位深度
:
- 在
项目设置
窗口中,选择播放机
>发布设置
,然后在包名称
字段中输入合适的名称;例如stgae-hand
。
创建场景并配置 MRTK
-
在菜单栏中,选择
文件
>新建场景
。 -
在
新建场景
窗口中,选择基本(内置)
,然后单击创建
。
- 在菜单栏中,依次选择
混合现实
>工具包
>添加到场景并配置
。
混合现实工具包
设置会显示在检查器中。
在将 MRTK 添加到场景并对其进行配置后,以下两个新对象会被添加到 层次结构
窗口中:MixedRealityToolkit
和 MixedRealityPlayspace
。
MixedRealityToolkit
对象包含工具包本身。 MixedRealityPlayspace
对象可确保在场景中正确管理头戴显示设备/控制器和其他必需系统。
主摄像机
对象成为 MixedRealityPlayspace
对象的子对象。 这使得游戏区域能够与 SDK 同时管理摄像头。
- 在检查器中,验证配置文件下拉列表是否显示
DefaultMixedRealityToolkitConfigurationProfile
:
然而,在 DefalutMixedRealityTookitConfigurationProfile
中会自动识别空间场景,绘制三角面片,同时也有手部渲染;而在 DefaultHoloLens2ConfigurationProfile
中无三角面片,但是也没有手部渲染。
下面通过新建 Profile 并进行配置来实现既渲染手,又不渲染空间面片。
- 点击
复制并自定义配置
。
<,,>
Spatial Awareness
是空间扫描和生成三角面片,因此不用打开。
Input
选择DefaultMixedRealityInputSystemProfile
,并克隆以便自定义手部骨架。- 复制
铰接手部跟踪
的配置可以设置手部的现实方式
- 复制
<,,,>
交互例子
ObjectManipulator
和 NearInteractionGrabbable
脚本支持 手部和运动控制器
输入模型的 直接操作
模态。 向对象附加脚本后,用户可以手来移动、缩放或旋转该对象。在本例中,我们将创建两个立方体,向它们附加必要的脚本,然后四处移动它们。
添加并调整第一个立方体
- 右击场景名,选择
GameObject
>3D 对象
>立方体
。
立方体的默认大小为 1 m 2 ^2 2,这对我们来说太大了。 我们将它缩小到 20$\times 20 20 20\times 20 c m 20 cm 20cm^3$。
- 选择该立方体,然后在
Inspector
中将立方体的Tranform/Scale
值更改为 X = 0.2 , Y = 0.2 , Z = 0.2 X = 0.2, Y = 0.2, Z = 0.2 X=0.2,Y=0.2,Z=0.2。
立方体在场景中的默认位置为 ( 0 , 0 , 0 ) (0,0,0) (0,0,0)。 这意味着立方体与用户的头戴显示设备位于同一位置,用户无法看到立方体,直到他们向后移动。 我们将更改立方体的位置值,使它位于更便于查看的位置。
- 在
Inspector
中,将立方体的Tranform/Position
值更改为 X = − 0.2 , Y = 0.1 , Z = 0.5 X = -0.2, Y = 0.1, Z = 0.5 X=−0.2,Y=0.1,Z=0.5。
我们希望能看到立方体的三个面,因此还会更改立方体的旋转。
- 在
Inspector
中,将立方体的Tranform/Rotation
值更改为
X = 9 , Y = 14 , Z = 0 X = 9, Y = 14, Z = 0 X=9,Y=14,Z=0。
向立方体添加脚本
若要使对象在使用跟踪手时可抓取,必须附加三个组件:
- 碰撞体组件(无需在此执行任何操作 - Unity 立方体默认已附加盒型碰撞体)
对象操控器(脚本)
组件NearInteractionGrabbable
(脚本)组件
- 立方体仍然处于选定状态时,在
Inspector
窗口中,单击Add Component
按钮,然后搜索并选择Object Manipulator
脚本。
ObjectManipulator
脚本能够让对象变得可移动、可缩放和可旋转,这些操作可通过一只或两只手来实现。 添加 Object Manipulator
脚本时,系统会自动添加 Constraint Manager
脚本,因为前者依赖于后者。
- 重复相同的步骤,向立方体添加
NearInteractionGrabbable
脚本。
通过 NearInteractionGrabbable
脚本,用户能使用模拟手来触碰和抓取附近的对象。
添加第二个立方体
- 在
Hierarchy
中,右键单击立方体,然后选择Duplicate
。 系统显示复制的立方体,名称为Cube (1)
。
<,>
-
右键单击原始立方体,选择
Rename
,然后将其命名为NearCube
。 -
右键单击复制的立方体,选择
Rename
,然后将其命名为FarCube
。
目前,Scene 视图中似乎只有一个立方体。 这是因为 NearCube
和 FarCube
的位置完全相同。 我们可以更改 FarCube
的位置和旋转。
- 使
FarCube
仍处于选定状态,将其Transform
组件中的值更改为:- 位置: X = 0.6 , Y = 0.1 , Z = 1.1 X = 0.6, Y = 0.1, Z = 1.1 X=0.6,Y=0.1,Z=1.1
- 旋转: X = 27 , Y = 0 , Z = 0 X = 27, Y = 0, Z = 0 X=27,Y=0,Z=0
现在,摄像机能看到 NearCube
位于左侧,FarCube
位于右侧稍远处。 要确认这一点,请在 Hierarchy
中选择 Main Camera
,然后在 Scene
窗口中查看 Main Camera
窗口。
在播放模式下抓取和移动立方体
-
单击播放按钮。 项目开始播放时,视图切换到 Game 窗口。
-
按空格键,使模拟右手显示在视图中。
-
将模拟手朝
NearCube
移动,直到它触碰到立方体的一面或底部。 -
单击鼠标左键(这会使手抓取立方体),然后在场景中拖动立方体。
-
要抓取和移动
FarCube
,我们将使用模拟手附带的远指针。
在 Unity 中生成应用程序
- 在菜单栏中,选择
File
>Build Settings...
。
-
在
生成设置
窗口中,单击添加打开的场景
按钮,将当前场景添加到生成中的场景
列表中 。 -
单击
生成
按钮。 -
在
Build Universal Windows Platform
窗口中,导航到希望用于存储生成的文件夹,或者新建一个文件夹并导航到它,然后单击选择文件夹
按钮开始生成过程。
屏幕上将显示一个进度栏,表明生成的进展情况。
生成并部署应用程序
笔者在生成时遇到了一个问题
error MSB3774: 找不到 SDK“WindowsMobile, Version=10.0.19041.0”
,通过该方法得到解决。
- 生成过程完成后,Windows 文件资源管理器打开并显示该生成文件夹。 在文件夹内浏览并双击解决方案文件,这可在 Visual Studio 中将它打开:
<,>
-
为 HoloLens 配置 Visual Studio - 选择
Master
或Release
配置以及ARM64
体系结构: -
单击部署目标下拉菜单,然后执行下列操作之一:
如果要通过 Wi-Fi 进行生成和部署,请选择 远程计算机
。
- 设置远程连接:在菜单栏上,选择
项目
>属性
。
- 在项目的
属性页
窗口中,选择配置属性
>调试
。
-
单击
要启动的调试器
下拉菜单,然后选择远程计算机
(如果尚未选择)。 -
在
计算机名
字段中输入设备的 IP 地址。
<,>
注意:需要在 HoloLens 中的 Holographic Remoting 远程连接调试程序查看 HoloLens 在局域网中的 IP 地址。
-
将
身份验证模式
设置为通用(未加密协议)
。 -
将 HoloLens 连接到计算机,然后在 Visual Studio 中执行以下操作之一:
-
若要部署 HoloLens 并自动启用为附加 Visual Studio 调试程序的应用,选择
调试
>开始执行(不调试)
。
要部署 HoloLens,而不自动启动应用,选择生成
>部署解决方案
。
配对设备
- 首次将应用从电脑部署到 HoloLens 时,系统会提示输入 PIN。 创建 PIN:
-
在 HoloLens 中,转到
设置
>更新&安全
>针对开发人员
。 -
选择
配对
。这会显示 HoloLens 中的 PIN。
- 在 Visual Studio 的对话框中输入该 PIN。
- 完成配对后,在 HoloLens 中,选择
完成
。
现在,你的电脑已与 HoloLens 配对,你可以自动部署应用。
<,,>
在 HoloLens 上运行应用
应用完成生成后,在 HoloLens 的 开始
菜单中找到你的应用的应用磁贴,然后选中它。
<,>
完整演示视频见:HoloLens 2 应用演示