图书目录

目 录 

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