与 ARCore 和 ARKit 相比,Vuforia 有什么限制吗?

Are there any limitations in Vuforia compared to ARCore and ARKit?

我是增强现实领域的初学者,致力于使用智能手机创建建筑物平面图(楼层平面图、房间平面图等具有精确测量)的应用程序。所以我正在研究可用于此的最佳 AR SDK。没有多少文章将 Vuforia 与 ARCore 和 ARKit 进行对比。

请推荐最适合使用的 SDK,以及各自的优缺点。

更新时间:2022 年 5 月 23 日

TL;DR


前言

在回答你的问题之前,我想指出任何 AR 框架都会从拥有多种类型的锚点中受益匪浅。丰富的不同类型的锚点不仅可以让你根据特定场景安全地连接 3D 模型,甚至可以使用真人作为计算的起始位置(我的意思是 ARBodyAnchor)。此外,任何框架的 indisputable 优势都是可用于场景重建和遮挡的高质量 32 位深度数据。事实上,AR 框架的几乎任何功能都有助于提高 AR 体验的质量。



什么是什么

Google ARCore 允许您为 Android 和 iOS 构建应用程序。使用 Apple ARKit,您可以为 iOS 构建应用程序;使用 Apple RealityKit – 适用于 iOS 和 macOS。伟大的旧 PTC Vuforia 旨在为 Android、iOS 和通用 Windows 平台创建应用程序。

Vuforia 的一个重要特点是它使用 ARCore/ARKit 技术,前提是它 运行 所在的硬件支持它,否则 Vuforia 使用自己的 AR技术和引擎,被称为software solution without dependant hardware.

When developing for Android OEM smartphones, you may encounter an unpleasant issue: devices from different manufacturers need a sensors’ calibration in order to observe the same AR experience. Luckily, Apple gadgets have no such drawback because all sensors used there were calibrated under identical conditions.

让我把最重要的事情放在第一位。



Google ARCore 1.31

ARCore 于 2018 年 3 月发布。ARCore 基于三个主要 fundamental concepts : Motion Tracking, Environmental Understanding and Light Estimation. ARCore allows a supported mobile device 使用称为 的特殊技术以 6 个自由度 (6DoF) 跟踪其相对于世界的位置和方向]并发里程计和映射。 COM 帮助我们检测水平、垂直和倾斜跟踪表面的大小和位置。得益于来自 RGB 相机 60 fps 的光学数据,以及来自陀螺仪和加速度计 1000 fps 的惯性数据,运动追踪功能非常强大。以及来自 ToF 传感器的深度数据 60 fps。当然,ARKit、Vuforia 和其他 AR 库的操作方式几乎相同。

当您在真实环境中移动 phone 时,ARCore 会跟踪周围的 space 以了解智能 phone 相对于世界坐标的位置。在跟踪阶段,ARCore“sows”所谓的feature points。这些特征点通过 RGB 相机可见,ARCore 使用它们来计算 phone 的位置变化。然后,视觉数据必须与来自 IMU(惯性测量单元)的测量结果相结合,以估计 over time. If a phone isn't equipped with ToF sensor, ARCore looks for clusters of feature points that appear to lie on horizontal, vertical or angled surfaces and makes these surfaces available to your app as planes (we call this technique Plane Detection). After detection process you can use these planes to place 3D objects in your scene. Virtual geometry with assigned shaders will be rendered by ARCore's companion – Sceneform supporting a real-time Physically Based Rendering (a.k.a. PBR) engine – Filament.

的位置和方向

尽管如此,目前 Sceneform 存储库已存档,不再由 Google 积极维护。最后发布的正式版本是 Sceneform 1.17.1。这听起来可能很奇怪,但 ARCore 团队成员说“Sceneform 库没有直接替代品,ARCore 开发人员可以自由地将任何 3D 游戏库与 Android AR 应用程序一起使用。但是,有一个非官方的 Sceneform 分支,所以它是 continuation 存档的 Sceneform 框架(最后一个版本是 Sceneform 1.21)。

ARCore 的环境理解让您能够以与现实世界真实融合的方式放置具有正确深度遮挡的 3D 对象。例如,您可以使用 Depth hit-testingArAnchors.[= 在 table 上放置一杯虚拟咖啡109=]

ARCore 还可以定义真实环境的照明参数,并为您提供给定相机图像的平均强度和色彩校正。该数据使您可以在与周围环境相同的条件下照亮虚拟场景,从而显着增强真实感。

当前的 ARCore 版本有如此重要的 APIs Raw Depth API and Full Depth API, Geospatial API, Lighting Estimation, Augmented Faces, Augmented Images, Instant Placement, Debugging Tools, 365-days Cloud Anchors, Recording and Playback and Multiplayer support. The main advantage of ARCore in Android Studio over ARKit in Xcode is 允许您 运行 并使用虚拟设备调试 AR 应用程序。

此 table 显示原始深度 API 和完整深度 API 之间的区别:

Raw Depth API Full Depth API
Accuracy Good Bad
Coverage Not all pixels All pixels
Distance 0.5 to 5.0 m 0 to 8.0 m

ARCore 比 ARKit 旧。你还记得 2014 年发布的 Project Tango 吗?粗略地说,ARCore 只是一个重写的 Tango SDK。但是明智地收购了 FlyBy MediaFaceshiftMetaIOCameraiVrvana 帮助 Apple 不仅迎头赶上,而且大大超越了 Google。假设它对AR行业有好处。

最新版ARCore支持OpenGL ES加速,与Unity、Unreal、Web应用集成。目前,Android 平台上最强大、最节能的 AR 体验芯片组是 Snapdragon 8 Gen 1(4 nm)和 Exynos 2200 (4 纳米).

ARCore 价格:免费

ARCore pros ARCore cons
iToF and Depth API support Poor Google Glass API
Quick Plane Detection Cloud Anchors hosted online
Long-distance-accuracy Lack of rendering engines
ARCore Emulator in AS Poor developer documentation
High-quality Lighting API No external camera support
Geospatial anchoring No Body Tracking support

这是 ARCore 代码片段奥特林:

private fun addNodeToScene(fragment: ArFragment, 
                             anchor: Anchor, 
                         renderable: Renderable) {
    
    val anchorNode = AnchorNode(anchor)
    anchorNode.setParent(fragment.arSceneView.scene)
    
    val modelNode = TransformableNode(fragment.transformationSystem)
    modelNode.setParent(anchorNode)
    modelNode.setRenderable(renderable)
    modelNode.localPosition = Vector3(0.0f, 0.0f, -3.0f)
    fragment.arSceneView.scene.addChild(anchorNode)
    
    modelNode.select()
}

Platform-specific 方向:Android (Kotlin/Java),Android NDK (C) 和 Unity (AR Foundation)。




苹果 ARKit 5.0

ARKit 于 2017 年 6 月发布。与其竞争对手一样,ARKit 也使用特殊技术进行跟踪,但它的名字是 Visual Inertial Odometry。 VIO 用于非常准确地跟踪您设备周围的世界。 VIO 与 ARCore 中的 COM 非常相似。 ARKit 中也有三个类似的基本概念:World TrackingScene Understanding(其中包括四个阶段:平面检测,Ray-Casting,光照估计,Scene Reconstruction), and Rendering with a great help of ARKit companions – SceneKit框架,其实是2012年以来的苹果3D游戏引擎,RealityKit框架,专门为AR打造,用Swift从头编写(2019年发布),以及SpriteKit 框架及其 2D 引擎(自 2013 年起)。

VIO 将 RGB 传感器数据 60 fps 与 Core-Motion 数据 (IMU) 1000 fps 和 LiDAR 数据融合。除此之外,应该注意的是,由于非常高的能量影响(因为 CPU 和 GPU 的巨大负担),你的 iPhone 的电池会很快耗尽。 Android 设备也是如此。

