ARKit插件与Unity3D在增强现实实践评测总结

UnityARKit插件实践评测总结

ARKit 概况和研究实践技术分析

ARKit是苹果在 2017 WWDC 发布的一款全新的增强现实框架技术产品.

ARKit 可以将 iOS 设备的摄像头和设备动作检测 (Motion) 功能,集成到您的应用或者游戏当中,从而为用户提供增强现实体验。

这里主要介绍Unity-ARKit插件集成到unity的功能和表现,可以在Unity项目中使用ARKit SDK的所有功能官方已上传到Unity的AssetStory并且在持续优化更新中.

官方unity ARkit支持https://forum.unity3d.com/threads/arkit-support-for-ios-via-unity-arkit-plugin.474385/

ARKit 基础技术

1视觉惯性里程计,并在房间当中寻找水平面(核心特色)

ARKit 使用视觉惯性里程计 (Visual Inertial Odometry, VIO) 来精准追踪周围的世界。VIO 将摄像头的传感器数据同ARKit 内置算法数据进行融合。这种数据允许设备能够高精度地感测设备在房间内的动作,而且无需额外校准。

应用表现 ARKit,iPhone 和 iPad 可以分析相机界面中所呈现的场景,并在房间当中寻找水平面。ARKit 不仅可以检测诸如桌子和地板之类的水平面,还可以在较小特征点 (feature points) 上追踪和放置对象。

2光亮估量

ARKit利用摄像头传感器来估算场景当中的可见光总亮度,可为虚拟对象添加符合环境照明量的光量。

3高性能硬件与渲染优化(有硬件和系统限制)

ARKit 运行在 Apple A9 和 A10 处理器上,要求IOS 11、iPhone6s、ipad 2017或之后版本。

这些处理器能够为 ARKit 提供突破性的性能,可以实现快速场景识别、可以基于现实世界场景,来构建更高质量的虚拟内容


ARKit与其它AR SDK对比 

现在主流的AR SDK产品主要有easyAR、vuforia、亮风台(HiAR)、ARKit。

它们都具有的基本特性,可以创建并追踪现实空间和虚拟空间,其中,现实空间是用户所处的世界,虚拟空间是可对可视化内容进行建模的世界这样可以实现一些虚拟模型与摄像机获取的现实世界的展示效果,如图,虚拟模型与现实场景进行融合展示效果。


其它SDK具有的特色:平面图像、3D物体跟踪识别功能,easyAR、HiAR平台支持云识别。

ARKit具有的特色功能:识别现实平面功能和获取现实光照功能。即上面介绍的基础技术特性。

Unity -ARKit插件分析

Unity-ARKit官方提供的demon 展示功能和特性解析,根据官方介绍、演示的Demon和研究实践,Unity-ARKit现阶段主要涉及到的技术有:

1世界跟踪

初始化时ARKit会生成一个三维的世界坐标系(相当于unity的坐标系)如图,定义原点(000)即为初始的ARKit摄像机对应的位置点。其他虚拟的物体空间坐标点都可以参考此为世界坐标原点进行规划。




2实时视频渲染

ARKit默认打开设备的摄像头,可以在展示现实场景的同时渲染展示虚拟物体,如图3,展示的现实场景与虚拟场景结合效果。并且摄像头会把当前实时画面数据传输到ARKit SDK中进行处理,SDK处理功能包括识别返回较小特征点 (feature points) 数据、识别返回平面数据、识别返回环境光数据,并且这些数据是实时更新获取的,根据这些数据和功能我们就可以与unity游戏相结合,实现AR产品和创意。


(图3)(图4)(图5)

3平面估计和更新(核心特色)

摄像头会把当前实时画面数据传输到ARKit SDK中进行处理后,相关API可以获取生成的平面数据,如:平面在空间坐标矩阵的位置,大小,方向等。并且摄像机在不断扫描平面或物体时,平面的数据信息会不断更新和融合,ARKit可以扫描和生成多个平面,多个平面在扫描当中如确定是同一平面,它会把多个平面合并成一整块平面,如图5。这个核心功能的缺陷和注意事项在下面会详细介绍说面。

4命中测试的API

在摄像机开启时,ARKit可以识别特征点(现实物体的平面点),图中的黄色点。示例中点击手机摄像机中的现实物体可以放置虚拟物体在平面上(不至于悬空),如图4

5环境光估计

ARKit可以收集摄像机现实的光源信息并返回,所以调用相关API表现为虚拟物体随着现实化境的光照强度改变,它会变亮或产生阴影。


ARKit识别平面缺陷

ARKit识别扫描尽管在这个过程当中,经常会产生可观的准确度,从而让 AR 的体验更加真实。然而,它严重依赖于设备物理环境的相关细节,而这些细节并不总是一致,有些时候也难以实时测量,这也就导致这些物理细节往往都会存在某种程度的错误。要建立高品质的 AR 体验,那么请注意下述这些注意事项和提示

1基于可见的照明条件来设计 AR 场景。全局追踪涉及到了图像分析的相关内容,因此就需要我们提供清晰的图像。如果摄像头没有办法看到相关的物理细节,比如说摄像头拍到的是一面空空如也的墙壁,或者场景的光线实在太暗的话,那么全局追踪的质量就会大大降低。

2根据追踪质量的相关信息来给用户进行反馈提示。全局追踪会将图像分析与设备的动作模式关联起来。如果设备正在移动的话,那么 ARKit 就可以更好地对场景进行建模,这样即便设备只是略微晃动,也不会影响追踪质量。但是一旦用户的动作过多、过快或者晃动过于激烈,就会导致图像变得模糊,或者导致视频帧中要追踪的特征之间的距离过大,从而致使追踪质量的降低。ARCamera 类能够提供追踪状态,此外还能提供导致该状态出现的相关原因,您可以在 UI 上展示这些信息,告诉用户如何解决追踪质量低这个问题。

3水平面检测预留点时间来生成清晰的结果,一旦您获得所需的结果后,就禁用水平面检测。一开始对水平面进行检测的时候,所检测到的水平面位置和范围很可能不准确。不过随着时间的推移,只要水平面仍然保持在场景当中,那么 ARKit 就能够较为精确地估计水平面的位置和范围。当场景中有一个比较大的平坦表面的话,就算您已经使用过这个水平面来放置内容,那么ARKit 可能还会继续对水平面的锚点位置、范围和变换点进行修正 。

ARKit与unity结合原理




根据这张ARKitunity结合原理图片,我们可以分析出,很多游戏功能都可以整合成AR项目。只需把当前AR所支持的功能特性和unity引擎的功能特性进行融合就可以各种开发与创新。



版权声明:本文为weixin_39706943原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。