目 录
CONTENTS
基 础 篇
第1 章 AR 开发入门 ……………………………………………………………………………… 3
1.1 增强现实技术概述 ……………………………………………………………………… 3
1.1.1 AR 概念 …………………………………………………………………………… 3
1.1.2 AR 技术应用 ……………………………………………………………………… 5
1.2 AR 技术原理 ……………………………………………………………………………… 5
1.2.1 传感器数据 ……………………………………………………………………… 6
1.2.2 前端里程计 ……………………………………………………………………… 8
1.2.3 后端优化 ………………………………………………………………………… 8
1.2.4 回环检测 ………………………………………………………………………… 8
1.2.5 建图 ……………………………………………………………………………… 9
1.3 AR Foundation 概述 …………………………………………………………………… 10
1.3.1 AR Foundation 与ARKit ……………………………………………………… 11
1.3.2 AR Foundation 支持的功能 …………………………………………………… 11
1.3.3 AR Foundation 功能概述 ……………………………………………………… 12
1.3.4 AR Foundation 体系架构概述 ………………………………………………… 13
1.3.5 基本术语 ……………………………………………………………………… 13
1.4 支持的设备 …………………………………………………………………………… 15
1.5 开发环境准备 ………………………………………………………………………… 16
1.5.1 所需硬件和软件 ……………………………………………………………… 16
1.5.2 软件安装 ……………………………………………………………………… 17
1.6 ARKit 初体验 ………………………………………………………………………… 20
1.6.1 工程创建 ……………………………………………………………………… 20
1.6.2 工具包导入 …………………………………………………………………… 22
1.6.3 工程设置 ……………………………………………………………………… 24
1.6.4 环境搭建 ……………………………………………………………………… 26
目 录
IV AR Foundation 增强现实开发实战(ARKit 版)
1.6.5 代码编写 ……………………………………………………………………… 29
1.6.6 发布Xcode 工程 ……………………………………………………………… 31
1.6.7 调试运行 ……………………………………………………………………… 34
1.7 Unity XR 模拟工具 …………………………………………………………………… 36
1.8 ARKit 会话录制与重放 ……………………………………………………………… 40
1.9 其他模拟器 …………………………………………………………………………… 42
第2 章 AR Foundation 基础 …………………………………………………………………… 46
2.1 AR Foundation 体系架构 ……………………………………………………………… 46
2.1.1 AR 子系统概念 ………………………………………………………………… 47
2.1.2 AR 子系统使用 ………………………………………………………………… 48
2.1.3 跟踪子系统 …………………………………………………………………… 50
2.2 AR Session 和XR Origin ……………………………………………………………… 50
2.2.1 AR Session ……………………………………………………………………… 51
2.2.2 XR Origin ……………………………………………………………………… 54
2.3 可跟踪对象 …………………………………………………………………………… 56
2.3.1 可跟踪对象管理器 …………………………………………………………… 57
2.3.2 可跟踪对象事件 ……………………………………………………………… 58
2.3.3 管理可跟踪对象 ……………………………………………………………… 59
2.4 会话管理 ……………………………………………………………………………… 60
第3 章 ARKit 功能特性与开发基础 ………………………………………………………… 63
3.1 ARKit 概述及主要功能 ……………………………………………………………… 63
3.1.1 ARKit 功能 …………………………………………………………………… 64
3.1.2 ARKit 三大基础能力 ………………………………………………………… 66
3.1.3 ARKit 的不足 ………………………………………………………………… 68
3.2 运动跟踪原理 ………………………………………………………………………… 69
3.2.1 ARKit 坐标系 ………………………………………………………………… 69
3.2.2 ARKit 运动跟踪分类 ………………………………………………………… 70
3.2.3 ARKit 运动跟踪 ……………………………………………………………… 72
3.2.4 ARKit 使用运动跟踪的注意事项 …………………………………………… 74
3.3 设备可用性检查 ……………………………………………………………………… 74
3.4 AR 会话生命周期管理与跟踪质量 …………………………………………………… 75
3.5 基于地理位置的AR …………………………………………………………………… 79
3.5.1 技术基础 ……………………………………………………………………… 79
3.5.2 实践 …………………………………………………………………………… 81
  目 录 V
