书籍简介:
本书第1章介绍AR技术原理和AR Foundation概况,讲述用Unity开发AR应用的环境配置及调试方法,第2章对AR Foundation体系架构及关键组件、核心功能技术进行深入探讨,第3章讲述平面检测识别及参考点相关知识,第4章介绍2D图像与3D物体的检测识别跟踪知识,第5章介绍人脸检测、人脸表情捕捉、人脸特效实现的相关技术,第6章介绍光照估计、环境光反射、AR阴影生成的相关知识,第7章讨论云锚点、持久化存储、AR多人体验共享的相关知识,第8章介绍摄像头图像获取及自定义渲染管线的相关知识,第9章讨论2D、3D人体姿态估计及人形遮挡的相关知识,第10章讲述摄像机及手势操作的相关知识,第11章讨论在AR应用中使用3D音、视频的相关知识,第12章讲述开发AR应用的设计原则与设计指南,第13章讨论AR开发时的性能问题排查及优化技术。
本书适合AR Foundation初学者、Unity开发人员阅读,也可以作为大专院校相关专业师生的学习用书以及培训学校的教材。
作者简介:
汪祥春,计算机科学与技术专业硕士,全国信息技术标准化技术委员会、计算机图形图像处理及环境数据表示分技术委员会虚拟现实与增强现实标准工作组成员,中国增强现实核心技术产业联盟成员。现从事AR技术研发及管理工作。拥有深厚的软件工程专业背景和省部级科技项目实施管理经验,CSDN博客专家。拥有十余年软件开发及项目管理经验。
出版日期:
2020年10月
章节目录:
第 1章 AR Foundation入门 1
1.1 增强现实技术概述 1
1.1.1 AR概述 1
1.1.2 AR技术 2
1.1.3 AR技术应用 4
1.2 AR技术原理 4
1.2.1 位置追踪 4
1.2.2 视觉校准 6
1.2.3 惯性校准 7
1.2.4 3D重建 7
1.3 AR Foundation概述 8
1.3.1 AR Foundation与ARCore/ARKit 8
1.3.2 AR Foundation
支持的功能 9
1.3.3 AR Foundation
功能概述 10
1.3.4 AR Foundation体系
架构概述 11
1.3.5 基本术语 11
1.4 开发环境准备 13
1.5 Android开发环境配置 16
1.5.1 插件导入 16
1.5.2 设置开发环境 17
1.5.3 搭建基础框架 19
1.5.4 AppController 21
1.5.5 运行Helloworld 22
1.6 连接设备调试应用 24
1.6.1 打开手机USB调试 24
1.6.2 设置手机Wi-Fi调试 25
1.6.3 调试AR应用 26
1.7 iOS开发环境配置 27
1.7.1 插件导入 27
1.7.2 设置开发环境 29
1.7.3 搭建基础框架 30
1.7.4 AppController 32
1.7.5 生成并配置XCode工程 34
1.7.6 运行Helloworld 36
第 2章 AR Foundation基础 39
2.1 AR Foundation体系架构 39
2.1.1 AR子系统概念 40
2.1.2 AR子系统使用 40
2.1.3 跟踪子系统 41
2.2 AR Session & AR Session Origin 42
2.2.1 AR Session 42
2.2.2 AR Session Origin 44
2.3 可跟踪对象 46
2.3.1 可跟踪对象管理器 47
2.3.2 可跟踪对象事件 47
2.3.3 管理可跟踪对象 48
2.4 Session管理 49
第3章 平面检测与参考点管理 51
3.1 平面管理 51
3.1.1 平面检测 51
3.1.2 可视化平面 52
3.1.3 个性化渲染平面 52
3.1.4 开启与关闭平面检测 55
3.1.5 显示与隐藏已检测平面 57
3.2 射线检测 58
3.2.1 射线检测概念 59
3.2.2 射线检测详解 60
3.3 点云与参考点 61
3.3.1 点云 61
3.3.2 参考点 63
3.4 平面分类 66
第4章 图像与物体检测跟踪 69
4.1 2D图像检测跟踪 69
4.1.1 图像跟踪基本操作 69
4.1.2 图像跟踪启用与禁用 71
4.1.3 多图像跟踪 72
4.1.4 运行时创建参考图像库 76
4.1.5 运行时切换参考图像库 76
4.1.6 运行时添加参考图像 78
4.2 3D物体检测跟踪 80
4.2.1 获取参考物体空间
特征信息 81
4.2.2 扫描获取物体空间特征
信息的注意事项 83
4.2.3 AR Tracked Object Manager 84
4.2.4 3D物体识别跟踪基本操作 85
4.2.5 3D物体跟踪启用与禁用 86
4.2.6 多物体识别跟踪 87
第5章 人脸检测跟踪 90
5.1 人脸检测基础 90
5.1.1 人脸检测概念 90
5.1.2 人脸检测技术基础 91
5.2 人脸姿态与网格 92
5.2.1 人脸姿态 92
5.2.2 人脸网格 94
5.3 人脸区域与多人脸检测 97
5.3.1 人脸区域 97
5.3.2 多人脸检测 100
5.4 BlendShapes 101
5.4.1 BlendShapes基础 102
5.4.2 BlendShapes技术原理 103
5.4.3 BlendShapes的使用 105
第6章 光影效果 108
6.1 光照基础 108
6.1.1 光源 108
6.1.2 光与材质的交互 109
6.1.3 3D渲染 110
6.2 光照估计 111
6.2.1 3D光照 111
6.2.2 光照一致性 112
6.2.3 光照估计操作 112
6.3 环境光反射 115
6.3.1 Cubemap 115
6.3.2 PBR渲染 116
6.3.3 Reflection Probe 117
6.3.4 纹理采样过滤 118
6.3.5 使用Environment Probe 119
6.3.6 AR Environment
Probe Manager 121
6.3.7 性能优化 123
6.4 使用内置实时阴影 124
6.4.1 ShadowMap技术原理 124
6.4.2 使用实时阴影 125
6.4.3 阴影参数详解 129
6.5 Projector阴影 130
6.5.1 ProjectorShadow 131
6.5.2 BlobShadow 133
6.5.3 参数详解 134
6.6 Planar阴影 134
6.6.1 数学原理 135
6.6.2 代码实现 136
6.7 伪阴影 140
6.7.1 预先制作阴影 141
6.7.2 一种精确放置物体的方法 142
第7章 持久化存储与多人共享 145
7.1 锚点 145
7.1.1 锚点概述 145
7.1.2 使用锚点 146
7.1.3 云锚点 146
7.2 ARWorldMap 148
7.2.1 ARWorldMap概述 148
7.2.2 ARWorldMap实例 149
7.3 协作Session 152
7.3.1 协作Session概述 153
7.3.2 协作Session实例 156
7.3.3 使用协作Session的
注意事项 160
第8章 摄像机图像获取与
自定义渲染管线 162
8.1 获取GPU图像 162
8.1.1 获取摄像头原始图像 162
8.1.2 获取屏幕显示图像 163
8.2 获取CPU图像 165
8.2.1 AR摄像机图像数据流 166
8.2.2 从CPU中获取摄像头图像 166
8.3 边缘检测原理 173
8.3.1 卷积 173
8.3.2 Sobel算子 174
8.4 CPU图像边缘检测实例 175
8.5 可编程渲染管线 178
第9章 肢体动捕与遮挡 181
9.1 2D人体姿态估计 181
9.1.1 人体骨骼关键点检测 181
9.1.2 使用2D人体姿态估计 182
9.2 3D人体姿态估计 185
9.2.1 使用3D人体姿态
估计的方法 185
9.2.2 使用3D人体姿态
估计实例 194
9.3 人形遮挡 195
9.3.1 人形遮挡原理 196
9.3.2 人形遮挡实现 198
第 10章 摄像机与手势操作 202
10.1 场景操作 202
10.1.1 场景操作方法 202
10.1.2 场景操作实例 203
10.2 同时开启前后摄像头 204
10.3 环境交互 207
10.3.1 射线检测 207
10.3.2 手势检测 208
10.4 手势控制 210
10.4.1 单物体操控 210
10.4.2 多物体场景操控单
物体对象 212
10.4.3 多物体操控 215
10.4.4 物体操控模块 218
第 11章 3D音视频 220
11.1 3D音频 220
11.1.1 3D声场原理 221
11.1.2 声波与双耳间的互动 222
11.1.3 头部关联传导函数 223
11.1.4 头部转动与声音位置 223
11.1.5 早期反射和混音 223
11.1.6 声音遮挡 224
11.1.7 指向性 225
11.1.8 Ambisonics 225
11.1.9 下载Resonance
Audio SDK 226
11.1.10 导入SDK 226
11.1.11 Resonance Audio
components 226
11.1.12 使用共振音频 227
11.1.13 Room effects 230
11.1.14 Resonance Audio API 231
11.2 3D视频 232
11.2.1 Video Player组件 232
11.2.2 3D视频播放实现 234
第 12章 设计原则 238
12.1 移动AR带来的挑战 238
12.1.1 用户必须移动 238
12.1.2 要求手持设备 239
12.1.3 要求必须将手机
放在脸前 239
12.1.4 操作手势 239
12.1.5 用户必须打开App 240
12.2 移动AR设计准则 240
12.2.1 有用或有趣 240
12.2.2 虚拟和真实的混合
必须有意义 240
12.2.3 移动限制 241
12.2.4 心理预期与维度转换 241
12.2.5 环境影响 241
12.2.6 视觉效果 242
12.2.7 UI设计 242
12.2.8 沉浸式交互 243
12.3 移动AR设计指南 243
12.3.1 环境 244
12.3.2 用户细节 245
12.3.3 虚拟内容 247
12.3.4 交互 252
12.3.5 视觉设计 256
12.3.6 真实感 260
第 13章 性能优化 264
13.1 移动平台性能优化基础 264
13.1.1 影响性能的主要因素 264
13.1.2 AR常用调试方法 265
13.1.3 Unity Profiler 266
13.1.4 Frame Debugger 270
13.2 Unity Profiler使用 271
13.2.1 CPU使用情况分析器 272
13.2.2 渲染情况分析器 274
13.2.3 内存使用情况分析器 274
13.2.4 物理分析器 275
13.2.5 音视频分析器 276
13.2.6 UI分析器 277
13.2.7 全局光照分析器 277
13.3 性能优化的一般步骤 278
13.3.1 收集运行数据 278
13.3.2 分析运行数据 279
13.3.3 确定问题原因 281
13.4 移动设备性能优化 283
13.5 渲染优化 284
13.5.1 渲染流程 284
13.5.2 CPU瓶颈 285
13.5.3 GPU瓶颈 288
13.6 代码优化 289
13.6.1 内存管理 289
13.6.2 垃圾回收 290
13.6.3 对象池 293
13.7 UI优化 294
13.7.1 UI Drawcall优化 295
13.7.2 动静分离 295
13.7.3 图片优化 296
参考文献 298
封面图: