当前位置: 首页 > 知识库问答 >
问题:

与ARCore和ARKIT相比,Vuforia有什么局限性吗?

澹台承载
2023-03-14

共有1个答案

韦星文
2023-03-14

更新:2021年6月21日。

Google Arcore允许您为Android和iOS构建应用程序。使用Apple ARKit,您可以为iOS构建应用程序;与Apple RealityKit-适用于iOS和macOS。还有一个伟大的旧的PTC Vuforia被设计用来为Android、iOS和通用Windows平台创建应用程序。

Vuforia的一个重要特点是,如果运行的硬件支持ARCore/ARkit技术,则使用ARkit技术;否则,Vuforia使用自己的AR技术和引擎,称为Software solution,没有依赖的硬件

ARCore基于三个主要的基本概念:运动跟踪环境理解光线估计。ARCore允许支持的移动设备使用称为并发里程计和映射的特殊技术,在6个自由度(6DOF)中跟踪其相对于世界的位置和方向。COM帮助我们检测水平,垂直和角度跟踪表面的大小和位置。运动跟踪工作稳健,这要归功于来自RGB相机60 fps的光学数据,结合来自陀螺仪和加速度计1000 fps的惯性数据,以及来自ToF传感器60 fps的数据。当然,ARKit、Vuforia和其他AR库的操作方式几乎相同。

下表给出了原始深度API和全深度API之间的差异:

|------------|--------------------|--------------------|
|            |  "Raw Depth API"   |  "Full Depth API"  |
|------------|--------------------|--------------------|
|  Accuracy  |       Awesome      |         Bad        |
|------------|--------------------|--------------------|
|  Coverage  |   Not all pixels   |     All pixels     |
|------------|--------------------|--------------------|
|  Distance  |    0.5 to 5.0 m    |     0 to 8.0 m     |
|------------|--------------------|--------------------|

ARCore比ARKit更老。你还记得2014年发布的《探戈计划》吗?粗略地说,ARCore只是一个重写的Tango SDK。但对FlyBy和MetaIO的明智收购不仅帮助苹果迎头赶上,而且大幅超越。假设这对AR行业有好处。

ARCore的最新版本支持OpenGL ES加速,并与Unity、Unreal和Web应用程序集成。目前,Android平台上最强大、最节能的AR体验芯片组是骁龙888(5nm)、Exynos2100(5nm)和麒麟9000(5nm)--现在谷歌和华为几乎又成了朋友。

ARCore价格:免费。

|------------------------------|------------------------------|
|        "ARCore PROs"         |        "ARCore CONs"         | 
|------------------------------|------------------------------|
| iToF and Depth API support   | No Body Tracking support     |
|------------------------------|------------------------------|
| 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   |
|------------------------------|------------------------------|
| A lot of supported devices   | Poor Google Glass API        |
|------------------------------|------------------------------|

以下是用Kotlin编写的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()
}

ARKit有一些有用的方法来进行稳健的跟踪和精确的测量。在它的武库中,您可以找到用于保存和检索ARWorldMaps的易于使用的功能。世界地图是持久和多用户AR体验不可或缺的“门户”,允许您在应用程序停用前回到充满相同选择的3D内容的相同环境。同时支持前端后端相机捕获,支持协作会话,这使得我们可以共享世界地图,也很棒。

对于游戏玩家来说,有一个好消息:多亏了MultipeerConnectivity框架,多达6个人可以同时玩同一个AR游戏。对于3D几何图形,您可以使用一种全新的USDZ文件格式,由Pixar开发和支持。USDZ是一个很好的选择复杂的3D模型与许多PBR着色器和动画。此外,您还可以为ARKit使用以下3D格式。

ARKit不仅可以帮助您在6自由度中跟踪设备相对于世界的位置和方向,还可以帮助您执行人和物体遮挡技术(基于alpha和深度通道的分割)、激光雷达场景重建身体运动捕捉跟踪垂直和水平面检测图像检测3D物体检测3D物体扫描。有了人和物体遮挡工具,你的AR内容可以逼真地在现实世界实体的后面和前面传递,使AR体验更加身临其境。此外,真实感反射,使用机器学习算法基于人脸的AR体验,允许一次跟踪多达3张脸。

使用ARKit和iBeacons,您可以帮助识别iBeacon的应用程序知道它在哪个房间,并显示为该房间选择的正确的3D内容。在使用ARKit时,您应该像在ARCore中使用它一样,深入地利用ARAnchor类及其所有子类。

特别要注意RealityKit的卫星-Reality Composer应用程序,它现在是Xcode的一部分。这个全新的应用程序帮助你为AR构建3D场景。场景建立在现实作曲家可以包装与动态,简单的动画和PBR着色器。Reality Composer可以作为一个独立的应用程序安装在iOS和iPadOS上。

