目 录
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