iOS AR框架:选择哪一个?

图片
长期以来,许多开发人员一直在其应用程序中使用AR。 第三方解决方案(例如OpenCV或Wikitude)对此有很好的帮助。 随着iOS 11的发布,程序员可以访问ARKit系统框架。 让我们看看这些库有多好,以及下一个增强现实项目应使用哪个库。

ARKit


ARKit的无疑优势包括其本机性。 集成和配置仅需几分钟。 Xcode会为您完成一半的必要操作,然后框架“就可以正常工作”。 组织ARKit与其他系统框架(SpriteKit,SceneKit,Metal,CoreLocation等)之间的交互非常容易。

该库经过了优化,可以最大程度地利用最新iPhone和iPad型号的硬件功能。 大量计算在后台进行,几乎对UX没有影响。 我对框架识别平面和标记的准确性感到满意。 光线不足或设备的突然移动都不会对此造成干扰。 由于构成了ARKit的基础的VIO(视觉惯性里程表)和IMU(惯性测量单元)的互补技术,苹果公司设法将计算误差降到最低。

当然,并非没有缺点。 首先,ARKit仅在装有iOS 11+的设备上可用,仅在iPhone 6s和更低版本的iPad Pro(9.7、10.5或12.9)上受支持。 不幸的是,这可能疏远那些害怕失去部分目标受众的客户。

ARKit的设计方式是不断校准有关周围世界的物体和设备在其中的位置的信息。 因此,在会话开始时,虽然数据不够准确,但会产生工作“不稳定”的感觉,这将无法消除。 此外,如果会话时间足够长,则会话似乎很小,传感器指示器中的错误将累积并变得更加明显。

识别图像时,AR对象的位置会出现问题,该对象会浮起,并且无法清晰地固定在指定的位置。 在Apple发布示例中观察到了类似的行为。 但是,放置在空间中给定点的对象实际上不会移动。

在某些情况下(质量不太好的黑白小图像),可以识别标记,但是系统会错误地确定其坐标。 结果,AR对象被绘制在错误的位置。

ARKit非常易于学习,要开始使用,您需要最少的知识。 大量的培训文章和代码示例已经发布在Web上,并且社区庞大且响应迅速,因此在编写代码过程中找到问题的答案并不难。

Opencv的


用C ++编写的OpenCV库是免费分发的,使您有机会从官方网站下载iOS SDK或自行编译。

在引入粉丝的阶段,Swift正在等待一个有趣的任务,以消除可能会延长几个小时的编译错误。 幸运的是,已经克服了棘手的框架(例如, 带有Swift的OpenCV-分步指南 )的同志在网上发布了分步说明。

最终设法通过连接的库启动项目后,将出现问题,下一步该做什么。 也许您决定在官方网站上搜索教程。 在这里,iOS开发人员将等着三个例子,在专注于iOS 8的项目中使用框架的旧版本。有关使用OpenCV进行移动开发的最新文章并不多。 显然,这是由于每个想要掌握该库的人都已经很久了而不再需要解释。

但是,毫无疑问,初学者仍然有机会掌握此功能强大的工具。 但是,这将花费大量时间和精力。 像任何其他低级库一样,OpenCV需要深入的研究,对文档的详细分析,筛选论坛上成千上万的讨论,以寻找问题的答案和无休止的实验。

顺便说一句,不要忘了增加一些时间来恢复内存中的数学大学课程,因为OpenCV不会为您显示公式。

唯识


首先,Wikitude是有偿的, 绝不便宜的框架。 免费版本包含水印,因此您不能将其用于发行版本。

尽管如此,图书馆还是值得的。 与ARKit不同,它甚至支持更旧的设备和系统版本。 该产品文档齐全,有许多文章,课程和代码示例,因此对于没有准备的程序员而言,最简单的任务的集成和实现只需几个小时。

该库的主要范围是标记识别。 作为后者,可以使用没有alpha通道的任何图像。 是的,Wikitude仅适用于本机格式。 标记图像必须以.wtc格式打包,必须将3D模型转换为.wt3文件。 公平地说,应该注意的是Wikitude在其网站上提供了转换工具。

通常,框架可以很好地完成其任务:识别标记,将AR对象放置在您计划的位置,更改视角或移动相机时不要游泳。 发布图片,视频或3D模型并不困难,并且可以确保它们的交互性。 支持同时使用多个标记,但是在配置库类时,最好限制它们的数量以提高性能。

但是,我注意到在恶劣的照明条件下以及设备移动不准确时,即使使用了高质量的源图像来创建标记,也存在识别标记的问题。

Wikitude支持JS和SDK的本机版本。

如果您选择JS版本进行集成,请准备好拒绝亲爱的方便的Swift或Objective-C,而专注于编写JavaScript代码。 而且由于后者在Xcode中工作时非常痛苦,因此请同时安装Sublime或其替代产品之一。 尝试立即编写,因为调试和修复错误的过程并不容易。

另一点涉及优化。 当与JS AR对象进行任何时间长度的交互时,框架的版本开始显着降低速度,而fps会消耗很多,但这并不奇怪。

SDK的本机版本具有所有友好功能,几乎没有“魔力”。 实际上,它仅通知您该标记已被识别,报告其标识符和空间坐标,然后将标记传递给您。 然后,您可以自由使用自己喜欢的工具(例如OpenGL)绘制AR对象。

结论


因此,如果您是决定尝试使用增强现实技术的初学者,那么这完全取决于您的客户及其需求。 如果客户不后悔在高质量的付费框架上花费几千欧元,并且您不担心JavaScript或OpenGL,请选择Wikitude。 否则,从ARKit开始。 借助众多示例和社区支持,您可以快速实现简单的任务并“探究”该技术。 然后,当您开始了解什么是什么,并对其有所适应时,就有可能冲入低级OpenCV并征服以前无法访问的峰。

Source: https://habr.com/ru/post/zh-CN413401/


All Articles