一文搞懂ARKit,ARCore,RealityKit和Vuforia

简介: AR框架的一个核心是含能够理解特征的场景和各种类型的锚点。锚点有很多种,可根据特定场景来摆放3D模型 ,甚至可以真人来做距离测量(ARBodyAnchor)。并且这些框架不容忽视的优势是具有进行场景重建和人形遮挡(occlusion)的32位尝试数据。

前言

AR框架的一个核心是含能够理解特征的场景和各种类型的锚点。锚点有很多种,可根据特定场景来摆放3D模型 ,甚至可以真人来做距离测量(ARBodyAnchor)。并且这些框架不容忽视的优势是具有进行场景重建和人形遮挡(occlusion)的32位尝试数据。事实上,AR框架的大部分新功能都增强了AR体验质量。硬件也是如此,苹果全新的U1和R1芯片就带来了AR体验质量的跃升。今年苹果带了全新的Vision Pro头显(微软HoloLens的一大竞争对手),让我们可以通过手势、眼部追踪和声音指令来与AR场景进行交互。

这我们进入了全新的空间计算时代。

有哪些玩家

Google ARCore可用于构建Android和iOS应用。Apple ARKit and RealityKit可用于构建visionOS和iOS应用。PTC Vuforia是设计用于创建Android、iOS和Windows通用平台应用。对于支持ARCore/ARKit的设备,Vuforia会使用ARCore/ARKit技术(也称为平台软硬一体支持)。对于不支持的设备,Vuforia会使用其自有的AR技术和引擎,也称为不依赖硬件的软件方案。实践中,使用Vuforia引擎创建的AR体验会尝试使用最高支持技术,然后依次降级直到设备的运行时提供支持。

在对Android OEM智能手机开发时,可能会遇到一些不愉快的问题:不同厂商的设备需要进行传感器校准才能获得相同的AR体验。所幸苹果的设备没有这一问题,因其所有的传感器都是以相同条件进行校准的。

下面逐一讲解

Google ARCore

ARCore发布于2018年3月。ARCore有三大主要基础概念:动作追踪、环境理解和光照估计。ARCore可在支持的设备上通过称为并发测距与映射Concurrent Odometry and Mapping,简称COM)的技术在6自由度(6DoF)的世界中追踪位置和方向。COM有助于监测水平、垂直和夹角追踪平面的大小和位置。动作追踪的可行,要归功于RGB相机的60 fps光学数据以及陀螺仪和加速计的1000 fps惯性数据以及ToF传感器的60 fps深度数据。当然,ARKit、Vuforia和其它AR库的工作原理基本相同。

在真实场景中移动手机时,ARCore会捕捉周遭的空间理解手机相对世界坐标所处的位置。在捕捉阶段,ARCore会“播种”一些特征点。这些特征点在RGB相机中可见,ARCore使用它们计算手机的位置变化。然后视觉数据要结合IMU(惯性测量单元)的测量数据实时评估ArCamera的位置和方向。如果手机未配备ToF传感器,ARCore会查找横向、垂直或有角度的表面的特征点集,让这些表面对应用以平面呈现(我们称这种技术为平面检测)。在检测结束后我们可以使用这些平面在场景中旋转3D对象。带着色器的虚拟几何体会由ARCore伴侣Filament渲染-支持实时基于物理的渲染(也称PBR)的Sceneform

尽管如此,当前Sceneform仓库已被存档,Google不再维护。最后发布的官方版本是Sceneform 1.17.1。这听起来很奇怪,但ARCore团队成员说“Sceneform库没有直接的替代品,ARCore开发者可在Android AR应用中自由使用任意3D游戏库。但有一个非官方的Sceneform + SceneView分支,因此它是Sceneform框架的一个持续版本(最新版本是Sceneform 1.30)。”

ARCore的环境理解让我们可以以正确的深度遮挡放置3D对象,真实地与现实世界结合。例如,可以使用深度命中测试(hit-testing)和ArAnchors在桌上摆放虚拟咖啡杯。

ARCore也可以定义真实环境的光照参数,提供给定相机图像的平均强度和颜色校正。这一数据可让我们以周围环境相同的条件点亮虚拟场景,大大地增强真实性。

当前ARCore版本有很多知名的API,如原始深度API全深度API地理空间API光照估计场景语义APIVulkan渲染(OpenGL之外)、地形锚点API电子防抖, 增强面部, 增强图像, 即时摆放, 365天云锚点, 录制和回放多播放器支持。ARCore工具集之外还有Android模拟器,让我们可以使用虚拟设备运行和调试AR应用。