ARKit 有一些有用的方法来实现稳健的跟踪和准确的测量。在它的武器库中,您可以找到 easy-to-use 用于保存和检索 ARWorldMaps 的功能。世界地图是持久多用户AR体验[不可或缺的“门户” =429=] 允许您在您的应用程序变为非活动状态之前返回到充满相同选择的 3D 内容的相同环境。支持同步 frontback 摄像头捕获以及对 collaborative sessions 的支持也很棒。

对于游戏玩家来说有一个好消息:最多 6 人可以同时玩同一个 AR 游戏,这要感谢 MultipeerConnectivity framework. For 3D geometry you could use a brand-new USDZ file format, developed and supported by Pixar. USDZ is a good choice for sophisticated 3D models with multiple PBR shaders, physics, animations and spacial sound. Also you can use the for ARKit。

ARKit 还可以帮助您执行 People and Objects Occlusion 技术(基于 alphadepth 通道的分割),LiDAR Scene ReconstructionBody Motion Capture trackingVertical and Horizontal Planes detectionImage detection3D Object detection3D Object scanning。借助人物和物体遮挡工具,您的 AR 内容可以逼真地从现实世界实体的前后经过,让 AR 体验更加身临其境。 Realistic reflections,使用机器学习算法,Face tracking experience 允许您一次跟踪最多 3 个面孔,也可供您使用。

使用 ARKit 和 iBeacons,您可以帮助 iBeacon-aware 应用程序了解它所在的房间,并显示为该房间选择的正确 3D 内容。使用 ARKit,你应该集中利用 class 及其所有子 classes。

特别注意 RealityKit 的卫星 – Reality Composer 应用程序现在是 Xcode 的一部分。此 brand-new 应用程序可帮助您构建 AR 场景原型。在 Reality Composer 中构建的场景可以包含动态、简单动画和 PBR 着色器。 Reality Composer 可以作为独立应用安装在 iOS 和 iPadOS 上。

要创建 ARKit 5.0 应用程序,您需要 macOS Monterey,Xcode 13 和设备 运行ning iOS 15。ARKit 是一个值得与 Metal 框架结合以实现 GPU 加速的候选者。不要忘记 ARKit 与 Unity 和 Unreal 紧密集成。目前,用于 AR 体验的最强大和最节能的芯片组是 Apple M1(5 纳米)和 A15 Bionic(5 纳米)。

ARKit 价格:免费

ARKit pros ARKit cons
LiDAR and Depth API support No AR glasses support
Stable 6 DoF World Tracking No auto-update for Anchors
Collaborative Sessions iOS / Chipsets Restrictions
WorldMaps, iBeacon-awareness No ARKit Simulator in Xcode
4 rendering technologies No external camera support
Rich developer documentation Quickly drains your battery

这是用 Swift 编写的 ARKit 代码片段:

func renderer(_ renderer: SCNSceneRenderer, 
             didAdd node: SCNNode, 
              for anchor: ARAnchor) {
    
    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
    let planeNode = tableTop(planeAnchor)
    node.addChildNode(planeNode)
}
    
func tableTop(_ anchor: ARPlaneAnchor) -> SCNNode {
    
    let x = CGFloat(anchor.extent.x)
    let z = CGFloat(anchor.extent.z)
    
    let tableNode = SCNNode()
    tableNode.geometry = SCNPlane(width: x, height: z)
    tableNode.position = SCNVector3(anchor.center.x, 0, anchor.center.z)
    return tableNode
}




Apple RealityKit 2.0

特别注意 RealityKit that was introduced in WWDC 2019. There’s been a lot of hype around it since then. RealityKit supports Entity-Component-System paradigm and allows you create AR/VR experiences for iOS/macOS. This high-level framework works with .usdz assets, .rcproject and .reality files which you can import from standalone macOS/iOS app – Reality Composer (RC)。 Cupertino 软件工程师为增强现实应用从头构建了 RealityKit,您无需重复代码即可创建这些应用。它从头开始与 Swift 一起工作——没有 Objective-C 遗留问题。当然,RealityKit 不仅在 SwiftUI 和 UIKit 上大放异彩,在 Metal 上也大放异彩。

RealityKit 框架基于两个基本块:ModelEntity class(这取决于 MeshResource and ), and an class (自动跟踪目标,不像 ARKit 中的 ARAnchor)。