3.6 热管理 ………………………………………………………………………………… 87
3.7 AR 轻应用 ……………………………………………………………………………… 90
功能技术篇
第4 章 平面检测与锚点管理…………………………………………………………………… 95
4.1 平面检测引导 ………………………………………………………………………… 95
4.1.1 Unity 实现 ……………………………………………………………………… 95
4.1.2 ARKit 引导视图 ……………………………………………………………… 99
4.2 平面管理 ……………………………………………………………………………… 105
4.2.1 平面检测 ……………………………………………………………………… 105
4.2.2 可视化平面 …………………………………………………………………… 106
4.2.3 个性化渲染平面 ……………………………………………………………… 107
4.2.4 开启与关闭平面检测功能 …………………………………………………… 112
4.2.5 显示与隐藏已检测平面 ……………………………………………………… 113
4.2.6 平面遮挡 ……………………………………………………………………… 115
4.3 射线检测 ……………………………………………………………………………… 117
4.3.1 射线检测概念 ………………………………………………………………… 117
4.3.2 射线检测详细讲解 …………………………………………………………… 119
4.4 可视化放置点 ………………………………………………………………………… 120
4.5 特征点与点云 ………………………………………………………………………… 123
4.5.1 特征点 ………………………………………………………………………… 123
4.5.2 点云 …………………………………………………………………………… 124
4.5.3 点云数据采集 ………………………………………………………………… 125
4.6 锚点 …………………………………………………………………………………… 129
4.7 平面分类 ……………………………………………………………………………… 133
4.8 场景表面网格 ………………………………………………………………………… 136
4.8.1 场景几何 ……………………………………………………………………… 137
4.8.2 场景几何语义 ………………………………………………………………… 141
第5 章 2D 图像与3D 物体检测跟踪 ………………………………………………………… 150
5.1 2D 图像检测跟踪 ……………………………………………………………………… 150
5.1.1 图像检测跟踪基本操作 ……………………………………………………… 150
5.1.2 图像检测跟踪功能的启用与禁用 …………………………………………… 155
5.1.3 多图像检测跟踪 ……………………………………………………………… 156
VI AR Foundation 增强现实开发实战(ARKit 版)
5.1.4 运行时创建参考图像库 ……………………………………………………… 161
5.1.5 运行时切换参考图像库 ……………………………………………………… 162
5.1.6 运行时添加参考图像 ………………………………………………………… 163
5.1.7 脱卡 …………………………………………………………………………… 167
5.1.8 图像检测跟踪优化 …………………………………………………………… 169
5.2 3D 物体检测跟踪 ……………………………………………………………………… 171
5.2.1 获取参考物体空间特征信息 ………………………………………………… 171
5.2.2 扫描获取物体空间特征信息的注意事项 …………………………………… 174
5.2.3 AR Tracked Object Manager 组件 …………………………………………… 175
5.2.4 3D 物体检测识别跟踪基本操作 ……………………………………………… 176
5.2.5 3D 物体检测跟踪启用与禁用 ………………………………………………… 177
5.2.6 多物体检测识别跟踪 ………………………………………………………… 179
第6 章 人脸检测跟踪…………………………………………………………………………… 182
6.1 人脸检测基础 ………………………………………………………………………… 182
6.1.1 人脸检测概念 ………………………………………………………………… 182
6.1.2 人脸检测技术基础 …………………………………………………………… 183
6.2 人脸姿态与网格 ……………………………………………………………………… 185
6.2.1 人脸姿态 ……………………………………………………………………… 185
6.2.2 人脸网格 ……………………………………………………………………… 187
6.3 多人脸检测 …………………………………………………………………………… 192
6.4 BlendShapes …………………………………………………………………………… 194
6.4.1 BlendShapes 基础 ……………………………………………………………… 194
6.4.2 BlendShapes 技术原理 ………………………………………………………… 195
6.4.3 BlendShapes 的使用 …………………………………………………………… 197
6.5 同时开启前后摄像头 ………………………………………………………………… 199
6.6 眼动跟踪 ……………………………………………………………………………… 202
第7 章 光影效果………………………………………………………………………………… 208
7.1 光照基础 ……………………………………………………………………………… 208
7.1.1 光源 …………………………………………………………………………… 208
7.1.2 光与材质的交互 ……………………………………………………………… 209
7.1.3 光照模型 ……………………………………………………………………… 210
7.1.4 3D 渲染 ………………………………………………………………………… 211
7.2 光照估计 ……………………………………………………………………………… 211
7.2.1 光照一致性 …………………………………………………………………… 212
  目 录 VII
