首页 > 互联资讯 > 建站教程  > 

hololens程序如何开发?

笔者在 2020 年首次接触到 HoloLens 2 应用的开发,直到 2021 年开发出一个简单的 AR 程序,并作为一个会议论文的演示部分,着实为论文的成功接收立下了汗马功劳。若干年后的今天需要对会议论文进行扩刊,然而再次想要设计一个新的 HoloLens 2 应用时却发现此前的程序已荡然无存。蓦然回首,是似曾相似的陌生,是无可奈何,又要从头再来。因此,下决心把开发的细节记录下来,以备不时之需。在此分享给诸君,欢迎在留言区交流和讨论!本文主要参考混合现实文档[1],使用 HoloLens 2 开发一个简单的 AR 应用。本文旨在通过一个简单的开发案例演示 HoloLens 2 应用的详细的开发流程,是开发复杂应用的基石。 Microsoft Hololens 2安装工具

除了选择 Unity 游戏引擎进行开发,除此之外,用户还可以选择其它游戏引擎[2]进行开发。

选择 Unity 开发项目,可以使用 Unity 的混合现实工具包[3]的输入模拟来测试各种类型的输入交互,例如手势跟踪和眼动跟踪输入。 混合现实工具包 (MRTK) 是用于构建虚拟现实 (VR) 和增强现实 (AR) 的混合现实体验的跨平台工具包。

需要安装:

工具注释安装最新版本的 Windows 10 或 11通过 设置 > 更新&安全 > 对于开发人员` 在电脑上启用开发人员模式。安装 Visual Studio 集成开发环境安装 Visual Studio 2022 请确保安装以下工作负载:.NET 桌面开发 / 使用 C++ 的桌面开发 / 通用 Windows 平台 (UWP) 开发 / 使用 Unity 进行游戏开发HoloLens 2 仿真器使用可选仿真器可在没有 HoloLens 的情况下在 HoloLens 虚拟机映像上运行应用程序。应用开发举例

开发流程包括:

为 Windows Mixed Reality 配置 Unity[4] 导入和配置资源[5] 配置 Unity

首先,我们将新建 Unity 项目,并为该项目配置 Windows Mixed Reality 开发。 Unity 提供了一些特定于混合现实的行为,这些行为可以通过项目设置进行修改。

创建新的 Unity 项目启动 Unity Hub。单击 新建项目 下面的下拉列表,然后选择你需要的编辑器版本。如下图所示,所使用的版本是 2021.3.16f1c1:确保所选模板为 3D Core。 在 项目名称 框中,输入项目的名称,例如 stgae。 在 位置 框中,单击文件夹图标,然后导航到要在其中保存项目的文件夹,然后选择它。 也可以新建一个文件夹。 单击 创建项目,会在 Unity 中打开项目。

<<< 左右滑动见更多 >>>

切换生成平台在菜单栏中,选择 文件 > 生成设置。单击 切换平台 按钮,Unity 在切换平台时会显示进度栏。

<<< 左右滑动见更多 >>>

下载完成可执行文件 MixedRealityFeatureTool.exe 后,然后使用它启动混合现实功能工具。 在混合现实功能工具中,选择 启动。

<<< 左右滑动见更多 >>>

选择 浏览 按钮(它是下图中的 三个点 按钮),导航到你的项目,然后将其打开。选择 发现功能。

注意:工具刷新源中的包时可能需要等待几秒钟。

在 发现功能 页上,请注意有可用包组的列表。 单击 混合现实工具包(0/10) 左侧的 + 按钮,然后选择 混合现实工具包基础 的最新版本。 单击 平台支持(0/5) 左侧的 + 按钮,然后选择 混合现实 OpenXR 插件 的最新版本。 注意:Unity 2019 及之前的版本,其配置稍有不同,详见[7]。 点击 获取功能 后选择 验证 以验证所选的包。 系统应显示 未检测到任何验证问题。出现提示时,选择 批准 以将混合现实工具包添加到项目中。在 编辑 > 项目设置 > 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 并进行配置来实现既渲染手,又不渲染空间面片[8]。

点击 复制并自定义配置。

<<< 左右滑动见更多 >>>

Spatial Awareness 是空间扫描和生成三角面片,因此不用打开。Input 选择 DefaultMixedRealityInputSystemProfile,并克隆以便自定义手部骨架。 复制 铰接手部跟踪 的配置可以设置手部的现实方式

<<< 左右滑动见更多 >>>

交互例子

ObjectManipulator 和 NearInteractionGrabbable 脚本支持 手部和运动控制器 输入模型的 直接操作 模态。 向对象附加脚本后,用户可以手来移动、缩放或旋转该对象。在本例[9]中,我们将创建两个立方体,向它们附加必要的脚本,然后四处移动它们。

添加并调整第一个立方体右击场景名,选择 GameObject > 3D 对象 > 立方体。

立方体的默认大小为 1 m^2,这对我们来说太大了。 我们将它缩小到 20\times20\times20 cm^3。

选择该立方体,然后在 Inspector 中将立方体的 Tranform/Scale 值更改为 X = 0.2, Y = 0.2, Z = 0.2。 立方体在场景中的默认位置为 (0,0,0)。 这意味着立方体与用户的头戴显示设备位于同一位置,用户无法看到立方体,直到他们向后移动。 我们将更改立方体的位置值,使它位于更便于查看的位置。 在 Inspector 中,将立方体的 Tranform/Position 值更改为 X = -0.2, Y = 0.1, Z = 0.5。 我们希望能看到立方体的三个面,因此还会更改立方体的旋转。 在 Inspector 中,将立方体的 Tranform/Rotation 值更改为 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 = 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”,通过该方法[10]得到解决。 生成过程完成后,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 应用演示

参考资料

[1]

混合现实文档: https://learn.microsoft.com/zh-cn/windows/mixed-reality/

[2]

选择引擎: https://learn.microsoft.com/zh-cn/windows/mixed-reality/develop/choosing-an-engine?tabs=unity

[3]

混合现实工具包简介 - 设置项目并使用手势交互: https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-1-introduction

[4]

为 Windows Mixed Reality 配置 Unity: https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-3-exercise-configure-unity-for-windows-mixed-reality

[5]

导入和配置资源: https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-5-exercise-configure-resources?tabs=openxr

[6]

下载混合现实功能工具: https://aka.ms/MRFeatureTool

[7]

Unity 2019/2020 + windows xr 插件: https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-5-exercise-configure-resources?tabs=winxr

[8]

Hololens 2直接获取并渲染手部位置(不渲染默认面片): https://blog.csdn.net/weixin_44510411/article/details/118051327

[9]

练习 - 向对象添加手部交互脚本: https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-7-exercise-hand-interaction-with-objectmanipulator

[10]

打包Hololens2 VS error MSB3774: 找不到 SDK“WindowsMobile, Version=10.0.19041.0”解决办法: https://blog.csdn.net/Xiao_Chen____/article/details/121972547

hololens程序如何开发?由讯客互联建站教程栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“hololens程序如何开发?