RealityKit 为您提供了一组丰富的工具来使用 AR/VR:新的声明式 Swift 语法、3D 原语、PBR material s,遮挡和视频 materials,lights with realistic ray-traced shadows, spacial audio processing, 10 different anchors types, simplified setup for collaborative sessions, robust physics' setup, indispensable built-in ML algorithms and many other features. In macOS Monterey, RealityKit supports Object Reconstruction API

普遍接受的观点是,与垂直表面相比,所有 AR 框架在定义水平表面方面都更好更快。与此处考虑的所有模块一样,RealityKit 也不例外。

Reality Composer简单直观UI非常适合制作原型A场景。 RC 有一个包含可下载 3D 资产的免版税库,允许您构建具有动画、音频和动态的复杂 3D 场景,其中包含对这些对象的构建或行为方式的详尽描述。您还可以将合成导出为轻量级 AR Quick Look 体验,让用户放置和预览内容。在 Reality Composer 中,您可以使用五种锚点类型之一开始项目:horizontalverticalimagefaceobject – 对应于所需的类型跟踪。

RealityKit 和 Reality Composer 价格:免费.

RealityKit pros RealityKit cons
Can create AR apps w/o ARKit Intensive CPU/GPU usage
A bit of boilerplate code iOS 13+, macOS 10.15+ only
Suitable for AR/VR projects Start lagging on old devices
Robust API for RC scenes There's no particle system
Asynchronous asset loading Lack of Apple documentation
Autoupdating tracking target No AR glasses support

这是用 Swift 编写的 RealityKit 代码片段:

override func viewDidLoad() {
    super.viewDidLoad()
    
    let textAnchor = try! SomeText.loadTextScene()
    let textEntity: Entity = textAnchor.realityComposer!.children[0]
    var textMC: ModelComponent = textEntity.children[0].components[ModelComponent]!
    
    var material = SimpleMaterial()
    material.baseColor = .color(.yellow)
    textMC.materials[0] = material
    textMC.mesh = .generateText("Hello, RealityKit")
    textAnchor.realityComposer!.children[0].children[0].components.set(textMC)
    arView.scene.anchors.append(textAnchor)
}

苹果 AR 生态系统的另一个重要组成部分是 Reality Converter 应用程序。现在,您可以使用 Reality Converter 而不是使用命令行转换工具。 brand-new 应用程序使您可以轻松地在 Mac 上转换、查看和自定义 .usdz 3D 对象。只需 drag-and-drop 常见的 3D 文件格式,例如 .obj.gltf.usd,查看转换后的 .usdz 结果,自定义 material 属性您自己的纹理和文件元数据。您甚至可以使用 built-in Image-Based 照明 (IBL) 选项在各种照明条件下预览您的 .usdz 对象。




PTC Vuforia 10.7

2015 年 10 月,PTC 以 6500 万美元的价格从高通手中收购了 Vuforia。考虑到高通在 2010 年推出了 Vuforia。所以 Vuforia 是 AR 家族的姐姐。大姐姐在看着你们,伙计们! ;)

2016 年 11 月,Unity Technologies 和 PTC 宣布了一项旨在简化 AR 开发的战略合作。从那时起,他们就开始合作,将 Vuforia AR 平台的新功能集成到 Unity 游戏引擎中。 Vuforia 可用于 Unity、MS Visual Studio、Apple Xcode 和 Android Studio 等开发环境。支持多种智能phones、tablets和AR智能眼镜,如HoloLens、Magic Leap、Vuzix M400、ODG R7。

Vuforia 引擎拥有与最新版本的 ARKit 大致相同的主要功能,但它也有自己的功能,例如具有深度学习的模型目标、用于无标记 AR 体验的 VISLAM 和 iOS,用于 ARCore 和 ARKit 的新实验 API 以及对行业最新 AR 眼镜的支持。 Vuforia 相对于 ARKit 和 ARCore 的主要优势在于,它有一个 wider list of supported devices and it supports the development of Universal Windows Platform 应用程序,适用于 Intel-based Windows 10 种设备,包括 Microsoft Surface 和 HoloLens。

