ARKit使用视觉惯性里程计(Visual lnertial Odometry,VlO)来精准追踪周围的世界。VlO将摄像头的传感器数据同Core Motion 数据进行融合。这两种数据允许设置能够精度地感测设备在房间内的动作,而且无需额外校准
场景识别与光亮估量
借助ARKit,iPhone和iPad可以分析相机界面中所呈现的场景,并在房间当中寻找水平面。ARKit不仅可以检测诸如桌子和地板之类的水平面,还可以在较小特征点(featurepoints)上追踪和放置对象。ARKit还利用摄像头传感器来估计算场景当中的可见光总亮度,并为虚拟对象添加符合环境照明量的光量。
高性能硬件与渲染优化
ARKit运行在AppleA9和A10处理器上。这些处理器能够为ARKit提供突破性的性能,从而可以实现快速场景识别,并且还可以让您基于现实世界场景,来构建详细并引入注目的虚拟内容。您可以利用Metal、Scenekit以及诸如Unity、虚幻引擎之类的第三方工具,来对ARKit进行优化。
ARKit
ARKit将iOS设备的摄像头和设备动作检查(Motion)功能,集成到您的应用或者游戏当中,从而为用户提供增强现实体验。
所谓的增强现实(AugmentedReality,AR),指的是向设备摄像头产生的实时动态视图中,添加2D或者3D元素,然后用某种方法让这些元素看起来就处于现实世界当中,所产生一种用户体验。ARKit提供了设备动作追踪、相机场景捕获和高级场景处理,并让AR元素的展示变得极为便利,从而大大简化了建立AR用户体验的工作难度。
探索Ar的概念、特性,以及了解建优秀AR场景的最佳实践。
1.ARSession类
这是一个单例,是ARKit的核心类,用于控制设备摄像头,处理传感器数据,对捕获的图像进行分析等等
2.ARSessionConfiguration类
跟踪设备方向的一个基本配置,在运行时,需要指定AR运行的配置
3.ARWorldTrackingSessionConfiguration
配置跟踪设备的方向和位置,以及检测设备摄像头所看到的现实世界的表面
4.ARCNView类
用来增强相机通过3D SceneKit所捕捉到的内容并展示AR效果的一个View
5.ARSKView类
用来增强相机通过2D SpriteKit所捕捉所捕捉到的内容并展示AR效果的一个View
6.ARAnchor类
真实世界的位置和方向,用于在一个AR场景中放置一个物体
7.ARPlaneAnchor类
在一个AR Session会话中检测一个真实中平面的位置和方向的相关信息
8.ARHitTestResult类
在一个AR Session会话中通过检测相机视图中的一个点来获取真实世界中表面的相关信息
9.ARFrame类
捕获一个视频图像和位置追踪信息作为一个AR会话的一部分
10.ARCamera类
在一个AR会话中摄像机的位置的成像特征信息为捕获视频帧
11.ARLightEstimate类
在一个AR会话中估计场景照明信息关联到一个捕获的视频帧
Understanding Augmented Reality
探索Ar的概念、特性,以及了解构建优秀AR场景的最佳实践。
对于所有的AR场景而言,最基本要求是:创建并追踪现实空间和虚拟空间之间的关系,其中,现实空间是用户所处的世界,虚拟空间是可对可视化内容进行建模的世界,这同时也是ARKit的基本特性。当您的应用将这些虚拟内容与实时视频结合,并在一起显示的时候,用户就可以体验到所谓的增加现实:您的虚拟内容成为了真实世界的一部分,尽管这只是错觉而已。
HowWorldTrackingWorks
为了在现实世界和虚拟世界之间建立对应关系,ARKit使用了一种被称为视觉惯性里程计的技术。这项技术会将iOS设备的动作感测硬件信息,加上对可见场景的计算视觉分析功能,然后与设备的摄像头相结合。ARKit将会去识别场景图像当中的显著特征,然后在视频震中追踪这些特征位置的距离,然后再将这些信息与动作感测数据进行比较。从而生成具备设备位置和动作特征的高精准模型。
全局追踪(WorldTracking)同样也可以分析和识别场景当中的内容。通过使用点击测试(hit-testing)方法(参见ARHitTestResult类),从而找到与相机图像中的某个点所对应的真实的世界面。如果您在Session(会话)配置当中启用了planeDetection配置的话,那么ARKit就会去检测相机图像当中的水平面,并报告其位置和大小。您可以使用点击测试所生成的结果,或者使用所检测到的水平面,从而就可以在场景当中放置虚拟内容,或者与之进行交互。
BestPractices and Limitations
全局追踪是一项不精确的科学(inexact science)尽管在这个过程当中,经常会产生可观的准确度,从而让AR的体验更加真实。然而,它严重依赖于设备物理环境的相关细节,而这些细节并不总是一致,有些时候也难以实时测量,这也就导致这些物理细节往往都会存在某种程度的错误。要建立高品质的AR体验,那么请注意下述这些注意事项和提示:
基于可见的照明条件来设计AR场景。全局追踪涉及到了图像分析的相关内容,因此就需要我们提供清晰的图像。如果摄像头没有方法看到相关的物理细节,比如说摄像头拍到的是一面空空如也的墙壁,或者场景的光线实在太暗的话,那么全局追踪的质量就会大大降低。
根据追踪质量的相关信息来给用户进行反馈提示。全局追踪会将图像分析与设备的动作模式关联起来。如果设备正在移动的话,那么ARKit就可以更好地对场景进行建模,这样即便设备只是略微晃动,也不会影响追踪质量。但是一旦用户的动作过多、过快或者晃动过于激烈,就会导致图像变得模糊,或者导致视频帧中要追踪的特征之间的距离过大,从而致使追踪质量的降低。ARCamera类能够提供追踪状态,此外还能提供导致该状态出现的相关原因,您可以在UI上展示这些信息,告诉用户然后解决追踪质量低这个问题。
给水平面检测预留点时间来上成清晰的结果,一旦您获得所需的结果后,就禁用水平面检测。一开始对水平面进行检测的时候,所检测到的水平面位置和范围很可能不准确。不过随着时间的推移,只要仍然保持在场景当中,那么ARKit就能够较为精准地估计水平面的位置和范围。当场景中有一个比较大的平坦表面的话,就算您已经使用过这个水平面来放置内容,那么ARKit可能还会继续对水平面的锚点位置、范围和变换点进行修正。
网友评论