HoloLens2开发入门精要——基于Unity和MRTK

HoloLens2开发入门精要——基于Unity和MRTK"

作者:汪祥春
ISBN:9787302589914
定价:¥109
字数:千字
页数:
出版时间:2021.12.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书主要讲述利用Unity和MRTK进行HoloLens2设备上的MR应用开发,对MR应用开发中涉及的技术进行了全方位的讲述,用语通俗易懂,阐述深入浅出。

本书共分4个部分:第一部分为基础篇,包括第1章和第2章,本篇从混合现实概念入手,简述HoloLens2设备的技术特性、基本开发步骤及调试部署、MRTK体系架构、配置文件使用等基础知识,立意高屋建瓴,通过对HoloLens2设备和MRTK的介绍,希望读者对在HoloLens2设备上进行MR应用开发有一个初步的印象;第二部分为操作组件篇,包括第3~5章,本篇主要阐述对HoloLens2设备功能特性的基本开发及操作、系统讲解MRTK提供的各类功能组件和UX控件操作使用;第三部分为功能技术篇,包括第6~12章,本篇针对HoloLens2设备上的MR应用开发进行深入全面阐述、剖析讲解,力图从原理到实践,全方位覆盖MR应用开发技术方方面面,每章节都配有详尽的可执行代码及代码的详细说明;第四部分为提高篇,包括第13章和第14章,本篇不仅讨论MR应用与普通应用的区别,也指出在MR应用开发中应该注意的事项,提出了在MR应用开发中应该遵循的基本原则,并对如何排查MR应用性能问题及基本性能优化原则进行了比较深入的探究。

本书面向MR应用开发初学者与Unity工程师,也可以作为高校、大专院校相关专业师生的学习用书,以及培训学校的培训教材。

前言

前 言 

PREFACE 

HoloLens 2设备从 HoloLens 1代发展而来,是一台可穿戴的一体式全息计算设备,它具有目前业内最好的光波导显示组件,拥有独立的计算单元,可进行实时手势检测、语音命令、空间感知、运动跟踪、眼动跟踪等解算。 HoloLens 2设备发布后,在工业和军事领域取得了巨大成功,也成为 AR眼镜中名副其实的佼佼者。在计算机视觉与人工智能技术的推动下, HoloLens 2设备无论是跟踪精度、设备性能,还是人机交互自然性上都有了很大提高,已基本满足大众对 AR眼镜的期望。据权威机构预测, AR/MR会成为下一个十年改变人们生活、工作最重要的技术之一,并在 5G通信技术的助力下出现应用高潮。 

HoloLens 2设备是微软公司在前沿科技领域的重大技术布局,引领着移动 AR眼镜的发展方向,并且围绕 HoloLens 2设备上的 MR应用,微软公司构建了一系列软硬件生态,包括 Azure云服务、 Microsoft Mesh等,正全力推动 MR技术在各行各业、工作生活的各个角落落地应用,一个崭新的人机交互设备正在悄然改变着一切。

本书主要讲述利用 Unity和 MRTK进行 HoloLens 2设备上的 MR应用开发,旨在为 MR技术开发人员提供一份相对完善、成体系的学习材料,帮助开发者系统性地掌握 MR开发的相关知识,建立 MR应用开发知识体系。 

AR/MR技术是一种将虚拟信息与真实世界融合展示的技术,其广泛运用了人工智能、三维建模、实时跟踪注册、虚实融合、智能交互、传感计算等多种技术手段,将计算机生成的文字、图像、三维模型、声频、视频、动画等虚拟信息模拟仿真后应用到真实世界中。 AR技术同时考虑了真实世界与虚拟信息的相互关系,虚实信息互为补充,从而实现对真实世界的增强,并能实时虚实交互。

本书注重利用 MRTK进行 MR应用开发的实际应用,但在讲解技术点的同时对其原理、技术背景进行了较深入的探究,采取循序渐进的方式,使读者知其然更能知其所以然,一步一步地将读者带入 MR应用开发的殿堂。

前置知识

本书面向 MR应用开发初学者与 Unity工程师,内容讲述尽量采用通俗易懂的语言,从基础入门,但仍然希望读者能具备以下前置知识。

