增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。




AR包括什么:


一个最简单地AR场景实现所需要的技术以及步骤包含如下


1.多媒体捕捉现实图像:如摄像头


2.三维建模:3D立体模型


3.传感器追踪:主要追踪现实世界动态物体的六轴变化,这六轴分别是X、Y、Z轴位移及旋转。其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域。


4.坐标识别及转换:3D模型显示在现实图像中不是单纯的 frame 坐标点,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在 ARKit 帮助我们大大简化了这一过程


5.除此之外,AR还可以与虚拟物体进行一些交互。



ARKit概述及特点介绍



1.ARKit是2017年6月6日,苹果发布iOS11系统所新增框架,它能够帮助我们以最简单快捷的方式实现AR技术功能。



2. ARKit框架提供了两种AR技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriktKit)实现的增强现实



一般主流都是基于3D实现AR技术,ARKit不仅支持3D游戏引擎 SceneKit 还支持2D游戏引擎 SpriktKit ,这一点出乎笔者意料之外



3.要想显示AR效果,必须要依赖于苹果的游戏引擎框架(3D引擎SceneKit,2D引擎SpriktKit),主要原因是游戏引擎才可以加载物体模型。



虽然ARKit框架中视图对象继承于 UIView ,但是由于目前ARKit框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载ARKit



4.误区解读:ARKit虽然是iOS11新出的框架,但并不是所有的iOS11系统都可以使用,而是必须要是处理器A9及以上才能够使用,苹果从iPhone6s开始使用A9处理器,也就是iPhone6及以前的机型无法使用ARKit



5.开发环境介绍



1.Xcode版本:Xcode9及以上



2.iOS系统:iOS11及以上



3.iOS设备:处理器A9及以上(6S机型及以上)



4.MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)



目前只有Bete版本,链接地址: https://developer.apple.com/download/






ARCore的工作原理



美国时间8月29日,Google发布了用于Android平台的AR SDK——ARCore,这弥补了AR在Android市场上的空缺 。ARCOre的工作原理主要有以下几点:



  1. 运动跟踪:它利用IMU传感器和设备的相机来发现空间的特征点,由此确定Android设备的位置和方向。此外,使用VPS,可以让AR物体每次看起来似乎都在同一位置。
  2. 环境感知:虚拟物体一般都是放置于平坦平面上的,用ARCore可以检测物体的水平表面,建立环境认知感,以保证虚拟的对象可以准确放置,然后让您看到放置在这些表面上的AR物体。
  3. 光线预测:ARCore根据环境的光强度,使开发人员可以与周围环境相匹配的方式点亮虚拟对象。此外,最近的一个实验发现,虚拟阴影在真实环境光照下的调整功能也是如此,这样就可以使AR物体的外观更为逼真。




ARCore与ARKit对比



相同点



  1. ARKit在iOS中的工作原理与ARCore上述的原理大致相同。两者都允许开发人员使用现有手机的单个摄像头来感知并跟踪您的手机相对于现实世界的运动,并能调整虚拟物体与现实世界的匹配程度。
  2. 两者都能与Java/OpenGL,Unity和Unreal配合使用,并且都不需要其他特制硬件就可以在手机系统上运行。
  3. 两者都是先面向开发者,后面向消费者,他们希望开发人员能够轻松创建AR应用程序,理论上可以在现有的数亿手机上应用。

不同点



  1. ARKit可以将AR应用程序运行在任何具有A9处理器的iOS 11系统以上,这意味着任何iPhone 6S或更高版本或任何iPad Pro 都将能运行这些AR应用程序,但是对Android来说,由于不同厂商的手机型号会有兼容性的问题以及摄像头的不同,这在很大程度上限制了ARCore在Android的推广,为此,Google还需做大量的工作。在这一点上,苹果比谷歌有优势。
  2. 此外,Google还将AR 引入Web,认为其是“AR未来的关键组成部分”, 并发布了两个实验性的浏览器——以AR为重点的Chromium浏览器版本:一个是在Android的基础上,可使用ARCore的浏览器;一个是基于iOS,可使用ARKit的浏览器。这样,允许Web开发人员使用AR,用浏览器也能用上AR功能,不用在手机上下载应用,开发人员可以使用Java将3D对象直接从网页推送到真实的世界中,虽然这些过程仍处于实验阶段,但依然值得期待。