在ARCore 1.31中,Google工程师将16位深度通道中的每个灰度级映射到了一个1 mm的距离。因此它可覆盖65,536毫米的距离(2^16)。下表展示了原始深度API和全深度API的区别:

  全深度API (v1.31+) 原始深度API (v1.24+) 全深度API (v1.18+)
精度
覆盖度 所有像素 非所有像素 所有像素
距离 0至65.5米 0.5至5.0米 0至8.2米

ARCore比ARKit更早。还记得2014年发布的Project Tango吗?不严格地说,ARCore就是对Tango SDK的重写。但对FlyBy Media, Faceshift, MetaIO, CameraiVrvana的英明收购让Apple不仅赶上Google并且大幅反超。这种竞争对AR产业应该是良性的。

ARCore的最新版本支持OpenGL ES加速,以及集成了Unity, Unreal和Web应用。当前安卓平台上AR最强大且高能效的芯片是MediaTek Dimensity 9200 (4 nm), Snapdragon 8 Gen 2 (4 nm), Exynos 2200 (4 nm) 和 Google Tensor G2 (5 nm)。

平台方向:Android (Kotlin/Java), Android NDK (C) 和 Unity (AR Foundation)。

ARCore价格: 免费

ARCore的优势 ARCore的劣势
iToF和深度API的支持 AR头显仍处于开发中
快速的平面检测 云端锚点在线上托管
长距精度 缺乏原生渲染引擎
Android Studio中的ARCore模拟器 不支持外部摄像头
g地理空间锚点 快速耗光手机电池

 

Apple ARKit

ARKit于2017年6月发布。和其竞争对手一样,ARKit也使用了特殊的追踪技术,但其名称为视觉惯性里程计(Visual Inertial Odometry)。VIO用于精准捕捉设备周遭的世界。VIO与ARCore中的COM非常相似。ARKit中也有着相似的基本概念:世界追踪场景理解 (包含4个阶段: 平面检测, Ray-Casting光照估计场景重建)和渲染,借助ARKit伴侣-SceneKit框架的强大辅助,它实际上是苹果自2012年以来的3D引擎,还有用Swift全新编写用于AR的RealityKit框架以及其2D引擎SpriteKit框架(2013年起)。

VIO融合了60 fps的RGB传感器、1000 fps的Core-Motion数据(IMU)以及LiDAR数据。此外,应当注意由于较高的能耗(因为会大量使用CPU和GPU),iPhone的电池会很快耗光。对Android设备也是如此。

ARKit有很多有用的方法,可进行高效追踪和精准测量。在其弹药库中我们可以轻松地找到保存和获取ARWorldMaps的功能。世界地图对持续和多用户AR体验是不可或缺的桥梁,通过它可以回到退出前填充相同所选3D内容的环境。对前置和后置摄像头的同步捕捉以及协作会话的支持也非常棒。

对游戏爱好者也有一些好消息:借助MultipeerConnectivity框架,可支持最多6个人同时玩相同的AR游戏。对于3D几何休,我们可以使用全新由Pixar开发和提供支持的USDZ文件格式。USDZ适合复杂的3D模型,支持多PBR着色器、物理特效、动画及空间音频。也可在ARKit中使用如下3D格式

ARKit也可以实现人形和对象遮挡技术(基于alpha深度通道分段)、LiDAR场景重建人体运动捕捉跟踪垂直和水平平面检测图像检测3D对象检测3D对象扫描4K HDR视频捕捉RoomPlan扫描。借助人形和对象遮挡工具,AR内容可真实地出现在现实世界实体之前及之后,让AR体验更具渲染性。使用了机器学习算法的现实反射,以及可同时追踪3张脸的脸部追踪体验也可供我们使用。

使用ARKit和iBeacon,可辅助支持iBeacon的应用知道其所处的房间,显示为该房间所选择的正确3D内容。使用ARKit我们应深度探索ARAnchor类及其子类。

要创建ARKit 7.0应用,我们需要有macOS Sonoma, Xcode 15及运行着iOS 17或visionOS的设备。ARKit可以很好地结合用于GPU加速的Metal框架。也别忘了ARKit可深度集成Unity和Unreal。当前用于AR体验最强大、节能的芯片是Apple M2 (5 nm) 和 A16 Bionic (4 nm)。

ARKit价格: 免费

ARKit的优势 ARKit的劣势
LiDAR和深度API支持 操作系统和芯片限制
Xcode中的visionOS模拟器 ARAnchors无法自动更新
世界地图、AirTags和iBeacon识别 Xcode中无iOS模拟器
Vision Pro头显支持 无外部相机支持
地理空间锚点 快速耗光手机或头显的电池

 

Apple visionOS + RealityKit