(1)熟悉 Unity引擎的使用操作,掌握 Unity开发的基本技能,能熟练进行一般性的模型导入和导出、属性设置、发布部署等。

(2)熟悉 C#高级语言,掌握基本的 C#语法及常见数据结构、编码技巧,对常见游戏对

HoloLens 2开发入门精要——基于 Unity和 MRTK

象的代码操作、事件绑定等有一定的理解。

(3)了解 Visual Studio开发环境,能进行基本的开发环境设置、功能调试、资源使用等。

(4)了解图形学。数字三维空间是用数学精确描述的虚拟世界,如果读者对坐标系、向量及基本的代数运算有所了解,会对理解 MR应用的工作原理、渲染管线有很大帮助,但本书中没有直接应用到复杂的数学计算,读者不用太担心。

预期读者

本书属于技术类书籍,预期读者人群包括:(1)高等学校及对计算机技术有浓厚兴趣的专科学校的学生。(2)对 MR技术有兴趣的科技工作者。(3)向 MR转行的程序员。(4)研究讲授 MR技术的教师。(5)HoloLens 2设备应用开发人员。

本书特色

(1)结构清晰。本书共分 4部分:第一部分为基础篇,第二部分为操作组件篇,第三部分为功能技术篇,第四部分为提高篇。紧紧围绕利用 MRTK的 MR开发,从各个侧面对其功能特性进行全面讲述。

(2)循序渐进。本书充分考虑不同知识背景读者的需求,按知识点循序渐进,通过大量配图、实例进行详细讲解,力求使 MR初学者能快速掌握使用 MRTK进行 MR应用开发。

(3)深浅兼顾。在讲解各功能技术点时对其技术原理、理论脉络进行了较深入的探究,语言通俗易懂,对技术阐述深入浅出。

(4)实用性强。本书实例丰富,每个技术点都配有实例,注重对技术的实际运用,力图解决读者在项目开发中面临的难点问题,实用性非常强。

读者反馈

尽管我们在本书的编写过程中多次对内容、语言描述的连贯性和叙述的准确性进行了审查、校正,但由于作者能力和水平有限,书中难免会出现一些错误,欢迎读者在发现这些问题的时候及时批评指正。

致谢

仅以此书献给笔者的妻子欧阳女士、孩子妍妍及轩轩,是你们的支持让笔者能勇往直前,永远爱你们,也感谢赵佳霓编辑对本书的大力支持。

汪祥春 

2021年 8月

本书源代码

目录

目 录 

CONTENTS

基础篇

第 1章 HoloLens 2基础 ………………………………………………………………………… 3 

1.1 混合现实技术概述 ……………………………………………………………………… 3 

1.1.1 MR概念 ………………………………………………………………………… 3 

1.1.2 全息图 …………………………………………………………………………… 

5 1.2 HoloLens 2设备 ………………………………………………………………………… 5 

1.3 MR技术原理 …………………………………………………………………………… 8 

1.3.1 传感器数据 ……………………………………………………………………… 8 

1.3.2 前端里程计 …………………………………………………………………… 10 

1.3.3 后端优化 ……………………………………………………………………… 10 

1.3.4 回环检测 ……………………………………………………………………… 11 

1.3.5 建图 …………………………………………………………………………… 11 

1.4 开发环境准备 ………………………………………………………………………… 12 

1.4.1 所需硬件和软件 ……………………………………………………………… 12 

1.4.2 软件安装 ……………………………………………………………………… 13 

1.4.3 软件配置 ……………………………………………………………………… 15 

1.5 MR应用开发初体验 ………………………………………………………………… 16 

1.5.1 创建工程 ……………………………………………………………………… 16 

1.5.2 直接导入 MRTK工具包 ……………………………………………………… 17 

1.5.3 使用 UPM导入 MRTK工具包 ……………………………………………… 18 

1.5.4 使用 MRFT导入 MRTK工具包 ……………………………………………… 20 

1.5.5 导入 TextMeshPro工具包 …………………………………………………… 20 

1.5.6 配置 Unity项目 ……………………………………………………………… 21 

