Notifications
Article
专业 | 如何从结构方面看懂ARKit文档
Updated a year ago
729
5
ARKit的学习方式

讲道理,能够看懂官方文档就像修车师傅能够看懂汽车的说明书一样,做起事来游刃有余。如果再打一个比方的话,那就是能够想杀牛的人对牛的各个骨骼和关节熟知一样。实际上,专业与业余的差别就在于对官方文档的熟悉程度上。
ARKit的文档结构如何呢?从结构入手能够从一个整体对文档有一个认识,能够使我更加有勇气深入的看下去。
截止到目前(2017年9月14),在iOS11还有几天要出来正式版之前,文档基本上的结构已经趋于完善了。可以点击去查看。我用截图的方式,说一说文档首页的基本介绍结构。
文档分为几个块:(截图是网站的截图,点击看看)
概览
主题
  1. 首要概念
  2. 基于世界的AR
  3. 基于面部识别的AR
  4. 标准视图
  5. 自定义视图
  6. 真实世界的物体和位置
  7. 相机和场景
一、概览

概览基本介绍了ARKit存在意义:使用iOS设备的相机和运动特性,为你的App提供增强现实体验。

比较重要的是:ARKit需要A9以上处理器(突然想到iPhone8和X都是11了,9也不算太过分的要求了。)UIRequiredDeviceCapabilities(设备支持的描述)也需要设置。如果你的游戏或App对AR的东西不是要求的那么重,直接使用API的属性isSupported来检测就好了。

二、首要概念
关于增强现实和ARKit 的这篇文章主要介绍去创建一个AR体验的时候的建议、特性和最好的体验方式等。
ARSession的存在意义:为AR体验开发提供所需要的相机和运动同步数据。
ARConfiguration:ARSession的各种基础设置。它也是设置类的基本设置父类。
三、基于世界的AR体验
前两篇文章主要是使用两个Demo,为我们介绍了开发AR游戏或者应用的方式。不过,官方使用的是Native的swift语言发开的,个人认为在3D场景的编辑方面跟Unity是没法比的。因为我也做过一些SceneKit的项目。
第二篇值得好好翻译翻译,讲的是在AR开发方面的UI体验,如果利用ARKit里面提供的状态机为用户提供更好的使用体验,比如“扫描中...“,“平面丢失”等等。

几个类:
ARWorldTrackingConfiguration:一个配置,这个配置使相机能够在旋转和移动上与“世界绑定”。
AROrientationTrackingConfiguration:一个配置,这个配置仅仅使相机能够在旋转方面与“世界绑定”。
ARPlaneAnchor:关于位置和旋转的平面信息,这个信息是是ARSession与世界绑定后计算得出的。(也就是说这个对象是可以使用的)
四、基于脸部识别的AR体验
官方刚刚更新的文档,实际上是为iPhoneX预备的功能——Face ID引发的开发。iPhone X里面在前置摄像头里面安装了深度摄像头或者叫景深摄像头(官方叫TrueDepthCamera)。
第一篇文章说的就是如何使用前置摄像头开发基于Face的AR应用程序,并伴随着swift的Demo。估计是放置了面具的那种Demo。反正虚拟机跑不起来。我也没设别。
两个类:
ARFaceTrackingConfiguration:这是一个绑定用户脸蛋的配置,它使用的就是TrueDepth Camera。
ARFaceAnchor:一个可以使用的,能够拿到用户的姿势、表情、肌肉拓扑的类。

五、视图
视图里面主要是给native开发的时候使用的介绍。在iOS的开发中,直接使用一个视图(view)就可以展示并且交互了。比如CameraVideo就直接打开了相机,使用回调的方式能够获取当前照相的Texture,或者放到了相册。这就是Apple开发的第一个层次。当然,在Custom Views里面也是给了更加底层的开发数据(以至于Unity里面可以发开)。不多说了,反正我也不用。
六、真实世界的物体和位置
两个类:
ARHitTestResult:这个类提供一个打击测试,可以通过从相机角度发出射线,拿到打击到的位置,这个位置有几种分类:可以是对点类型、平面类型等。也就是在不同条件里形成打击和打击效果。
ARAnchor:这个是AR定位里的基本类,是在识别形成后的一个真实世界的点,包含位置和旋转。通过这个点就可以使虚拟与真实进行对位。
一个协议:
ARTrackable:(2017年9月更新的)这个协议是一个真是物体的捕捉和反应。主要是针对Face而出的,目前(2017.9.15)也只有Face的锚点继承了这个协议。也就是face的锚点可以获取旋转和位置信息了。激动的我在想,会不会将来可捕捉的物体越来越多呢?

七、相机与场景
四个类:
ARFrame:ARScssion里面获取的视频图像。里面有图像原始数据可以随意用哦。
ARCamera:ARSession捕捉后的相机状态,包含相机的姿势和状态。比如可用与否、什么原因让他不可用。目前来说你要做基于世界的AR是不可以去打开前置摄像头的,同样,基于Face的也不可能使用后者摄像头(因为后面没有TrueDepth,不然iPhoneX岂不是要贵死)。ARLightEstimate:关于环境感知种的光线的功能。能够获取光强度和色温数据,你如果需要你就用呗。 ARDirectionalLightEstimate:给脸部识别用的,光照信息。
进入微信群,一起研究AR;加我:vzheng2013

Tags:
渔夫
CEO - Programmer
2
Comments
渔夫
a year ago
CEO - Programmer
加我微信群,一起学习:vzheng2013
0
渔夫
a year ago
CEO - Programmer
魔灵截止目前(2018年9月14)哈。 日期是不是更正一下。
yes,哈哈
0
魔灵
a year ago
截止目前(2018年9月14)哈。 日期是不是更正一下。
0
Luis Dong
Staff
a year ago
PM in Shanghai - Producer
看上去很专业的样子,怕怕
0
渔夫
a year ago
CEO - Programmer
感觉很不错怕
2