7.2.2 光照估计实例 ………………………………………………………………… 212
7.3 环境反射 ……………………………………………………………………………… 216
7.3.1 立方体贴图 …………………………………………………………………… 216
7.3.2 PBR 渲染 ……………………………………………………………………… 217
7.3.3 反射探头 ……………………………………………………………………… 218
7.3.4 纹理采样过滤 ………………………………………………………………… 218
7.3.5 AR Environment Probe Manager 组件 ………………………………………… 220
7.3.6 环境反射使用 ………………………………………………………………… 222
7.3.7 性能优化 ……………………………………………………………………… 224
7.4 内置实时阴影 ………………………………………………………………………… 225
7.4.1 ShadowMap 技术原理 ………………………………………………………… 226
7.4.2 使用实时阴影 ………………………………………………………………… 227
7.5 Planar 阴影 …………………………………………………………………………… 231
7.5.1 数学原理 ……………………………………………………………………… 232
7.5.2 代码实现 ……………………………………………………………………… 233
7.6 伪阴影 ………………………………………………………………………………… 238
第8 章 持久化存储与多人共享………………………………………………………………… 240
8.1 云锚点 ………………………………………………………………………………… 240
8.2 ARWorldMap …………………………………………………………………………… 241
8.2.1 ARWorldMap 概述 …………………………………………………………… 241
8.2.2 ARWorldMap 实例 …………………………………………………………… 242
8.3 协作会话 ……………………………………………………………………………… 247
8.3.1 协作会话概述 ………………………………………………………………… 248
8.3.2 协作会话实例 ………………………………………………………………… 251
8.3.3 协作会话使用注意事项 ……………………………………………………… 255
8.4 Azure 空间定位点 ……………………………………………………………………… 257
8.4.1 Azure 空间定位点概述 ………………………………………………………… 257
8.4.2 Azure 空间定位点使用实例 …………………………………………………… 257
8.4.3 Azure 空间定位点使用注意事项 ……………………………………………… 266
第9 章 肢体动作捕捉与人形遮挡……………………………………………………………… 267
9.1 2D 人体姿态估计 ……………………………………………………………………… 267
9.1.1 人体骨骼关节点检测 ………………………………………………………… 267
9.1.2 使用2D 人体姿态估计 ………………………………………………………… 268
VIII AR Foundation 增强现实开发实战(ARKit 版)
9.2 3D 人体姿态估计 ……………………………………………………………………… 273
9.2.1 3D 人体姿态估计基础 ………………………………………………………… 273
9.2.2 使用3D 人体姿态估计实例 …………………………………………………… 284
9.3 人形遮挡 ……………………………………………………………………………… 285
9.3.1 人形遮挡原理 ………………………………………………………………… 286
9.3.2 人形遮挡实现 ………………………………………………………………… 288
9.4 人形提取 ……………………………………………………………………………… 289
第10 章 场景图像获取与场景深度 …………………………………………………………… 294
10.1 获取GPU 图像 ……………………………………………………………………… 294
10.1.1 获取摄像头原始图像 ……………………………………………………… 294
10.1.2 获取屏幕显示图像 ………………………………………………………… 296
10.2 获取CPU 图像 ……………………………………………………………………… 299
10.2.1 AR 摄像头图像数据流 ……………………………………………………… 300
10.2.2 从CPU 中获取摄像头图像 ………………………………………………… 301
10.3 边缘检测原理 ………………………………………………………………………… 310
10.3.1 卷积 ………………………………………………………………………… 311
10.3.2 Sobel 算子 …………………………………………………………………… 311
10.4 CPU 图像边缘检测实例 ……………………………………………………………… 313
10.5 Depth API …………………………………………………………………………… 316
10.5.1 Depth API 概述 ……………………………………………………………… 317
10.5.2 Depth API 实例 ……………………………………………………………… 319
10.5.3 场景深度应用场景 ………………………………………………………… 324
第11 章 相机与手势操作 ……………………………………………………………………… 326
11.1 AR 场景操作 ………………………………………………………………………… 326
11.1.1 场景操作方法 ……………………………………………………………… 327
11.1.2 场景操作实例 ……………………………………………………………… 327
11.2 手势操作交互 ………………………………………………………………………… 329
11.2.1 手势检测 …………………………………………………………………… 329
11.2.2 手势操作控制 ……………………………………………………………… 332
11.3 XR Interaction Toolkit ………………………………………………………………… 334
11.3.1 对象放置 …………………………………………………………………… 335
11.3.2 对象选择 …………………………………………………………………… 339
11.3.3 对象操作 …………………………………………………………………… 341
  目 录 IX
