【Unity】HoloLens2 开发日记(博客搬家,老文章)
2022/1/12
第一天! START !
配置环境
-
Windows 10 SDK 地址:Windows SDK - Windows 应用开发 (microsoft.com)
-
MRTK(混合现实工具包):Download Mixed Reality Feature Tool from Official Microsoft Download Center
-
安装以上的MRTK之前,需要先安装.NET 5.0,地址:Download .NET 5.0 Runtime (microsoft.com)
几个Download的按钮都试了,都仍然打不开MRTK,最后选了第一个Download x64,打开了...
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703142947666-1725332827.webp)
Unity创建项目
我的项目创建在:E:\UnityProject\Secondary\MRTK_JIM
打开MRTK,Project Path选为自己的Unity项目根目录。
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143008252-1947016112.webp)
之后,有很多个可供安装的功能,我只选了两个基础的,一个是 MRTK工具包基础。
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143018979-276187223.webp)
一个是OpenXR插件。
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143024823-103274171.webp)
题外话:Khronos 联盟为解决 AR 和 VR 标准碎片化问题,联合各大制造商和平台、引擎商等联合制定了 OpenXR 标准,该标准的初始版本于去年夏天发布,今日 OpenXR 标准迎来了自己的 1.0 正式版。AR 和 VR 设备现在都支持该 API。
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143056488-542151719.webp)
成功后打开Unity,之后步骤见官方文档,本篇只做一些关键步骤的记录。
( !这条不知道我说的对不对!)此处忘了安装Windows 10 SDK,出现以下情况。
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143206660-1332853256.webp)
下一步,检查基本配置:
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143216778-1516745066.webp)
关于以下配置槽(红框部分)相关的基础概念知识可以看 Import and configure resources - Learn | Microsoft Docs
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143307055-1195392463.webp)
一个小表(PC模拟HoloLens输入的一些基础操作)
![图片名称](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143320143-1361169617.webp)
2022/1/15
用VS直接进行调试
初次连接,需要 PC 和 HoloLens两者都开启开发者模式,才可以互相识别到(VS里才会检测到HoloLens这个设备,调试的时候才有选项可以选)
-
网址在这:使用 Visual Studio 进行部署和调试 - Mixed Reality | Microsoft Docs
-
网址上的内容,最重要是下面图片上的这个内容:
![开发人员模式](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143342601-1893018589.webp)
- 开启了之后,按以下链接里的方法,用Type-C连接头盔和电脑,进行测试:
将应用程序生成到 HoloLens2 。
这个链接往下拉,小标题是将应用程序生成到 HoloLens 2 ,里面就是方法了。 - 概括:Build之后,打开.sln文件,一个选Release,一个选设备。
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143410688-439578844.webp)
- 然后点调试,选这个:
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143420393-1384180842.webp)
2022/1/28
- 此次所需 Unity Package 的下载链接(点击自动下载):教学包下载链接
布置对象
此次的教程链接:HoloLens2 开发 第二单元教学:在场景中放置月球漫游车
- GridObjectCollection 组件可以对子物体进行布局
- 求解器(就是一些封装好的脚本):
- DirectionalIndicator :指示方向
- TapToPlace :放置物体
UI
此次的教程链接:HoloLens2 开发 第三单元教学 :三位对象交互指南
- 可按压的实体按钮 : PressableRoundButton 预制体
- 跟随用户的动态菜单:菜单的预制体在混合现实工具包基础(MRTK Foundation)那个包(从Package进入)里。具体见教程:按钮和动态菜单面板
空间映射
导出到HoloLens后有空间的网格线,我想把它去掉,试试关掉空间映射行不行
(不行,因为这样子相当于把空间映射的整个功能关闭了,而我只想关网格)。
文档地址:Unity 中的空间映射
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143527649-1700964717.webp)
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143537380-1461175299.webp)
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143544316-395588217.webp)
这样应该可以关网格:
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143554179-26344271.webp)
- 试了下关闭网格了,但是好像空间映射也关闭了,感知不到地面了?
2022/2/..
Exercise - Manipulate 3D objects using bounds control - Learn | Microsoft Docs
-
想操纵一个物体,需要使它有:Collider、ObjectManipulator、NearInteractionGrabble三个组件。
-
边界控制组件(BoundsControl)
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143617004-705413800.webp)
2022/3/2
- 写了开题报告
2022/3/3
凝视(目视)追踪
- 凝视追踪:Exercise - Use eye-tracking - Learn | Microsoft Docs
- 首先改配置(在MixedRealityToolkit对象的组件里)
MRTK的配置文件是 树状 的,每一个结点都保留了一个默认配置,而默认配置文件是不可以修改的,要修改只有先克隆一份,去修改那个新的配置文件。
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143651755-1177285551.webp)
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143706668-1290346279.webp)
- 对于需要被注视的物体,需要添加EyeTrackingTarget组件。
语音指令
- 语音输入的配置,还是在Input之下:
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143725379-342355112.webp)
- 往下拉,有一个添加语音关键词的配置,这四个是我加的。
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143732619-153520549.webp)
- 创建一个空物体,给它加个组件SpeechInputHandler,这里就是用来给上一步添加的关键词绑定行为的。
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143750608-1577127684.webp)
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143752790-1879027259.webp)
注:
- 创建一个SpeechInputHandler_Global的物体,是为了有个全局的语音识别(无论对空气中的哪个方向说,都能被听到)
- 而在某个物体上,挂上SpeechInputHandler脚本,是为了让用户只对这个物体实施语音命令。
- 怎么样实现两者的不同需求? 回答:在该组件中有一个IsFocusRequired的属性。
![](https://img2024.cnblogs.com/blog/2217860/202407/2217860-20240703143803175-847623623.webp)