图书目录

目 录 

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