第12 章 3D 文字与音视频 ……………………………………………………………………… 343
12.1 3D 文字 ……………………………………………………………………………… 343
12.1.1 文字单位换算 ……………………………………………………………… 343
12.1.2 中文字体制作 ……………………………………………………………… 344
12.2 3D 声频 ……………………………………………………………………………… 345
12.2.1 3D 声场原理 ………………………………………………………………… 346
12.2.2 空间声频使用 ……………………………………………………………… 347
12.2.3 使用空间声频 ……………………………………………………………… 347
12.2.4 运行时启用和禁用3D 音效 ……………………………………………… 350
12.2.5 使用回响营造空间感 ……………………………………………………… 351
12.2.6 3D 音效设计原则 …………………………………………………………… 354
12.3 3D 视频 ……………………………………………………………………………… 355
12.3.1 Video Player 组件 …………………………………………………………… 355
12.3.2 3D 视频播放实现 …………………………………………………………… 358
12.3.3 视频音效空间化 …………………………………………………………… 361
第13 章 USDZ 与AR Quick Look …………………………………………………………… 362
13.1 USDZ 概述 …………………………………………………………………………… 362
13.1.1 USD ………………………………………………………………………… 362
13.1.2 USDZ ………………………………………………………………………… 363
13.2 USDZ 文件转换 ……………………………………………………………………… 363
13.2.1 USDZ Tools ………………………………………………………………… 363
13.2.2 Reality Converter …………………………………………………………… 364
13.2.3 USD Unity 插件 …………………………………………………………… 366
13.3 AR Quick Look 概述 ………………………………………………………………… 367
13.4 App 应用中嵌入AR Quick Look …………………………………………………… 370
13.5 Web 网页中嵌入AR Quick Look …………………………………………………… 374
13.5.1 选择支付样式 ……………………………………………………………… 376
13.5.2 显示自定义按钮文件 ……………………………………………………… 376
13.5.3 自定义显示文字 …………………………………………………………… 377
13.5.4 自定义显示条目 …………………………………………………………… 378
13.5.5 自定义条目高度 …………………………………………………………… 378
13.5.6 事件处理 …………………………………………………………………… 379
13.6 使用AR Quick Look 的注意事项 …………………………………………………… 379
X AR Foundation 增强现实开发实战(ARKit 版)
高 级 篇
第14 章 AR 应用设计指南 …………………………………………………………………… 385
14.1 移动AR 带来的挑战 ………………………………………………………………… 385
14.1.1 3D 化思维 …………………………………………………………………… 385
14.1.2 用户必须移动 ……………………………………………………………… 386
14.1.3 要求手持设备 ……………………………………………………………… 386
14.1.4 近脸使用 …………………………………………………………………… 387
14.1.5 手势操作 …………………………………………………………………… 387
14.1.6 启动应用 …………………………………………………………………… 387
14.1.7 色彩运用 …………………………………………………………………… 388
14.2 移动AR 设计准则 …………………………………………………………………… 388
14.2.1 实用性或娱乐性 …………………………………………………………… 388
14.2.2 虚实融合必须有意义 ……………………………………………………… 389
14.2.3 移动限制 …………………………………………………………………… 389
14.2.4 心理预期与维度转换 ……………………………………………………… 389
14.2.5 环境影响 …………………………………………………………………… 390
14.2.6 视觉效果 …………………………………………………………………… 390
14.2.7 UI 设计 ……………………………………………………………………… 391
14.2.8 沉浸式交互 ………………………………………………………………… 391
14.3 移动AR 设计指南 …………………………………………………………………… 392
14.3.1 环境 ………………………………………………………………………… 393
14.3.2 用户细节 …………………………………………………………………… 394
14.3.3 虚拟内容 …………………………………………………………………… 396
14.3.4 交互 ………………………………………………………………………… 403
14.3.5 视觉设计 …………………………………………………………………… 407
14.3.6 真实感 ……………………………………………………………………… 412
14.3.7 3D 音效 ……………………………………………………………………… 416
第15 章 性能优化 ……………………………………………………………………………… 419
15.1 性能优化基础 ………………………………………………………………………… 419
15.1.1 影响性能的主要因素 ……………………………………………………… 419
15.1.2 AR 应用常用调试方法 ……………………………………………………… 421
15.1.3 AR 应用性能优化一般原则 ………………………………………………… 422
  目 录 XI
