苹果ARKit开发入门教程:如何使用ARKit进行开发?

视界君-阿琳 2017-07-10 15:27:57

原标题:苹果ARKit开发入门教程:如何使用ARKit进行开发?

image002.1499238026

前言

美国当地时间2017年6月5日上午9点,苹果全球开发者大会(WWDC2017)在加州SanJose召开。从苹果创始人SteveJobs离世开始,对苹果不再引领创新风潮的批评就不绝于耳。对于本次WWDC大会,人们其实并没有抱有很大的期待。

image003.1499238026

但是就在这种饱受业界批评质疑的情况下,苹果悄然发力,不但宣布旗下的主流电脑机型将全面支持VR开发,还表示即将支持SteamVR,让业内人士为之震惊。但是让虚拟现实行业的其它巨头真正颤抖的是,TimCook在iOS11环节宣布推出ARKit,一款全面支持AR增强现实开发的SDK。用Cook自己的话来说,苹果一夜之间成为全球最大的AR开发平台。

按照苹果一贯的软硬件一体化风格,独立的AR硬件设备iGlass必然已经在秘密研发之中。虽然目前还没有任何从供应链产线上获取到的iGlass产品信息,但是我们有理由相信苹果一定会在未来的某个时刻给世人再次带来巨大的惊喜。具体的路线是怎样的呢?基本可以肯定是:ARKit先上,然后是配备了3D摄像头和相关传感器的iPhone8(或者是Edition,随便你怎么称呼),而最终则是独立的生态级别产品iGlass。

在等待iGlass到来的过程中,我们可以先了解如何在现有的iOS设备上发挥ARKit的强大威力。

什么是ARKit

让全球iOS开发者期待已久的神秘ARKit在WWDC2017上揭开了神秘的面纱。当然,它并非是类似iOS、MacOS这样的完整生态级别平台。目前苹果将其归为iOS11的一个framework(框架),和CoreML(机器学习)、SiriKit、HomeKit、HealthKit等处于同一级别。但目前看来,ARKit和Core ML必将成为iOS平台上最有潜力的两个framework,甚至有望在日后成就类似iOS和MacOS这样的独立生态系统,其地位至少不会低于WatchOS、TVOS。

当然,前提是苹果推出了和ARKit及Core ML相对应的硬件产品,就如同WatchOS对应着AppleWatch,而TVOS则对应着AppleTV一样。

image005.1499238026

在当前阶段,我们暂且将ARKit视作iOS平台中的一个系统框架即可。

ARKit的功能特性

大家都知道,所谓的增强现实(Augementedreality,AR)也即在真实世界的实时场景中添加虚拟的2D或3D对象。ARKit集成了设备的运动跟踪、摄像头场景捕捉、先进的场景处理,以共同构建令人惊艳的AR体验效果,如下图所示。

image004.1499238026

ARKit使用VisualInertial Odometry(VIO,视觉惯性里程计)来精确跟踪现实世界中的真实场景。相比其它设备平台,ARKit中的VIO可以将传感器数据和CoreMotion的数据融合在一起,从而提供更为精确的信息。ARKit可以让iOS设备精确感知它如何在房间内移动,而无需外部设备的校准。基于此原理,ARKit可以获取关于iOS设备位置和运动信息的高精度模型,并在场景中使用。

使用ARKit,iPhone和IPad可以分析来自摄像头视图中的场景,并找到房间的水平平面。ARKit可以检测到例如桌子和地板之类的平面,还可以检测和跟踪物体。更酷的是,ARKit还可以利用摄像头传感器来估算场景中的光线强度,从而在虚拟物体上提供合适的光照。

在实际的开发中,可以使用点击测试方法(如ARHitTestResult类)来根据摄像头捕捉的图像找到真实世界的表面。如果开发者在配置中启用了planeDetection,ARKit可以检测到摄像头所捕捉图像中的平面,并记录其位置和大小信息。

当然,受限于iOS设备的硬件,当前的ARKit还不能做到完美。不管怎样,当前的iOS设备还只能实现单目SLM,因此在实际的开发和使用中要注意以下事项:

1.在设计AR产品体验时,一定要保证现场的光照条件

ARKit的Worldtracking涉及到图像分析,其前提是摄像头可以捕捉到清晰的图像。因此,如果因为现场光照条件不好而导致摄像头无法捕捉到图像的细节,那么最终的用户体验肯定是糟糕的。

2.使用跟踪质量信息向用户提供反馈

ARKit世界跟踪功能的另一大前提是实时监测设备的运动信息。过量或过于剧烈的运动将导致图像模糊,从而无法追踪不同视频帧的特征点,导致跟踪质量下降。ARCamera可以提供跟踪状态信息,因此建议开发者设计相应的UI,向用户反馈此类信息,避免过量或过于剧烈的运动。

image006.1499238026

3.允许ARKit获得足够的时间来检测平面,而在检测完成后最好禁用平面检测功能。

在实际体验的时候,平面检测可能会耗费毕竟长的时间。而且当某个平面首次被检测到时,其位置和范围信息往往是不准确的。随着平面在场景中出现的时间足够长,ARKit将会优化相关的位置和范围信息。但是一旦我们获取到了令人满意的信息,就应该关闭平面检测功能,否则ARKit将持续变更平面锚点的位置、范围和坐标信息。

关于使用ARKit的更多注意事项,请参考苹果官方的相关文档(Building aBasic AR Experience) 。

ARKit所支持的设备及平台

基于苹果一贯的风格,ARKit目前只支持iOS产品,目前是iPhone和iPad。预计在不久的将来ARKit将支持苹果全线硬件设备,包括AppleWatch、AppleTV、Mac电脑,以及传闻中的iGlass。

当然, ARKit的强悍功能都是基于海量的计算,因此目前只支持AppleA9和A10处理器。从硬件设备上来看,目前搭载了AppleA9和A10处理器的只有iPhone6s, iPhone 6s Plus, iPhone SE,iPhone7,iPhone7 Plus,两代iPadPro和最新的iPad。令人心酸的是,哥的iPhone6 Plus算是彻底的被淘汰了。我想这一点肯定被很多人忽略了,意不意外,惊不惊喜?!

所以说如果想要享受iOS11系统满满的诚意,大家还是老老实实准备好银子迎接苹果的一轮收割吧。

不过让开发者欣慰的是,ARKit除了支持苹果原生的开发,如搭配Metal、SceneKit进行Native开发之外,还支持第三方的游戏引擎,特别是Unity和UnrealEngine。

附上TimCook接受Bloomberg采访的视频连接:https://www.youtube.com/watch?v=yK2zzcjp2As

image001.1499238026

 

99VR视界二维码
热门推荐
Hot Recommended
在线客服