Vuforia 有独立版本和直接集成到 Unity 中的版本。它具有以下功能:

  • 高级模型目标 360,由 AI 提供支持的识别;
  • 深度学习模型目标,允许使用pre-existing 3D 模型和 ML 算法按形状即时识别物体;
  • 模型目标 Web API,使用 Web API;
  • 生成模型目标
  • 图像目标,将AR内容放在平面物体上的最简单方法;
  • 多目标,适用于具有平面和多边的物体;
  • 圆柱形目标,用于将 AR 内容放置在圆柱形物体上,例如瓶子;
  • Static Device Tracker,非常适合设备保持静态的应用程序,例如在三脚架上;
  • Ground Plane,作为 Smart Terrain 的一部分,可以将数字内容放置在地板和 table 顶面上;
  • VuMarks,允许识别并向一系列对象添加内容;
  • 对象目标,用于扫描对象;
  • 静态和自适应模式,适用于静止和移动物体;
  • 模拟播放模式,允许开发者“穿行”或绕过 3D 模型,并从他们的计算机上看到最终的 AR 体验;
  • Vuforia Area Target Creator 应用程序,使我们能够使用 depth-enabled 移动设备扫描并生成新的区域目标;
  • AR Session Recorder,可以在现场录制AR体验,然后在Unity中使用Playback模式进行录制更新;
  • 当然还有 Vuforia FusionVuforia Engine Area Targets.

Vuforia Fusion 是一种旨在解决 AR 支持技术(例如相机、传感器、芯片组和 ARKit 等软件框架)中碎片化问题的功能。借助 Vuforia Fusion,您的应用程序将自动提供最佳体验,而无需您进行额外的工作。

Vuforia Engine Area Targets 使开发人员能够使用整个 space,无论是工厂车间还是零售店,作为 AR 目标。使用第一个支持ted 设备,一个 Matterport Pro2 摄像头,开发人员可以创建所需位置的详细 3D 扫描。建议地点在室内,大部分是静态的,并且不超过 1,000 平方米(约 10,000 平方英尺)。一旦扫描生成 3D 模型,就可以使用 Vuforia Area Target Generator 将其转换为 Area Target。然后可以将此目标带入 Unity。

Vuforia API 允许 StaticAdaptive 模式。当 real-world 模型像大型工业机器一样保持静止时,实施 Static API 将使用更少的处理能力。这为这些模型提供了更持久和更高性能的体验。对于不会静止的物体,Adaptive API 可以提供持续稳定的体验。

External Camera 功能是 Vuforia 引擎驱动程序框架的一部分。外部摄像头为增强现实的可能性提供了新的视角。它允许 Vuforia Engine 访问 phones 和 tablets 中配备的摄像头以外的外部视频源。通过使用独立的摄像头,开发人员可以创建一种增强现实体验,提供来自玩具、机器人或工业工具的 first-person 视图。

Occlusion Management 是构建逼真的 AR 体验的关键特征之一。当您使用遮挡管理时,Vuforia Engine 会检测并跟踪目标,即使它们部分隐藏在日常障碍物后面,例如您的手。特殊的遮挡处理允许应用程序显示图形,就好像它们出现在物理对象中一样。

Vuforia 支持 iOS 设备的 Metal 加速。您也可以为您的项目使用 Vuforia 示例。例如:Vuforia Core Samples 库包含各种使用 Vuforia 功能的场景,包括一个 pre-configured 对象识别场景,您可以将其用作对象识别应用程序的参考和起点。

这是用 C# 编写的 AR Foundation 代码片段:

private void UpdatePlacementPose() {

    var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
    var hits = new List<ARRaycastHit>();
    arOrigin.Raycast(screenCenter, hits, TrackableType.Planes);
    
    placementPoseIsValid = hits.Count > 0;

    if (placementPoseIsValid) {

        placementPose = hits[0].pose;
    
        var cameraForward = Camera.current.transform.forward;
        var cameraBearing = new Vector3(cameraForward.x, 
                                        0, 
                                        cameraForward.z).normalized;

        placementPose.rotation = Quaternion.LookRotation(cameraBearing);
    }
}