1.5.7 创建和设置场景 ……………………………………………………………… 23 

1.5.8 导出 Unity工程 ……………………………………………………………… 23 

1.5.9 部署到 HoloLens 2设备 ……………………………………………………… 23

HoloLens 2开发入门精要——基于 Unity和 MRTK 

1.5.10 发布 MR应用 ………………………………………………………………… 26 

1.6 使用模拟器 …………………………………………………………………………… 27 

1.7 MRTK输入模拟 ……………………………………………………………………… 29 

1.8 设备能力检查 ………………………………………………………………………… 31

第 2章 MRTK基础 …………………………………………………………………………… 33 

2.1 MRTK概述 …………………………………………………………………………… 33 

2.2 MRTK体系架构 ……………………………………………………………………… 34 

2.2.1 配置文件 ……………………………………………………………………… 36 

2.2.2 运行时 ………………………………………………………………………… 36 

2.2.3 服务 …………………………………………………………………………… 36 

2.2.4 扩展服务 ……………………………………………………………………… 39 

2.2.5 数据提供者 …………………………………………………………………… 41 

2.3 配置文件 ……………………………………………………………………………… 43 

2.3.1 配置文件概述 ………………………………………………………………… 44 

2.3.2 配置指南 ……………………………………………………………………… 46

操作组件篇

第 3章基本特性操作与开发…………………………………………………………………… 61 

3.1 HoloLens 2设备门户 ………………………………………………………………… 61 

3.1.1 连接设备门户 ………………………………………………………………… 61 

3.1.2 功能简介 ……………………………………………………………………… 62 

3.2 研究模式 ……………………………………………………………………………… 67 

3.3 图像与视频捕获 ……………………………………………………………………… 68 

3.3.1 在设备中直接操作 …………………………………………………………… 68 

3.3.2 在设备门户中操作 …………………………………………………………… 68 

3.3.3 代码操作 ……………………………………………………………………… 69 

3.4 全息远端呈现 ………………………………………………………………………… 81 

3.4.1 在 Unity编辑器中使用全息远端呈现 ……………………………………… 81 

3.4.2 MR应用程序使用全息远端呈现 …………………………………………… 82 

3.5 诊断系统 ……………………………………………………………………………… 84 

3.6 动态 GLTF格式模型加载 …………………………………………………………… 86 

3.7 多场景管理 …………………………………………………………………………… 88 

3.7.1 场景系统配置 ………………………………………………………………… 88 

3.7.2 场景加载与卸载 ……………………………………………………………… 90 

3.7.3 场景加载进度与事件 ………………………………………………………… 91

第 4章交互与事件……………………………………………………………………………… 95 

4.1 Bounds Control ………………………………………………………………………… 95 

4.1.1 基本操作 ……………………………………………………………………… 96 

4.1.2 HoloLens 2风格 ……………………………………………………………… 101 

4.1.3 事件 …………………………………………………………………………… 103 

4.1.4 使用代码操作 ………………………………………………………………… 103 

4.2 Object Manipulator …………………………………………………………………… 105 

4.2.1 基本操作 ……………………………………………………………………… 105 

4.2.2 事件 …………………………………………………………………………… 108 

4.3 Constraint Manager …………………………………………………………………… 108 

4.3.1 基本操作 ……………………………………………………………………… 108 

4.3.2 约束组件 ……………………………………………………………………… 109 

4.4 Interactable……………………………………………………………………………… 111 

4.4.1 基本操作 ……………………………………………………………………… 111 

4.4.2 Interactable 配置节 …………………………………………………………… 114 

4.4.3 事件 …………………………………………………………………………… 115 

4.4.4 视觉主题 ……………………………………………………………………… 116 

4.4.5 代码操作 ……………………………………………………………………… 122 

4.5 Solvers ………………………………………………………………………………… 124 

4.5.1 解算器基础 …………………………………………………………………… 124 

4.5.2 标准解算器 …………………………………………………………………… 126 

4.6 手指手掌可视化 ……………………………………………………………………… 130 

4.6.1 Fingertip Visualization ………………………………………………………… 130 

4.6.2 RiggedHandVisualizer ………………………………………………………… 131 