RealityKitvisionOS是通向空间计算(移动设备后的新台阶)的大门。 RealityKit在WWDC 2019上发布。它是用于开发visionOS、iOS和macOS应用的高阶框架。它支持当代的实体-组件-系统范式,让我们可高效地实现非AR及AR体验。RealityKit的AR能力(如追踪系统和场景理解能力)完全基于ARKit。坦率地说,没有在这里必要列举所有的RealityKit特性,读者可以阅读这篇StackOverflow帖子

结合了高品质的硬件和软件,测量品质也是高超的。这也是为什么运行了visionOS和基于RealityKit软件的Vision Pro头显可以在大空间中得到高级别品质的度量。Vision Pro头显有12个相机和5个传感器,可完美使用手势和声音指令追踪环境以及与3D模型交互。结合了NearbyInteraction API以及新近更新的CoreLocation框架的RealityKit,为我们提供了精准度量的工具集。

在visionOS中,对于手势有两种策略。人们首先可以使用眼睛和手部与应用进行交互。在间接手势中,人观看模型,然后通过用手指敲击大拇者进行选中(这只是几十种手势中的一种)。在直接手势中,用户的手指直接与3D空间中的模型进行交互。顺便提一下,visionOS实时识别并追踪每只手上的26个骨关节。

关注RealityKit的得力助手-隶属于Xcode的Reality Composer Pro应用。它符合直觉的UI对于快速AR场景原型创建非常有用。Reality Composer Pro中创建的场景可布满锚点、行为以及具有ILM的MaterialX的模型。Reality Composer Pro有一个可下载3D资源的免版权库。可以将合成作品导出为usdz文件或是用于AR Quick Look体验的轻量.reality文件。

RealityKit价格: 免费

RealityKit的优势 RealityKit的劣势
Xcode中的visionOS模拟器 CPU/GPU高强度使用
Vision Pro头显支持 仅支持iOS 13+和macOS 10.15+
多线程渲染 Xcode中无iOS模拟器
 Reality Composer Pro场景支持 快速耗光手机或头显的电池
自动更新追踪目标 无外部相机支持

PTC Vuforia

2015年PTC从高通(Qualcomm)手上以6500万美元收购了Vuforia。高通在2010年便启动了Vuforia项目。可以说Vuforia是AR家庭中的大姐大了。

2016年11月Unity Technologies和PTC官宣了简化AR开发的战略合作。之后便一起合作将Vuforia AR平台的新特性集成到Unity引擎中。Vuforia可使用的开发环境有Unity、MS Visual Studio、Apple Xcode和Android Studio。它支持大量的智能手机、平板和AR智能眼镜,如HoloLens和Magic Leap 2。

Vuforia引擎的视觉惯性同步定位和地图绘制,或称为VISLAM,是一套实现了无标记AR体验的算法。VISLAM结合了视觉惯性里程计(VIO) 和同步定位与地图绘制(SLAM)的优点。

Vuforia引擎具备了ARKit最新版本中同样的主要功能,但也有其自有工具,如深度学习模型目标和对iOS的外部相机支持和对ARCore全新试验API,以及对行业最新AR眼镜的支持。Vuforia相对ARKit和ARCore的主要优势是它有更广泛的设备支持列表并且支持基于Intel的Windows设备的全Windows平台的应用开发,包括Microsoft Surface和HoloLens。Vuforia有独立版本,也有直接集成到Unity的版本。

Vuforia Fusion

Vuforia Fusion是一系列技术,设计用于对广泛的设备提供最佳AR体验。设计它用于解决AR支持技术的碎片化问题,比如相机、传感器、芯片和软件框架。借助Vuforia Fusion,在无额外工作的情况下应用可自动提供最佳体验。

Vuforia Fusion有如下功能:

  • Advanced Model Targets 360 | 由AI提供识别。
  • Larger Area Targets without a prior | 适用约4,000 m²的空间。
  • Model Targets with ML | 允许即时按形状识别对象。
  • Barcode Scanner | 一个读取二维码和条形码的API。
  • Model Target Runtime 3D Guide Views | 用于在运行时在Unity中创建引导视图。
  • Model Target Web API | 使用Web API生成模型目标。.
  • Image Targets | 将AR内容放到水平对象上的最简单方式。
  • Multi Targets | 用于带平面和多个面的对象。
  • Cylinder Targets | 用于将AR内容放到圆柱形状的对象上。
  • Ground Plane | 启用将内容放置到地面及桌面上。
  • VuMarks | 允许对一系列对象识别和添加内容。
  • Object Targets | 用于扫描对象。
  • Static and Adaptive Modes | 用于静态及运动对象。
  • Simulation Play Mode | 允许“穿越”或环绕3D模型。
  • AR Session Recorder | 可在地录制AR体验。
  • 当然还有Vuforia Engine Area Targets.