15.2 AR 应用性能调试工具 ……………………………………………………………… 423
15.2.1 DebugMenu ………………………………………………………………… 423
15.2.2 Unity 分析器 ………………………………………………………………… 424
15.2.3 帧调试器 …………………………………………………………………… 427
15.3 Unity 分析器使用 …………………………………………………………………… 428
15.3.1 CPU 使用情况分析器 ……………………………………………………… 428
15.3.2 渲染情况分析器 …………………………………………………………… 429
15.3.3 内存使用情况分析器 ……………………………………………………… 430
15.3.4 物理分析器 ………………………………………………………………… 431
15.3.5 音视频分析器 ……………………………………………………………… 432
15.4 性能优化流程 ………………………………………………………………………… 432
15.4.1 收集运行数据 ……………………………………………………………… 433
15.4.2 分析运行数据 ……………………………………………………………… 434
15.4.3 确定问题原因 ……………………………………………………………… 436
15.5 渲染优化 ……………………………………………………………………………… 437
15.5.1 渲染流程 …………………………………………………………………… 437
15.5.2 CPU 瓶颈 …………………………………………………………………… 438
15.5.3 GPU 瓶颈 …………………………………………………………………… 441
15.6 代码优化 ……………………………………………………………………………… 443
15.6.1 内存管理 …………………………………………………………………… 443
15.6.2 垃圾回收 …………………………………………………………………… 444
15.6.3 对象池 ……………………………………………………………………… 449
15.6.4 常见影响性能的代码优化策略 …………………………………………… 450
15.7 ARKit 优化设置 ……………………………………………………………………… 452
15.7.1 UI/UX 优化 ………………………………………………………………… 452
15.7.2 常用优化设置 ……………………………………………………………… 452
15.7.3 AR 应用开发一般注意事项 ………………………………………………… 454