4.6.3 ArticulatedHandMeshPulse …………………………………………………… 132 

4.7 Elastic System ………………………………………………………………………… 133 

4.8 Dock …………………………………………………………………………………… 134

第 5章 UX控件 ………………………………………………………………………………… 136 

5.1 按钮 …………………………………………………………………………………… 136 

5.1.1 按钮的使用 …………………………………………………………………… 138 

5.1.2 自定义按钮 …………………………………………………………………… 141 

HoloLens 2开发入门精要——基于 Unity和 MRTK 

5.2 Slate面板 ……………………………………………………………………………… 143 

5.3 系统键盘 ……………………………………………………………………………… 144 

5.4 ToolTips ………………………………………………………………………………… 144 

5.5 Sliders ………………………………………………………………………………… 145 

5.6 近身菜单 ……………………………………………………………………………… 146 

5.7 应用程序栏 …………………………………………………………………………… 148 

5.8 进度指示器 …………………………………………………………………………… 148 

5.9 对话框 ………………………………………………………………………………… 150 

5.10 手势引导 ……………………………………………………………………………… 151 

5.10.1 HandInteractionhint组件 …………………………………………………… 152 

5.10.2 MoveToTarget组件 ………………………………………………………… 153 

5.10.3 RotateAroundPoint组件 …………………………………………………… 154

功能技术篇

第 6章空间感知和映射………………………………………………………………………… 157 

6.1 运动跟踪 ……………………………………………………………………………… 157 

6.2 空间感知 ……………………………………………………………………………… 161 

6.3 空间感知代码操作 …………………………………………………………………… 164 

6.4 开发环境中测试空间感知 …………………………………………………………… 168 

6.5 射线检测 ……………………………………………………………………………… 169 

6.6 场景理解和语义 ……………………………………………………………………… 172 

6.6.1 场景理解基础 ………………………………………………………………… 172 

6.6.2 场景理解使用 ………………………………………………………………… 175 

6.7 空间感知和场景理解的应用 ………………………………………………………… 178 

6.7.1 虚拟物体放置 ………………………………………………………………… 179 

6.7.2 遮挡 …………………………………………………………………………… 180 

6.7.3 物理模拟 ……………………………………………………………………… 181 

6.7.4 导航和路径规划 ……………………………………………………………… 181

第 7章手势操作与交互………………………………………………………………………… 182 

7.1 手势输入配置 ………………………………………………………………………… 182 

7.1.1 输入数据提供者 ……………………………………………………………… 183 

7.1.2 手部跟踪 ……………………………………………………………………… 183 

7.1.3 手部指针 ……………………………………………………………………… 184 

7.2 指针概述 ……………………………………………………………………………… 185 

7.3 指针基本操作 ………………………………………………………………………… 187 

7.4 手势操作 ……………………………………………………………………………… 192 

7.4.1 近端操作 ……………………………………………………………………… 192 

7.4.2 远端操作 ……………………………………………………………………… 195 

7.5 手部跟踪 ……………………………………………………………………………… 196 

7.5.1 获取手部姿态 ………………………………………………………………… 197 

7.5.2 获取手部关节 ………………………………………………………………… 198 

7.5.3 获取手部网格 ………………………………………………………………… 199 

7.5.4 手部关节使用演示 …………………………………………………………… 200 

7.6 手势录制和回放 ……………………………………………………………………… 201 

7.6.1 手势录制 ……………………………………………………………………… 202 

7.6.2 手势回放 ……………………………………………………………………… 204 

7.7 手部菜单 ……………………………………………………………………………… 204

第 8章语音与交互……………………………………………………………………………… 208 

8.1 语音命令 ……………………………………………………………………………… 208 

8.1.1 打开话筒功能特性 …………………………………………………………… 208 

8.1.2 设置语音命令关键词 ………………………………………………………… 209 

8.1.3 监听并处理事件 ……………………………………………………………… 209 

8.1.4 自定义语音命令处理逻辑 …………………………………………………… 210 

8.2 语音识别 ……………………………………………………………………………… 211 

8.2.1 添加语音识别数据提供者 …………………………………………………… 212 