要创建基于ARKit 4.0最新版本的AR应用程序,包括全新的激光雷达扫描仪支持,你需要macOS 11 Big Sur、Xcode 12和运行iOS 14的设备。一个可悲的消息是,ARKit4.0的所有顶级功能都仅限于搭载苹果A12芯片组及更高版本的设备。此外,ARKit4.0是一个值得与金属框架相结合的GPU加速候选。不要忘记ARKit与统一和虚幻紧密地结合在一起。目前,最强大和节能的AR体验芯片组是A14仿生(5nm)。

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
}
|------------------------------|------------------------------|
|       "RealityKit PROs"      |      "RealityKit CONs"       | 
|------------------------------|------------------------------|
| Can create AR apps w/o ARKit | Intensive usage of CPU/GPU   |
|------------------------------|------------------------------|
| Very little 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生态系统的一个更重要的部分是现实转换器应用程序。现在,不使用命令行转换工具,您可以使用现实转换器。这个全新的应用程序使您可以轻松地在Mac上转换、查看和定制.usdz3D对象。只需拖放常见的3D文件格式,如.obj.gltf.usdz,即可查看转换后的.usdz结果,使用您自己的纹理自定义材质属性并编辑文件元数据。您甚至可以通过内置的基于图像的照明(IBL)选项,在各种照明和环境条件下预览.usdz对象。

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等开发环境一起使用。它支持广泛的智能手机、平板电脑和AR智能眼镜,如HoloLens、Magic Leap、Vuzix M400和ODG R7。

    null

Vuforia引擎区域目标使开发人员能够使用整个空间,无论是工厂楼层还是零售店,作为AR目标。使用第一个支持的设备Matterport Pro2摄像机,开发人员可以创建所需位置的详细3D扫描。位置建议在室内,主要是静态的,不超过1,000平方米(约10,000平方米)。一旦扫描产生一个3D模型,它可以转换成一个区域目标与Vuforia区域目标生成器。然后这个目标可以被带入统一。

Vuforia API允许静态自适应模式。当真实世界的模型像大型工业机器一样保持静止时,实现staticAPI将使用更少的处理能力。这为这些模型提供了更持久和更高性能的体验。对于不稳定的对象,AdaptiveAPI允许持续的健壮体验。

外部摄像头特性是Vuforia引擎驱动程序框架的一部分。外部摄像头为增强现实提供了一个新的视角。它允许Vuforia引擎访问手机和平板电脑中配备的摄像头之外的外部视频源。通过使用独立摄像头,开发人员可以创建一个AR体验,提供玩具、机器人或工业工具的第一人称视角。

遮挡管理是构建现实AR体验的关键特性之一。当你使用遮挡管理时,Vuforia引擎可以检测和跟踪目标,即使它们部分隐藏在日常屏障后面,比如你的手。特殊的遮挡处理允许应用程序显示图形,就像它们出现在物理对象内部一样。

Vuforia支持iOS设备的金属加速。此外,您还可以在您的项目中使用Vuforia示例。例如:Vuforia Core Samples库包括使用Vuforia特性的各种场景,包括一个预先配置的对象识别场景,您可以将其用作对象识别应用程序的参考和起点。

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定价选项:

>

  • 免费许可-您只需注册一个免费开发许可密钥

    基本执照(42美元/月,每年计费)-学生

    |------------------------------|------------------------------|
    |       "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      |
    |------------------------------|------------------------------|
    


    结论:

  •  类似资料:
    • 本文向大家介绍财务比率的重要性和局限性是什么?,包括了财务比率的重要性和局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 财务比率的重要性如下- 通过分析和检查以前的结果,比率分析可以在不同项目之间进行关联。 比率分析可用于准备预算,制定政策以及计划未来。 比率分析表明公司是否正在改善。 比率分析充当效率的评估者。 可以进行公司间比较。 讲述短期流动性头寸。 长期偿付能力可以衡量。 借助比率

    • 本文向大家介绍JSON.stringify有什么局限性和哪些技巧?相关面试题,主要包含被问及JSON.stringify有什么局限性和哪些技巧?时的应答技巧和注意事项,需要的朋友参考一下 会忽略,,,不能正确处理,,循环引用。

    • 我想在xamarin中实现增强现实。现有的例子很少。 我想把兴趣点(POI)放在相机视图上。 我无法在xamarin中找到任何用于ARCore和ARKit的样本,但在本地绝对是可能的。所以我可以假设在xamarin中也有可能吗?我只想检查功能的可行性。 所有功能都封装在Xamarin的ARCore和ARKit库中。Android和xamarin。网间网操作系统? 我在本机android和IOS中发

    • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 对我来说,英特尔语法更容易阅读。如果我只关注Intel语法来遍历汇编林,我会错过任何事情吗?我有什么理由要切换到AT&T(除了能够读取其他人的AT&T程序集之外

    • 本文向大家介绍MySQL ENUM的局限性是什么?,包括了MySQL ENUM的局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 以下是MySQL ENUM的限制- 枚举值不能是表达式 我们甚至不能将表达式用作枚举成员,即使将其计算为字符串值也是如此。 示例 例如,我们甚至可以使用CONCAT函数来导致字符串的求值。 以下查询将不起作用- 无法将用户变量用作枚举成员 另一个限制是我们不能将用

    • 问题内容: 每个案例都有不同的用例吗?什么时候应在makeStyles上使用withStyles? 问题答案: 所述钩API()只能与功能的部件使用。 的高次成分API()可与类组件或功能的部件使用。 它们都提供相同的功能,并没有在无差异的参数和。 如果您将其与功能组件一起使用,则建议您使用Hook API()。与(并在内部委托)相比,有一点额外的开销。 如果您要自定义Material- UI组件