Vuforia SDK 定价选项

  • 免费许可 – 您只需要免费注册Development License Key

  • 基本许可证42 美元/月,每年收费)– 学生

  • 基本 + 云许可证99 美元/月)– 适用于小型企业

  • 代理商套餐个人价格)– 5 short-term 个许可证

  • Pro 许可证个人价格)– 适用于所有公司类型

这是优点和缺点。

Vuforia pros Vuforia cons
Supports Android, iOS, UWP The price is not reasonable
A lot of supported devices Poor developer documentation
External Camera support SDK has some issues and bugs
Webcam/Simulator Play Mode Doesn't support Geo tracking
Cylinder Targets support Poor potential in Unity




结论:

与 ARCore 和 ARKit 相比,使用 PTC Vuforia 进行开发时没有重大限制。 Vuforia 是一款古老的伟大产品,它支持更广泛的 Apple 和 Android 设备(甚至是那些没有得到官方支持的设备),并且它支持几种最新型号的 AR 眼镜。

但在我看来,带有 Reality Family 工具包(RealityKit、Reality Composer 和 Reality Converter)的 ARKit 具有 Vuforia 和ARCore 只是部分拥有。 ARKit 个人在房间内的 short-distance 测量精度优于任何 ARCore 兼容设备,无需任何校准。这是通过使用 Apple LiDAR dToF 扫描仪实现的。 ARCore 现在使用 Raw Depth API 的 iToF 相机。 iToF 和 LiDAR 都允许您在场景理解阶段为 real-world 个表面创建具有 OcclusionMaterial 的 high-quality 虚拟网格。此网格为 ready-for-measurement 和 ready-for-collision。借助 iToF 和 dToF 传感器,框架可立即检测 non-planar 表面和具有 no-features-at-all 的表面,例如 poorly-lit 房间中的 texture-free 白墙。

如果您实施 iBeacon 工具、ARWorldMaps 和对 GPS 的支持 – 它将帮助您消除随着时间累积的许多跟踪错误。 ARKit 与 Vision 和 CoreML 框架的紧密集成为强大的 AR 工具集做出了巨大贡献。与 Apple Maps 的集成允许 ARKit 目前以尽可能高的精度将 GPS Location Anchors 放在户外。

ARCore 反过来使用地理空间锚,从 Google 地球和街景图像中获取地理数据,这些图像是在 Google Trekker 的帮助下创建的。

Vuforia 的测量精度取决于您开发的平台。 Vuforia 的一些功能构建在跟踪引擎(ARKit 或 ARCore)之上。甚至流行的 Vuforia Chalk 应用程序也使用 ARKit 位置跟踪器。

很好的信息。但是,根据使用 ARCore 和 ARkit 的经验,我想补充几点。在地图方面,与 ARkit 相比,ARCore 具有管理更大地图的能力。与 ARkit 相比,ARcore 跟踪更多的特征点。 另一点是 ARKit 比 ARcore 更好地区分表面的水平和垂直检测。

AR KIT 和 AR CORE,它们是最好的 option.The 库由操作系统(android / Apple 设备)开发社区开发,因此您可以获得最新技术的最新更新设备的进步和支持。

所以如果你打算在 AR 领域工作更长的时间,你需要坚持这两个(只是我的意见)。我在 vuforia 上工作了很长时间。它教会了我 AR 的基础知识并创建了许多不同的应用程序。但在一定程度上它有障碍,对我来说主要的障碍是导致某些限制的价格。其中 ar-foundation / AR core / AR kit 是免费的,更稳定,也有点灵活。比较

您可以探索 AR-FOUNDATION:它是一个很棒的统一包,您只需编写一次代码,它就会使用 ARCORE AND ARKIT

导出到 Android 和 IOS

VUFORIA 的特点:https://library.vuforia.com/getting-started/vuforia-features

AR基础的特点:https://unity.com/unity/features/arfoundation[![Screen shot from ARfoundation website]1]1