8.2.2 监听并处理事件 ……………………………………………………………… 212 

8.2.3 自定义语音命令处理 ………………………………………………………… 213

第 9章眼动跟踪与凝视交互…………………………………………………………………… 215 

9.1 眼动校准 ……………………………………………………………………………… 215 

9.2 眼动跟踪配置 ………………………………………………………………………… 217 

9.2.1 启用凝视输入功能特性 ……………………………………………………… 217 

9.2.2 添加凝视数据提供者 ………………………………………………………… 218 

9.2.3 设置眼动跟踪参数 …………………………………………………………… 218 

9.3 凝视功能使用 ………………………………………………………………………… 220 

9.4 获取凝视数据 ………………………………………………………………………… 220 

HoloLens 2开发入门精要——基于 Unity和 MRTK

第 10章光影与特效 …………………………………………………………………………… 223 

10.1 光照 …………………………………………………………………………………… 223 

10.1.1 光源 ………………………………………………………………………… 224 

10.1.2 光与材质的交互 …………………………………………………………… 224 

10.1.3 光照模型 …………………………………………………………………… 225 

10.1.4 悬浮灯光 …………………………………………………………………… 226 

10.1.5 接近灯光 …………………………………………………………………… 228 

10.2 MRTK标准着色器 …………………………………………………………………… 228 

10.2.1 模型切割 …………………………………………………………………… 230 

10.2.2 轮廓线 ……………………………………………………………………… 232 

10.2.3 挤出与模板测试 …………………………………………………………… 234 

10.3 环境反射 ……………………………………………………………………………… 235 

10.3.1 立方体贴图 ………………………………………………………………… 235 

10.3.2 环境反射与光照估计 ……………………………………………………… 236 

10.4 阴影 …………………………………………………………………………………… 237

第 11章 3D文字与音视频……………………………………………………………………… 241 

11.1 3D文字 ……………………………………………………………………………… 241 

11.1.1 文字单位换算 ……………………………………………………………… 241 

11.1.2 中文字体制作 ……………………………………………………………… 242 

11.2 3D声频 ……………………………………………………………………………… 243 

11.2.1 3D声场原理 ………………………………………………………………… 244 

11.2.2 3D空间音效简单使用 ……………………………………………………… 244 

11.2.3 运行时启用和禁用 3D音效………………………………………………… 248 

11.2.4 UX元素音效 3D化 ………………………………………………………… 249 

11.2.5 使用回响营造空间感 ……………………………………………………… 250 

11.2.6 3D音效设计原则 …………………………………………………………… 252 

11.3 3D视频 ……………………………………………………………………………… 254 

11.3.1 VideoPlayer组件 …………………………………………………………… 254 

11.3.2 视频音效空间化 …………………………………………………………… 258

第 12章空间锚点与 Azure云服务 …………………………………………………………… 259 

12.1 Azure云服务概述 …………………………………………………………………… 259 

12.2 空间锚点 ……………………………………………………………………………… 260 

12.2.1 锚点概述 …………………………………………………………………… 260 

12.2.2 本地锚点 …………………………………………………………………… 262 

12.2.3 本地锚点持久化与传输 …………………………………………………… 266 

12.2.4 云锚点 ……………………………………………………………………… 268 

12.3 远程渲染 ……………………………………………………………………………… 278 

12.4 小结 …………………………………………………………………………………… 287

提高篇

第 13章设计指南 ……………………………………………………………………………… 291 

13.1 MR应用设计挑战 …………………………………………………………………… 291 

13.2 MR应用设计的一般原则 …………………………………………………………… 294 

13.2.1 舒适性 ……………………………………………………………………… 295 

13.2.2 显示呈现 …………………………………………………………………… 299 

13.2.3 UX设计 …………………………………………………………………… 302 

13.2.4 3D音效 ……………………………………………………………………… 305 

13.2.5 视觉效果 …………………………………………………………………… 306 

13.2.6 真实感 ……………………………………………………………………… 308 

13.2.7 跟踪丢失 …………………………………………………………………… 313 

13.3 MR应用交互设计指南 ……………………………………………………………… 313 

