
新书根据ARKit、iOS系统的特点,重点介绍AR开发的基础知识,ARKit的特点、ARKit的使用,借助Arkit和Unity 3D开发小游戏,全面展示ARKit的优缺点。
1966 年,计算机图形学之父伊凡·苏浑兰开始研制一套叫作"达摩克利斯之剑C The Sword of Damocles) "的系统。自此,第一个VR 设备系统诞生。 1990 年,波音公司的研究者Thomas Caudell 首次提出了AR 一词. 2017 年,苹果公司在2017WWDC 开发者大会上发布了自家首个ARSDK一一战.K.it. 随后, Google 也发布了一款ARSDK一-ARCore. 感谢这些让世界变得更美好的人。 本书是什么 现在市面上讲述与AR 相关的开发基本以Unity、Unreal Engine 调用第三方SDK 为主, 对于移动端原生开发的介细极为罕见,如Apple 的ARKit,几乎没有一本书籍来详细讲述 它的相关知识。网上关于ARKit 的介绍大部分以教程为主,并没有详细讲述它的内容及 ARKit 背后所包含的知识,这就导致大部分开发者看的时候觉得很新奇,使用的时候却很 困惑,总有一知半解的感觉。而本书详细讲述了ARKit 各方面的内容,并且增加了使用 ARKit 所必需的一些基础知识,有利于读者理解ARKit 的内容。 本书分四大部分进行介绍。 ·第一部分:基础知识,包括图形学、数学、增强现实三个方面的内容,但只会讲述 用到的内容,所以阅读起来会轻松一些。 ·第二部分: ARKit 内容,分别从世界跟踪、场景理解、几何渲染、人脸跟踪4 个方 面来叙述,最后给出了应用实例。 ·第三部分: AR皿t 在Unity 中的应用,讲述了在U田.ty 中如何接入并使用ARKit 的 各项功能。 ·第四部分:其他SDK 的使用,介绍了EasyA且和Vuforia 两个ARSDK 具有的功能 及使用方法。 本书为谁而写 书中涵盖了ARKit 几乎所有的内容,但在叙述时并没有引入太多的专业术语,而是以 通俗易懂的语言讲解,因而显得不那么"严谨"。在叙述API 时,使用了。Objective-C 语言 来编写代码,而没有使用Swift语言,以便尽可能照顾到大部分开发者。所以,对于iOS 开发者而言,本书具有很大的参考价值。当然,对于其他想学习AR 开发或者想了解ARKit 原生API 的开发者来说,本书也值得阅读。 和其他书有所不同的是,在阅读本书时,书中包含的四大部分都可以独立阅读,不分 先后顺序,但是在阅读某一部分内容时,建议按照既有的顺序进行阅读,因为每一部分内 容都是以循序渐进的形式来叙述的。 支持 在编写本书之前,作者对AR 也是零基础,但出于对AR 有着很大的兴趣,就开始一 步步学习,本书的内容才得以慢慢形成。在这其中,虽然花费了太量的时间来参考相关的 书籍和资料,但受限于自身水平和时间因素,错误在所难免。读者在阅读过程中发现有任 何错误信息,可以发至作者个人网站(http://www.nethanhan.com) 。我们将竭力解决所有提 出的问题,并向您表达谢意。 当然,作者也会持续修改书中可能出现的错误信息,并在个人网站中登出。书中包含 的所有源码及例子都会放置在作者的GitHub (https://github.com/hanhan) 上,如有需要,可 以随时下载。如果在阅读过程中有任何问题,则可以通过作者的个人邮箱 (nethanhan@163.com) 取得联系。 致谢 本书附带的实例中的所有图片资源均来自赵静,她是一位优秀的四设计师,同时也是 我最好的朋友,在此向她致以最诚挚的谢意!也要感谢我身边的小伙伴,正是有了他们的 陪伴,才有了本书的持续输出。还要感谢电子工业出版社的田志远编辑,感谢他在本书编 写过程中不断给予支持和鼓励,而且还提出了很多建议。 当然,最重要的是,感谢那些为AR/VR 行业做出巨大贡献的人,正是他们的不断努力, 才使这个世界变得更加美好。
第一部分基础知识 第1 章绘制图形.................….................….........….........…....................................................2 1.1 代码编写.........................................................................................…...............… .................2 1.2 CPU 与GPU 交互................….................................….........….......................................4 1.3 状态准备...............…..............................….......…............................….......…..................5 1.4 坐标转换......................................................................................... .............5 1.5 像素计算..............…................................................................….................… ................6 1.6 硬件显示..........……....................................................................................….......… .......6 第2 章固形学基础.........…........….........…… ..................................................................8 2.1 笛卡儿坐标系….......….......................................................….......................................8 2.2 坐标壁间............….........….........….........….........….........….........….........…...................11 2.3 坐标系转换……...................................................................................................................12 2.4硬件设备..........……..........................................................………................…................13 第3 章数学基础.........................….........….........….................................… .................16 3.1 向量........….........….........….........….........….........….........….........….........…...................16 3.2 矩阵...........................................................................................................................…20 3.2.1 矩阵的定义...................................................................… ................................20 3.2.2 基本运算..............................................................................................................21 3.2.3 运算律……….........…….......................................…….........… ...........................24 3.2.4矩阵的类型........….........….........….........….........….........….........…...................27 第4 章增强现实基础................……...............................................................… ..........31 4.1 概念..............................................................................................................................31 4.2 结构组成....................…............…............…............…..........…........… ........................33 4.2.1 系统结构........................….........….........….........….........….........…...................33 4.2.2 关键要点..........…….......................................….........… ....................................33 4.2.3 SLAM.......... ……………………………………………………………..............................34 4.3 发展历史..........…….......................................…................…........…….........… ...............36 4.4 发展现状.........................................................…..........................................................39 4.4.1 AR 硬件H… ......................................................................................................39 4.4.2 AR 软件………………………………………………………………..……..........42 第二部分ARKit 内容 第5 章ARKit 简介.........….........….........…........…….......… ...........................................47 5.1 ARKit 概述..........…….........…….........…….........…….......................................…… .........47 5.2 ARKit 结构..............................….........….............................................….........…..........49 5.3 ARKit 使用............….........….........….........….........….........….........….........…................50 第6 章第一个AR 应用.............….................….................….................… ...................52 6.1 SceneKit........................................................................................................................52 6.2 SpriteKit. .......................................................................................................................56 6.3 Metal......................…..............................................................................….........….......60 第7 章世界跟踪.................….................….........…........….........…..........… .................65 7.1 跟踪概述..........…….........……....................................................................................… 65 7.2 模块结构...................................………………………………………………………………....66 7.3 运行跟踪.........…….......….........…...................................….......….....................… .........67 7.4 ARConfiguration 类.........….......................…...........................…….........…… ...............69 7.4.1 两者区别............….........….........….........….........….........................… ...............71 7.4.2 使用示例............….........….........….........….................................…...................73 7.4.3 属性说明............................................…..................................................................74 7.5 ARSession 类...............…….....................................................................….......… ........7当 7.5.1 持有的硬件….......….......….........…..............................…..…................…..........75 7.5.2 持有的数据.....................................….........…......................................… .........77 7.5.3 具备的能力…….......................................…........................................… ........79 7.5.4 生命周期....…...........................….......................................................................80 7.5.5 处理输出.....………………………………………………………………........… ...............82 7.5.6 跟踪状态..........…..........……........................…….........…….........….......… ........84 7.5.7 中断和出错…….........…….........…….........…….......................................… .........86 7.6 ARFrame 类...............................................................................................................88 7.6.1 包含的内容......................................................................................................89 7.6.2 获取方式…………………………………………………………………………………….90 7.6.3 属性和方法说明........................…...................................................................91 7.7 ARAnchor 类.........…...............................................................................…...................93 7.8 ARCamera 类...............…… ..........................................................................................93 7.9 实例演示..........….........…….........…….........…….........…….........…….........…….........…… 98 7.9.1 新建项目..........…….....................… ..................................................................98 7.9.2 开始编码....…...........................……..........................................................…...................99 7.9.3 运行效果......................................................…...............….............................105 7.9.4 出错原因........................................….......… ...................................................106 第8 章场景理解.................….........….................….........….........…........… ................108 8.1 平面检测......................................….......….................................….........….................108 8.2 ARPointCloud 类.......….............................................................................…..............109 8.3 ARPlaneAnchor 类...................……… ........................................................................110 8.4 hit-test ..........................….........................….................…............................................111 8.4.1 概述................................................................................................................111 8.4.2 功能使用........................….........…...........................................................… 114 8.4.3 ARHitTestResult类….......................................................................……........114 8.5 ARLightEstimate 类.........…................….........….........….........….........….................… 116 8.6 实例..............…........…................................…….........…….........… ...............................116 8瓜1 实例................….........….........….........….........….........….........…·…·…… ......117 8.6.2 实例二...........................…….......................…........................................................125 第9 章几何渲染....................................… ................................................................130 9.1 SceneKit..................................................................................................................... ... .130 9.1.1 SceneKit 概述.........…........…….........…........................… ...............................130 9.1.2 ARSCNView...............................................…..........................…...................133 9.1.3 ARSCNViewDelegate ......…........................….............................................…135 9.2 SpriteKit.........................................................................................................….......…136 9.2.1 SpriteKit 概述…...........................…….............................…..........................136 9.2.2 ARSKView..….......….........….........…...................…........................................137 9.2.3 ARSKViewDelegate................….........….........….........…................................138 9.3 实例......................….........… .......................................................................................139 9.3.1 实例................….........….........….........….........….........….........….................139 9.3.2 实例二……...................................................................................................150 第10 章人脸跟踪.............…........….........….........…......................….........… .............155 10.1 概述.....................….......................…...................…........…........…… .........................155 10.2 模块使用.......….................….......…........................................…................… ............156 10.3 各类说明.................................................................… ..............................................160 第11 章游戏.........….........…........….........….........…..................................… .............165 11.1 数字排列..................................................…...……...…… ..........................................165 11.1.1 新建项目................….........….........….........….........…...................................166 11.1.2 添加视图....................................................................................................166 11.1.3 添加数字…................….......................…................…...................................168 11.1.4 点去数字......................................................................................................169 11.1.5 调用加载................….........….......................................................................171 11.1.6 状态处理.........….........…................….........….........….........….........…...........172 11.1.7 运行效果…...............................….................................................................174 11.2 元素操作.......….........…...............…..........…… ..........................................................175 11.2.1 新建项目......................................................................................................175 11.2.2 添加视图....................................................................................................175 11.2.3 添加手势...............................….................................….............................… 177 1 1.2.4调用加载................…...................................................................................182 11.2.5 添加平面....….........….........….........…................................................…........183 11.2.6 运行效果............……............................................…................................185 11.3 捕捉萌宠...............................................….......................................……......187 11.3.1 新建项目................….........….........….........….........….........….........…...........187 11.3.2 添加元素............................................................................….......................187 11.3.3 添加音效.....................................................................................…...........… 191 11.3.4 添加模型......................….............................................................................191 11.3.5 碰撞逻辑……........….........….........................................................…............194 11.3.6 粒子效果.............................…… ................................................................195 1 1.3.7 调用加载....................................................….........…...................................195 11.3.8 提示信息.......................................…..................................................................196 11.3.9 运行效果....................................................................................................198 第三部分ARKit 在Unity 中的应用 第12 章Unity 环境.....................................….........….................….........… ................203 12.1 准备环境………………………………………………………………………..........203 12.2 环境说明……....................................................………..……..……..……..……… .204 12.3 Hello Unity .......................................................…..................…...........….........…......207 第13 章使用ARKit. ..................................................................................................209 13.1 接入插件.......…........................…….........................………........................… .209 13.2 远程调试…...............................…….................… ......................................................210 13.3 结构说明................….........….........….........….........….........….........….........…...........214 13.4 使用操作……..…............................ .………...........……..…………………………...215 第14 章实例演示.............….........…........…..................................….........… .............218 14.1 管理跟踪................................................................................................................218 14.2 小游戏..............…...............…..........…….........…….........……...............................… ...223 第四部分其他SDK 的使用 第15 章EasyAR SDK.... ...... ...... ...... ..... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ..... ... 230 15.1 开发环境准备….....................................................................................................230 15.2 Easy AR Basic 功能…………..................… ..........................................................232 15.2.1 围片检测...........................…...........................................................… ....232 15.2.2 播放视频.......…..............................…...........................................................240 15.2.3 跟踪多个目标....................................................……......................…...........245 15.2.4 二维码栓测........................…....… ................................................................248 15.2.5 云识别....................….........….........….........….........….........….........…...……..…....….…...252 15.3 EasyAR PrO 功能.……............................................................................................................257 15.3.1 识别3D 物体.………..……...…...........................................................................................258 15.3.2 录屏....................................….......................................................................263 15.3.3 SLAM..........….......…..............................................…...........................……….267 第16 章Vuforia SDK ...... ...... ..... ....….........….................…........................................272 16.1 开发环境准备.........................…................................….........……… .........................272 16.2 Image Targets........….........….........….........…·…........…........…........…........…........276 16.3 Cylinder Targets.…........….........….........….........….........….........….........….................278 16.4 Multi Tatgets....................................….........….........….........….........….........…..............280 16.5 User Defined Targets ................................................................................................281 16.6 CloudRecognition..…..................….........……...........................................................282 16.7 Virtual Buttons.................................................................….....283 16.8 Text Recogniti.......................................................................................................284 16.9 VuMark....……................…........................…..................….........….........…..............285 16.10 Object Recognition........….........….........….........….........….........….........…..............285
员凯,某互联网公司iOS开发负责人,移动开发专家,关注iOS开发和AR开发。__eol__