Google ARCore的基本原理:学习利用ARCore1.0构建Android、Unity和Web平台下的增强现实
定 价:59 元
- 作者:[加拿大]迈克尔·兰纳姆(Micheal Lanham)
- 出版时间:2018/11/1
- ISBN:9787111608851
- 出 版 社:机械工业出版社
- 中图法分类:TP391.98
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
增强现实(AR)在游戏娱乐、建筑、教育、医疗、军事等领域有着广泛的应用。随着Google公司发布 ARCore之后,基于ARCore的增强现实开发也变得更加容易。本书介绍了Android、Unity和Web平台上的ARCore开发,主要从运动跟踪、环境理解和光线估计等方面进行了详细阐述。另外,还介绍了混合现实(MR)及其应用。后,讨论了性能提升技巧和常见故障排除方法。
本书适合想要深入学习利用ARCore构建AR应用程序但在游戏或图形编程方面没有任何背景知识的开发人员阅读,另外,适合人工智能领域涉及人机交互、深度学习、AR、VR(虚拟现实)、MR的相关读者阅读。
关于本书
您是否是想要成为利用Google ARCore平台来创建沉浸式酷炫增强现实应用程序的移动端开发人员或Web开发人员?如果是,那么本书将帮助您直接进入ARCore的开发,并轻松且详细地创建一个AR应用程序。
本书主要介绍了如何实现ARCore的核心功能,从3D渲染的基本原理到更先进的概念,如光线照明、着色器、机器学习等。
首先将从在3种平台(Web、Android和Unity)上构建一个基本项目开始。接下来,介绍运动跟踪、环境认知和光线估计的ARCore概念。对于每一个核心概念,都将通过学习一个实际项目来应用和扩展ARCore特性,从学习三维渲染和光线的基础知识到探索更先进的概念。
读者可以编写自定义的着色器来照射AR中的虚拟对象,然后构建一个神经网络来识别环境,并利用ARCore在混合现实中实现更庞大的应用程序。在本书的后,还将学习如何实现运动跟踪和环境学习,创建动画和声音,生成虚拟人物,并在屏幕上模拟。
本书主要内容
•在Android、Web和Unity平台上构建和部署增强现实应用程序;
•实现用ARCore来识别和可视化对象,如点云、平面、表面和/或网格;
•利用Google ARCore和Java语言开发的OpenGL ES探索环境理解的先进概念;
•在ARCore中建立光线等级,并编写C#脚本来观测和传播场景中的光线变化;
•开发反映光线变化的图形着色器并绘制环境以实现在Unity/C#平台中放置对象;
•集成运动跟踪和Web ARCore API以及Google街景来实现一种AR/VR综合体验。
增强现实(AR)应用已从新奇事物逐步走向现实,随着 ARKit和 ARCore的发布,对于普通开发人员来说,这使得入门越来越容易。现在,几乎所有掌握编程语言的人都可以利用各种平台来快速构建 AR体验。随着 ARCore的发布,Google公司使得 AR开发更加容易,同时也支持多个开发平台。本书将指导利用 JavaScript,以及利用 Java/Android平台在移动 Web平台和利用 C#/Unity平台在移动终端来构建 AR应用程序。在此过程中,将学习为用户构建一个高质量 AR体验的基本原理。
本书面向读者
本书面向想要深入学习利用 ARCore构建 AR应用程序但在游戏或图形编程方面没有任何背景知识的开发人员。尽管本书假定读者只具有高中程度的基本数学基础,但读者应至少熟练掌握下列一种编程语言: JavaScript、Java或 C#。
本书涵盖的主要内容
第 1章 入门 介绍了当前 AR应用程序需要掌握的基本概念,从而为用户提供满意的体验。在此,将学习运动跟踪、环境理解和光线估计等基本概念。
第 2章 Android平台上的 ARCore 介绍了基于 Android Studio的 Android平台开发,其中展示了如何安装 Android Studio以及建立第一个 ARCore应用程序。
第 3章 Unity平台上的 ARCore 讨论了如何安装和构建一个 Unity平台下的 ARCore应用程序。另外,还介绍了如何利用 Android平台开发工具来远程调试一个应用程序。
第 4章 Web平台上的 ARCore 介绍基于 JavaScript的 Web平台开发,并着重讨论了如何利用 Node.js来建立简单的 Web服务器。然后,本章还分析了 ARCore的各种示例模板,并讨论了在进一步开发中如何扩展这些模板。
第 5章 真实世界中的运动跟踪 在本章对前面所学内容进行了扩展,并在一个 Web平台示例中添加了真实世界的运动跟踪。该示例不仅展示了 3D概念的基本工作原理,而且还表明了 ARCore是如何跟踪用户动作的。
第 6章 环境理解 本章返回到 Android平台,着重分析 ARCore是如何理解用户所处环境的。将学习掌握 ARCore如何识别环境中的平面或表面,并为实现用户交互和可视化将其网格化。在此,讨论了如何修改着色器以实现从用户视角来测量和着色这些点。
第 7章 光线估计 阐述了光线和阴影在用户购买 AR体验过程中的作用。学习了 ARCore如何实现光线估计,以及如何照亮用户放置在 AR世界中的虚拟模型。
第 8章 环境认知 在此介绍了机器学习的基础知识,并强调了技术对于 AR成功的重要性。然后,建立了一个简单的神经网络,利用反向传播技术实现了监督式学习。在学习了神经网络和深度学习的基础知识之后,分析了一个展示各种形式机器学习的更复杂的示例。
第 9章 建筑设计的混合光线 涵盖了允许用户将虚拟家具放置在起居室或任何需要位置的 AR设计应用程序的构建。另外,还介绍了如何通过触摸在 AR中放置和移动对象,以及如何确定对象何时被选中。然后,扩展了第 7章 光线估计 中的光线和阴影,对虚拟对象提供实时阴影。
第 10章 混合现实中的混合 在此通过廉价的 MR头戴式显示设备引入了混合现实。 ARCore非常适用于这些廉价的头戴式显示设备,因为已能够跟踪用户并监视其内部环境。另外,还将分析如何将应用程序从传统的在 Unity平台下使用 3D WRLD API的地图绘制程序转换为 AR地图绘制程序,在此还提供了一种切换到 MR和 MR头戴式显示设备的功能。
第 11章 性能提升技巧和故障排除 这里介绍了在所有开发平台上检测应用程序性能的技术,然后讨论了性能的重要性及其对各种系统的影响。之后,介绍了一般调试和故障排除技巧,在此以一个涵盖了用户在本书中可能遇到的常见错误的列表来结束本书内容。
充分利用本书
为充分利用本书,以下是需要重点关注的内容:
. 读者需要精通下列一种编程语言: JavaScript、Java或 C#。
. 熟悉高中数学知识。
. 支持 ARCore的 Android平台设备。下面是检查列表的链接: https//developers.google. com/ar/discover/。
. 一台运行 Android Studio和 Unity平台的台式机,不需要专用的 3D显卡。
下载示例代码文件
可从 www.packtpub.com的账户下载本书的示例代码文件。如果是在他处购买的本书,可以访问 www.packtpub.com/support,注册后直接以文件形式发送给读者。
可以通过以下步骤下载代码文件:
1)在 www.packtpub.com上登录或注册。
2)选中
SUPPORT选项卡。
3)单击
Code Downloads & Errata。
4
)在搜索框输入图书名称,并按照提示进行操作。
文件下载完成后,请确保用以下最新版本进行解压缩:
. Windows系统下的 WinRAR/7-Zip。
. Mac系统下的 Zipeg/iZip/UnRarX。
. Linux系统下的 7-Zip/PeaZip。
本书的代码包还在 GitHub上托管,具体地址为 https://github.com/PacktPublishing/ Learn-ARCore-Fundamentals-of-Google-ARCore。一旦代码有更新,在现有的 GitHub代码库中也会相应更新。另外,还可以从 htttps://github.com/PacktPublishing/ 丰富的图书和视频目录中获得其他代码包。请注意查看!
下载彩色图片
本书还提供了一个包含本书中截图 /图表的彩色图片的 PDF文件。
Micheal Lanham是一位经验丰富的软件和技术创新工程师,有着 20多年的工作经验。曾开发了多种领域的软件应用程序,包括游戏、图形、Web、桌面、工程、人工智能、GIS和多种行业的机器学习应用。在 2006年接触 Unity平台,自此以后一直是这方面的开发人员、顾问、经理和多个 Unity平台游戏、图形项目和多本图书的作者。目前与家人居住在加拿大的卡尔加里。
译者序
原书前言
第1章 入门 // 1
1.1 沉浸式计算 //1
1.2 AR和 ARCore //2
1.2.1 运动跟踪 // 3
1.2.2 环境理解 // 4
1.2.3 光线估计 // 4
1.3 组织结构与安排 //5
1.4 小结 //6
第 2章 Android平台上的 ARCore //7
2.1 安装 Android Studio //7
2.2 安装 ARCore //9
2.2.1 在设备上安装 ARCore服务 // 10
2.3 构建和部署 //11
2.4 代码分析 //12
2.5 小结 //14
第 3章 Unity平台上的 ARCore //15
3.1 安装 Unity平台和 ARCore //15
3.2 在 Android平台上构建和部署 //18
3.3 远程调试 //19
3.3.1 连接测试 // 20
3.3.2 远程调试一个正在运行的应用程序 // 21
3.4 代码分析 //22
3.4.1 Unity平台更新方法 // 23
3.5 小结 //24
第 4章 Web平台上的 ARCore //25
4.1 安装 WebARonARCore //25
4.2 安装 Node.js //26
4.2.1 Node软件包管理器 // 26
4.3 示例分析 //28
4.4 调试 Android平台上的 Web平台应用程序 //29
4.4.1 连接 Chrome平台开发工具 // 29
4.4.2 通过 Chrome平台调试 // 30
4.5 三维和 three.js //31
4.5.1 理解左手或右手坐标系 // 33
4.5.2 三维缩放、旋转和平移 // 33
4.6 小结 //34
第 5章 真实世界中的运动跟踪 //35
5.1 深度运动跟踪 //35
5.2 三维声音 //38
5.3 共振音频 //39
5.4 基于 Firebase的跟踪服务 //42
5.4.1 设置数据库 // 43
5.4.2 连接测试次数 // 44
5.5 可视化运动跟踪 //45
5.6 练习 //47
5.7 小结 //48
第 6章 环境理解 //49
6.1 点云跟踪 //49
6.2 网格化与环境 //51
6.3 环境交互 //52
6.3.1 触摸手势检测 // 55
6.4 基于 OpenGL ES的绘制 //56
6.5 着色器编程 //58
6.5.1 着色器编辑 // 61
6.6 练习 //62
6.7 小结 //63
第 7章 光线估计 //64
7.1 三维渲染 //64
7.1.1 构建一个测试场景 // 65
7.1.2 材质、着色器和纹理 // 67
7.2 三维光线 //69
7.3 光线估计 //71
7.4 Cg/HLSL着色器 //73
7.5 光线方向估计 //76
7.5.1 环境光线更新 // 79
7.6 练习 //79
7.7 小结 //80
第 8章 环境认知 //81
8.1 机器学习简介 //81
8.1.1 线性回归原理 // 83
8.2 深度学习 //85
8.2.1 神经网络 -深度学习基础 // 86
8.3 神经网络编程实现 //87
8.3.1 神经网络脚本编程 // 88
8.4 神经网络训练 //94
8.4.1 激活警告 // 95
8.4.2 添加环境扫描器 // 98
8.4.3 反向传播原理 // 99
8.4.4 梯度下降原理 // 101
8.4.5 网络架构定义 // 103
8.4.6 环境的网络视角 // 105
8.4.7 练习 // 106
8.5 TensorFlow //107
8.6 小结 //108
第 9章 建筑设计的混合光线 //110
9.1 工程设置 //110
9.1.1 场景构建 // 112
9.1.2 修改基本场景 // 113
9.2 环境和放置内容 //116
9.3 UI构建 //119
9.3.1 按钮脚本编程 // 122
9.4 虚拟交互 //124
9.4.1 构建对象轮廓 // 126
9.4.2 椅子定位 // 129
9.5 光线和阴影 //132
9.5.1 打开阴影 // 135
9.6 练习 //137
9.7 小结 //137
第 10章 混合现实中的混合 //138
10.1 MR和 HoloKit //139
10.1.1 设置 HoloKit // 140
10.1.2 HoloKit如何工作 // 142
10.2 WRLD简介 //144
10.3 设置 MR中的 WRLD //146
10.4 地图导航 //147
10.4.1 从 AR切换到 MR //149
10.4.2 构建 SceneSwitcher //150
10.4.3 创建 SceneSwitcher预制件 // 151
10.4.4 修改 Wrld Map脚本 // 153
10.5 地图构建、GIS和 GPS //155
10.5.1 生成 Splash场景 //159
10.5.2 修正高度问题 // 162
10.6 未来发展 //163
10.7 练习 //164
10.8 小结 //164
第 11章 性能提升技巧和故障排除 //166
11.1 性能诊断 //166
11.1.1 Chrome平台开发工具 // 166
11.1.2 Android平台分析工具 // 168
11.1.3 Unity平台分析工具 // 170
11.2 性能提升管理技巧 //172
11.3 常见故障排除 //174
11.3.1 故障排除代码 // 174
11.4 练习 //177
11.5 故障排除技巧 //177
11.6 小结 //178