书籍详情
AR Foundation增强现实开发实战(ARCore版)
作者:汪祥春 著
出版社:清华大学出版社
出版时间:2022-09-01
ISBN:9787302612186
定价:¥109.00
购买这本书可以去
内容简介
本书基于AR Foundation框架,采用URP渲染管线,讲述利用ARCore进行Android平台的AR应用开发,从AR技术概念、原理、理论脉络到各功能技术点、Android与Unity交互通信、设计原则、性能优化,对ARCore应用开发中涉及的技术进行了全方位的讲述,用语通俗易懂,阐述深入浅出。 本书共分三个部分:第一部分为基础篇,包括第1章至第3章,从最基础的增强现实概念入手,通过一个实例阐述了AR开发从软硬件准备、开发环境搭建、工程设置、发布部署全流程,探讨了AR Foundation框架的技术基础、常用组件,并着重探索了ARCore功能特性和运动跟踪原理;第二部分为功能技术篇,包括第4章至第12章,对ARCore功能特性各方面进行了详细探索讨论,从平面检测、图像检测、人脸检测到云锚点、光影特效等,全方位的进行了技术剖析、讲解、演示。并对AR场景管理、图像信息处理、3D文字声频视频等实用功能进行了阐述和使用操作讲解;第三部分为高级篇,包括第13章至第15章,主要阐述了Android与Unity交互通信、AR应用设计、性能优化相关主题,着力提升开发人员在AR应用开发时的实际应用能力和整体把握能力。 本书结构清晰、循序渐进、深浅兼顾,实例丰富,每个技术点都有案例,特别注重对技术原理和实际运用的讲述,力图解决读者在项目开发中面临的难点问题。 本书适合AR初学者、Unity开发人员、程序员、科研人员,也可以作为高校、大专院校相关专业师生的学习用书,以及培训学校的培训教材。
作者简介
汪祥春,计算机科学与技术专业硕士,全国信息安全标准化委员会虚拟现实与增强现实标准工作组成员(CNITSC)、中国增强现实核心技术产业联盟成员(CARA)、华为布道师(Huawei Developer Experts)、CSDN博客专家,拥有深厚的软件工程专业背景和十余年软件项目实施管理经验。 著有《基于Unity的ARCore开发实战详解》《AR开发权威指南-ARFoundation》《ARKit原生开发入门精粹-RealityKit+Swift+SwiftUI》。
目录
基 础 篇
第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
第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
猜您喜欢