目 录
CONTENTS
基 础 篇
第 1章 AR开发入门 ……………………………………………………………………………… 1
1.1 增强现实技术概述 ……………………………………………………………………… 3
1.1.1 AR概念 …………………………………………………………………………… 3
1.1.2 AR技术应用……………………………………………………………………… 5
1.2 AR技术原理……………………………………………………………………………… 6
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与 ARCore …………………………………………………… 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 所需硬件和软件 ……………………………………………………………… 17
1.5.2 软件安装 ……………………………………………………………………… 17
1.6 ARCore初体验 ………………………………………………………………………… 19
1.6.1 工程创建 ……………………………………………………………………… 19
1.6.2 工具包导入 …………………………………………………………………… 21
1.6.3 工程设置 ……………………………………………………………………… 22
1.6.4 环境搭建 ……………………………………………………………………… 24
1.6.5 代码编写 ……………………………………………………………………… 27
1.6.6 调试准备 ……………………………………………………………………… 29
1.6.7 打包测试 ……………………………………………………………………… 30
1.7 AR应用调试…………………………………………………………………………… 31
第 2章 AR Foundation基础 …………………………………………………………………… 36
2.1 AR Foundation体系架构 ……………………………………………………………… 36
2.1.1 AR子系统概念………………………………………………………………… 37
2.1.2 AR子系统使用………………………………………………………………… 38
2.1.3 跟踪子系统 …………………………………………………………………… 39
2.2 AR Session & AR Session Origin ……………………………………………………… 40
2.2.1 AR Session……………………………………………………………………… 40
2.2.2 AR Session Origin……………………………………………………………… 43
2.3 可跟踪对象 …………………………………………………………………………… 45
2.3.1 可跟踪对象管理器 …………………………………………………………… 46
2.3.2 可跟踪对象事件 ……………………………………………………………… 47
2.3.3 管理可跟踪对象 ……………………………………………………………… 48
2.4 会话管理 ……………………………………………………………………………… 49
第 3章 ARCore功能特性与开发基础 ………………………………………………………… 52
3.1 ARCore概述及主要功能 ……………………………………………………………… 52
3.1.1 运动跟踪 ……………………………………………………………………… 53
3.1.2 环境理解 ……………………………………………………………………… 53
3.1.3 光照估计 ……………………………………………………………………… 54
3.1.4 ARCore的不足 ………………………………………………………………… 54
3.2 运动跟踪原理 ………………………………………………………………………… 56
3.2.1 ARCore坐标系 ………………………………………………………………… 56
3.2.2 ARCore运动跟踪分类 ………………………………………………………… 56
3.2.3 ARCore运动跟踪 ……………………………………………………………… 58
3.2.4 ARCore使用运动跟踪的注意事项 …………………………………………… 60
3.3 设备可用性检查 ……………………………………………………………………… 61
3.4 AR会话生命周期管理与跟踪质量…………………………………………………… 62
3.5 ARCore扩展包………………………………………………………………………… 65
3.6 相机配置 ……………………………………………………………………………… 66
3.7 会话录制与回放 ……………………………………………………………………… 68
3.7.1 AR Foundation录制与回放 …………………………………………………… 69
3.7.2 ARCore扩展录制与回放 ……………………………………………………… 72
3.8 即时放置 ……………………………………………………………………………… 78
功能技术篇
第 4章平面检测与锚点管理…………………………………………………………………… 85
4.1 平面检测引导 ………………………………………………………………………… 85
4.2 平面管理 ……………………………………………………………………………… 88
4.2.1 平面检测 ……………………………………………………………………… 88
4.2.2 可视化平面 …………………………………………………………………… 89
4.2.3 个性化渲染平面 ……………………………………………………………… 90
4.2.4 开启与关闭平面检测功能 …………………………………………………… 95
4.2.5 显示与隐藏已检测平面 ……………………………………………………… 97
4.2.6 平面遮挡 ……………………………………………………………………… 99
4.3 射线检测 ……………………………………………………………………………… 100
4.3.1 射线检测概念 ………………………………………………………………… 100
4.3.2 射线检测详细讲解 …………………………………………………………… 102
4.4 可视化放置点 ………………………………………………………………………… 104
4.5 特征点与点云 ………………………………………………………………………… 106
4.5.1 特征点 ………………………………………………………………………… 107
4.5.2 点云 …………………………………………………………………………… 108
4.5.3 点云数据采集 ………………………………………………………………… 109
4.6 锚点 …………………………………………………………………………………… 113
第 5章图像检测跟踪…………………………………………………………………………… 118
5.1 图像检测跟踪基本操作 ……………………………………………………………… 118
5.2 图像跟踪功能启用与禁用 …………………………………………………………… 123
5.3 多图像跟踪 …………………………………………………………………………… 124
5.4 运行时创建参考图像库 ……………………………………………………………… 129
5.5 运行时切换参考图像库 ……………………………………………………………… 130
5.6 运行时添加参考图像 ………………………………………………………………… 132
5.7 脱卡 …………………………………………………………………………………… 136
5.8 图像跟踪优化 ………………………………………………………………………… 137
第 6章人脸检测跟踪…………………………………………………………………………… 140
6.1 人脸检测基础 ………………………………………………………………………… 140
6.1.1 人脸检测概念 ………………………………………………………………… 140
6.1.2 人脸检测技术基础 …………………………………………………………… 141
6.2 人脸姿态与网格 ……………………………………………………………………… 143
6.2.1 人脸姿态 ……………………………………………………………………… 143
6.2.2 人脸网格 ……………………………………………………………………… 145
6.3 人脸区域与多人脸检测 ……………………………………………………………… 151
6.3.1 人脸区域 ……………………………………………………………………… 151
6.3.2 多人脸检测 …………………………………………………………………… 155
第 7章光影效果………………………………………………………………………………… 159
7.1 光照基础 ……………………………………………………………………………… 159
7.1.1 光源 …………………………………………………………………………… 160
7.1.2 光与材质的交互 ……………………………………………………………… 160
7.1.3 光照模型 ……………………………………………………………………… 161
7.1.4 三维渲染 ……………………………………………………………………… 162
7.2 光照估计 ……………………………………………………………………………… 163
7.2.1 光照一致性 …………………………………………………………………… 163
7.2.2 光照估计实例 ………………………………………………………………… 163
7.3 环境反射 ……………………………………………………………………………… 167
7.3.1 立方体贴图 …………………………………………………………………… 167
7.3.2 纹理采样过滤 ………………………………………………………………… 168
7.3.3 AR Environment Probe Manager组件 ………………………………………… 169
7.3.4 使用环境反射 ………………………………………………………………… 170
7.4 内置实时阴影 ………………………………………………………………………… 171
7.4.1 ShadowMap技术原理 ………………………………………………………… 172
7.4.2 使用实时阴影 ………………………………………………………………… 173
7.5 Planar阴影 …………………………………………………………………………… 178
7.5.1 数学原理 ……………………………………………………………………… 178
7.5.2 代码实现 ……………………………………………………………………… 179
7.6 伪阴影 ………………………………………………………………………………… 185
第 8章持久化存储与多人共享………………………………………………………………… 187
8.1 云锚点 ………………………………………………………………………………… 187
8.2 ARCore云锚点使用实例 ……………………………………………………………… 188
8.3 ARCore云锚点使用注意事项 ………………………………………………………… 195
8.4 Azure云服务概述……………………………………………………………………… 196
8.5 Azure空间定位点使用实例…………………………………………………………… 197
第 9章场景图像获取与场景深度……………………………………………………………… 206
9.1 获取 GPU图像 ………………………………………………………………………… 206
9.1.1 获取摄像头原始图像 ………………………………………………………… 206
9.1.2 获取屏幕显示图像 …………………………………………………………… 208
9.2 获取 CPU图像 ………………………………………………………………………… 212
9.2.1 AR摄像头图像数据流………………………………………………………… 212
9.2.2 从 CPU中获取摄像头图像 …………………………………………………… 213
9.3 边缘检测原理 ………………………………………………………………………… 222
9.3.1 卷积 …………………………………………………………………………… 223
9.3.2 Sobel算子 ……………………………………………………………………… 224
9.4 CPU图像边缘检测实例 ……………………………………………………………… 226
9.5 Depth API概述 ………………………………………………………………………… 229
9.6 Depth API实例 ………………………………………………………………………… 232
9.7 场景深度应用场景 …………………………………………………………………… 237
第 10章相机与手势操作 ……………………………………………………………………… 239
10.1 AR场景操作 ………………………………………………………………………… 239
10.1.1 场景操作方法 ……………………………………………………………… 239
10.1.2 场景操作实例 ……………………………………………………………… 240
10.2 手势操作交互 ………………………………………………………………………… 242
10.2.1 手势检测 …………………………………………………………………… 242
10.2.2 手势操作控制 ……………………………………………………………… 244
10.3 XR Interaction Toolkit ………………………………………………………………… 247
10.3.1 对象放置 …………………………………………………………………… 248
10.3.2 对象选择 …………………………………………………………………… 252
10.3.3 对象操作 …………………………………………………………………… 254
第 11章三维文字与音视频 …………………………………………………………………… 256
11.1 三维文字 ……………………………………………………………………………… 256
11.1.1 文字单位换算 ……………………………………………………………… 256
11.1.2 中文字体制作 ……………………………………………………………… 257
11.2 三维声频 ……………………………………………………………………………… 258
11.2.1 三维声场原理 ……………………………………………………………… 259
11.2.2 RA声频使用………………………………………………………………… 260
11.2.3 RA组件……………………………………………………………………… 260
11.2.4 使用 RA声频 ……………………………………………………………… 262
11.2.5 声频效果设置 ……………………………………………………………… 266
11.2.6 RA声频 API ………………………………………………………………… 268
11.2.7 运行时启用和禁用三维音效 ……………………………………………… 268
11.2.8 使用回响营造空间感 ……………………………………………………… 269
11.2.9 三维音效设计原则 ………………………………………………………… 272
11.3 三维视频 ……………………………………………………………………………… 273
11.3.1 VideoPlayer组件 …………………………………………………………… 274
11.3.2 三维视频播放实现 ………………………………………………………… 277
11.3.3 视频音效空间化 …………………………………………………………… 280
第 12章 glTF与 Model Viewer………………………………………………………………… 281
12.1 glTF概述……………………………………………………………………………… 281
12.2 Model Viewer ………………………………………………………………………… 284
12.2.1 Model Viewer使用实例 …………………………………………………… 285
12.2.2 Model Viewer详解 ………………………………………………………… 288
12.2.3 使用 Model Viewer的注意事项 …………………………………………… 294
高 级 篇
第 13章 Android与 Unity交互通信 ………………………………………………………… 299
13.1 Android与 Unity通信原理 ………………………………………………………… 299
13.2 Unity直接调用 Java代码 …………………………………………………………… 302
13.3 模块调用 ……………………………………………………………………………… 312
13.4 继承 UnityPlayerActivity类 ………………………………………………………… 317
13.5 AndroidJavaProxy类详细讲解 ……………………………………………………… 320
13.6 订阅 Android广播 …………………………………………………………………… 323
13.7 调用 so库文件 ……………………………………………………………………… 328
13.8 Android与 Unity交互注意事项 …………………………………………………… 330
第 14章设计原则 ……………………………………………………………………………… 334
14.1 移动 AR带来的挑战 ………………………………………………………………… 334
14.1.1 三维化思维 ………………………………………………………………… 334
14.1.2 用户必须移动 ……………………………………………………………… 335
14.1.3 要求手持设备 ……………………………………………………………… 335
14.1.4 近脸使用 …………………………………………………………………… 336
14.1.5 操作手势 …………………………………………………………………… 336
14.1.6 启动应用 …………………………………………………………………… 337
14.1.7 色彩运用 …………………………………………………………………… 337
14.2 移动 AR设计准则 …………………………………………………………………… 337
14.2.1 有用或有趣 ………………………………………………………………… 338
14.2.2 虚实融合必须有意义 ……………………………………………………… 338
14.2.3 移动限制 …………………………………………………………………… 338
14.2.4 心理预期与维度转换 ……………………………………………………… 338
14.2.5 环境影响 …………………………………………………………………… 339
14.2.6 视觉效果 …………………………………………………………………… 340
14.2.7 UI设计 ……………………………………………………………………… 340
14.2.8 沉浸式交互 ………………………………………………………………… 340
14.3 移动 AR设计指南 …………………………………………………………………… 341
14.3.1 环境 ………………………………………………………………………… 342
14.3.2 用户细节 …………………………………………………………………… 343
14.3.3 虚拟内容 …………………………………………………………………… 346
14.3.4 交互 ………………………………………………………………………… 352
14.3.5 视觉设计 …………………………………………………………………… 357
14.3.6 真实感 ……………………………………………………………………… 362
14.3.7 三维音效 …………………………………………………………………… 367
第 15章性能优化 ……………………………………………………………………………… 369
15.1 性能优化基础 ………………………………………………………………………… 369
15.1.1 影响性能的主要因素 ……………………………………………………… 369
15.1.2 AR应用常用调试方法……………………………………………………… 371
15.1.3 AR应用性能优化的一般原则……………………………………………… 372
15.2 AR应用性能调试工具 ……………………………………………………………… 373
15.2.1 ARCore性能调试功能 ……………………………………………………… 373
15.2.2 Unity分析器 ………………………………………………………………… 375
15.2.3 帧调试器 …………………………………………………………………… 379
15.2.4 UPR分析器 ………………………………………………………………… 380
15.3 Unity分析器使用 …………………………………………………………………… 382
15.3.1 CPU使用情况分析器 ……………………………………………………… 382
15.3.2 渲染情况分析器 …………………………………………………………… 383
15.3.3 内存使用情况分析器 ……………………………………………………… 383
15.3.4 物理分析器 ………………………………………………………………… 384
15.3.5 音视频分析器 ……………………………………………………………… 385
15.4 性能优化流程 ………………………………………………………………………… 385
15.4.1 收集运行数据 ……………………………………………………………… 387
15.4.2 分析运行数据 ……………………………………………………………… 388
15.4.3 确定问题原因 ……………………………………………………………… 390
15.5 渲染优化 ……………………………………………………………………………… 392
15.5.1 渲染流程 …………………………………………………………………… 392
15.5.2 CPU瓶颈 …………………………………………………………………… 393
15.5.3 GPU瓶颈 …………………………………………………………………… 396
15.6 代码优化 ……………………………………………………………………………… 398
15.6.1 内存管理 …………………………………………………………………… 398
15.6.2 垃圾回收 …………………………………………………………………… 399
15.6.3 对象池 ……………………………………………………………………… 404
15.6.4 常见影响性能的代码优化策略 …………………………………………… 405
15.7 ARCore优化设置 …………………………………………………………………… 407
15.7.1 UI/UX优化 ………………………………………………………………… 407
15.7.2 常用优化设置 ……………………………………………………………… 407
15.7.3 AR应用开发的一般注意事项 …………………………………………… 408
参考文献…………………………………………………………………………………………… 410