Vuforia Engine Area Targets让开发者可以将整个空间用于AR目标,不论它是工厂地面还是零售店。使用一个支持设备,如Matterport Pro2 3D相机,开发者可创建目标位置的详细3D扫描。扫描成3D模型后,可通过Vuforia Area Target Generator将其转化为Area Target。然后可将这一目标导入Unity。

遮挡管理是创建真实AR体验的一个关键特性。在使用遮挡管理时,Vuforia引擎监测并追踪对象,哪怕只是部分隐藏于日常障碍如人手之后。特殊的遮挡处理可让应用显示的图像就像是出现在物理对象中一样。

Vuforia API支持StaticAdaptive模式。真实世界模型保持静态时,如大型工具设备,实现静态 API会使用少很多的处理电能。这使得这类模型有更长及更高的性能体验。对于会运动的对象,适配API可提供连续的优良体验。

Vuforia支持iOS设备的Metal加速。也可以在项目中使用Vuforia样本。如,Vuforia Core Samples库包含各种使用Vuforia特性的场景,有预配置的对象识别场景,可用作对象识别应用的参照和初始场景。

以下是其优劣势:

Vuforia的优势 Vuforia的劣势
支持Android, iOS, UWP 价格不合理
广泛支持的设备 开发文档质量差
外部相机支持 PTC的商业涉政
Webcam/模拟器播放模式 不支持地理追踪
圆柱体目标支持 Unity端的未来堪忧

总结

在使用PTC Vuforia进行开发时要比ARCore 和 ARKit有很大的局限。Vuforia是一个支持更广泛Apple和Android设备(甚至有些官方都不支持)的伟大产品,它还支持一些智能眼镜和AR头显的最新模型。

但ARKit, RoomPlanRealit家族工具集(RealityKit, AR Quick Look, Reality Composer Pro, iOS Reality Composer和Reality Converter) 所拥有的最新特性,Vuforia 和 ARCore并不全都有。ARKit 和 RealityKit自身在室内无需校准的短距测量精度,ARCore兼容设备是不具备的。这要感谢Vision Pro硬件以及一些iOS设备中的LiDAR dToF扫描器。而ARCore使用原始深度APIDepth from Motion算法的iToF相机。iToF和LiDAR都可以在场景理解阶段为真实世界的表面通过OcclusionMaterial创建高质量的虚拟网格。这种网格可用于度量和碰撞检测。通过iToF和dToF传感器,框架可即时检测非平面表面以及无追踪特征的表面,如在光照很差的房间内的无纹理白墙。

如果实现了iBeacon工具、ARWorldMaps和对GPS的支持,可有助提升追踪质量并消除很多时间积累导致的追踪错误。ARKit与Vision和CoreML框架的紧密集成为AR工具集的健壮性做出了巨大的藏南。与Apple Maps的集成可心让ARKit在室外放置GPS位置锚点,并且精度较高。ARCore也使用地理空间锚点,借助Google Trekker从Google Earth和街景获取地理数据。

Vuforia的度量精度高度依赖所开发的平台。一些Vuforia特性是基于追踪引擎(ARKit或ARCore)的。即使是知名的Vuforia Chalk应用也使用ARKit位置追踪器。但我们还是期待Apple, Google, PTC和Microsoft在未来能给我们提供怎样的硬件和技术吧,每家公司在空间计算领域都有自己的开发生态。

参考资料:https://stackoverflow.com/questions/60505755/realitykit-vs-scenekit-vs-metal-high-quality-rendering/60513052#60513052

相关文章
|
3月前
|
API 图形学
UNITY与旷世Face++☀️二、手势识别的实现
UNITY与旷世Face++☀️二、手势识别的实现
|
5月前
|
图形学 索引
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
126 0
|
5月前
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
70 0
|
5月前
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
81 0
|
6月前
|
存储 C# 图形学
为虚幻引擎开发者准备的Unity指南
为虚幻引擎开发者准备的Unity指南
|
11月前
|
C# 图形学
Unity的几个入门小常识
Unity的几个入门小常识
|
存储 消息中间件 API
游戏编程之五 DirectSound
游戏编程之五 DirectSound
78 0
|
Web App开发 前端开发 图形学
Unity实战问题-WebGL问题集锦-上篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
442 1
|
前端开发 C# vr&ar
Unity实战问题-WebGL问题集锦-下篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
288 0
|
数据可视化 C# 图形学
虚幻4和Unity3D应该学哪个?
虚幻4 (UE4) 和Unity是目前市场上最热门的游戏引擎,也各自拥有为数众多的开发者,虽然一些大型的游戏公司仍然运用自家开发的引擎来制作游戏,但是在巨大的市场需求下,独立开发者与游戏工作室依然需要一款优秀的引擎来支持项目的开发。
6305 0