13.3.1 指示光标 …………………………………………………………………… 313 

13.3.2 可交互对象 ………………………………………………………………… 315 

13.3.3 本能交互 …………………………………………………………………… 318 

13.3.4 手势交互 …………………………………………………………………… 319 

13.3.5 语音交互 …………………………………………………………………… 325 

13.3.6 凝视交互 …………………………………………………………………… 328

第 14章性能优化 ……………………………………………………………………………… 331 

14.1 性能优化基础 ………………………………………………………………………… 331 

14.1.1 影响性能的主要因素 ……………………………………………………… 331 

14.1.2 MR应用常用调试方法 …………………………………………………… 333 

14.1.3 MR应用性能优化的一般原则 …………………………………………… 334 

14.2 MR应用性能调试工具 ……………………………………………………………… 335 

14.2.1 Unity分析器 ………………………………………………………………… 335 

14.2.2 帧调试器 …………………………………………………………………… 338 

14.3 Unity分析器使用 …………………………………………………………………… 340 

HoloLens 2开发入门精要——基于 Unity和 MRTK 

14.3.1 CPU使用情况分析器 ……………………………………………………… 340 

14.3.2 渲染情况分析器 …………………………………………………………… 341 

14.3.3 内存使用情况分析器 ……………………………………………………… 342 

14.3.4 物理分析器 ………………………………………………………………… 342 

14.3.5 声频视频分析器 …………………………………………………………… 343 

14.4 性能优化的一般步骤 ………………………………………………………………… 344 

14.4.1 收集运行数据 ……………………………………………………………… 345 

14.4.2 分析运行数据 ……………………………………………………………… 346 

14.4.3 确定问题的原因 …………………………………………………………… 348 

14.5 渲染优化 ……………………………………………………………………………… 350 

14.5.1 渲染流程 …………………………………………………………………… 351 

14.5.2 CPU瓶颈 …………………………………………………………………… 351 

14.5.3 GPU瓶颈 …………………………………………………………………… 354 

14.6 代码优化 ……………………………………………………………………………… 356 

14.6.1 内存管理 …………………………………………………………………… 356 

14.6.2 垃圾回收 …………………………………………………………………… 357 

14.6.3 对象池 ……………………………………………………………………… 362 

14.6.4 常见影响性能的代码优化策略 …………………………………………… 363 

14.7 MRTK优化设置……………………………………………………………………… 365 

14.7.1 UI/UX优化 ………………………………………………………………… 365 

14.7.2 常用优化设置 ……………………………………………………………… 366 

14.7.3 MR应用开发一般注意事项 ……………………………………………… 368

附录 A 更多资源………………………………………………………………………………… 369

参考文献…………………………………………………………………………………………… 370 

作者简介

编辑推荐

(1)结构清晰。本书共分4个部分:第一部分为基础篇,第二部分为操作组件篇,第三部分为功能技术篇,第四部分为提高篇。紧紧围绕利用MRTK的MR开发,从各个侧面对其功能特性进行了全面的讲述。

(2)循序渐进。本书充分考虑不同知识背景读者的需求,按知识点循序渐进,通过大量配图、实例进行详细讲解,力求使MR初学者能快速掌握使用MRTK进行MR应用开发。

(3)深浅兼顾。在讲解各功能技术点时对其技术原理、理论脉络进行了较深入的探究,用语通俗易懂,对技术阐述深入浅出。

(4)实用性强。本书实例丰富,每各技术点都有案例,注重对技术的实际运用,力图解决读者在项目开发中面临的难点问题,实用性非常强。

作者寄语

汪祥春,计算机科学与技术专业硕士,全国信标委虚拟现实与增强现实标准工作组成员(CNITSC)、中国增强现实核心技术产业联盟成员(CARA)、华为HDE(Huawei Developer Experts)、CSDN博客专家,申请AR/MR专利3项,拥有深厚的软件工程专业背景和十余年软件项目实施管理经验。著有《基于Unity的ARCore开发实战详细讲解》《AR开发**指南——AR Foundation》《ARKit原生开发入门精粹——RealityKit+Swift+SwiftUI》。

电子资料

www.luweidong.cn

下一个