原文:There are dozens more Augmented Reality SDKs than you think! Here are seven great ones.
目前只对开源免费的ARToolkit感兴趣,故只译到ARToolkit介绍。水平有限,看官自便。其他请见原文。
AR SDK的种类比你想得要多!这里介绍七个棒棒哒
大多数探索AR世界的开发者对他们接触的第一款SDK会恋恋不舍
这很容易理解,因为多数开发者使用的第一款SDK往往是知名中的一个。例如过去出名的Metaio,我不认为有其他单个方案能与其功能相提并论,因此当Apple于去年把它收购并独享后,这成了一件令业内不安的事情。虽然很多开发者转向Vuforia,还有后来的其他SDK,但是包括商业和开源在内的许多AR SDK仍旧是可用的,并且不被熟知。
我们所说的增强现实(Augented Reality)到底是什么?
尽管我倾向于在别处使用"延展现实"("Extended Reality")来指代由“增强现实”,“混合现实”和”虚拟现实”的相关概念和学科构成的这个融合概念,但这里将抛开这些。为方便讨论,此文中的“增强现实”将泛指:通过各种数字技术手段,将图形、图像以及其他数据范畴的内容导入真实世界,典型的方式便是跟踪现实世界中的某个物体或是图像特征,或者更一般的情况是,显示在现实世界中。虽然我可以理解一些人更愿意使用比“增强现实”更为严谨的定义来区别于“混合现实”,但是我选择接受这样一个事实,那就是目前“增强现实”已经完全成为最为常用的概念,甚至在那些技术上被视为“混合现实”的地方。应该注意的是,以下将要介绍的SDK、产品和服务中没有一个自称为“混合现实”,即使我认为它们更符合这个概念。
为何我们关注Unity兼容的SDK
一个原因是,我了解将近50个不同版本用于开发增强现实应用的SDK。对整个AR软件开发状况写一个全方位的综述显然不可行。那将成为一本厚重的科技书,而非一篇文章。同时我也排除了那些需要非常特定硬件环境的开发环境。因此,我们不探讨Hololens(除非在其他SDK上谈到对它的支持),Tango,RealSense以及Kinect这些依赖硬件的SDK。
所以,在此我们将侧重于那些提供原生Unity支持并且在标准硬件上运行的SDK。毫无疑问:当前Unity平台是开发AR应用的获胜者。它在VR领域同样举足轻重,由于广泛的原生支持,它被很多AR以及VR的生产商所接受。当微软开始描绘开发者该如何使用Hololens开发应用时,显然在那时,他们唯一能使进展如愿的方式便是支持Unity。当谷歌发布他们的Cardboard SDK时,提供了对Unity的支持。当他们发布Tangle SDK时,他们提供了Unity开发包。对于因特尔的RealSense,则直接支持Unity环境。对于开发者而言,当然还有其他选择,但几乎都要求这些不同版本的SDK为其他交互引擎提供各自的支持。
如此一来,那些直接支持Unity的AR SDK如今成为商业开发者最为感兴趣的平台。而且我还发现,这类SDK比大多数有追求的开发者们意识到的还要更多一些。(同样,也有非常多的其他种类不支持原生Unity的SDK,我将在文章的结尾部分简要介绍,因此,你若愿意自行提供对Unity的支持,或者打算在非现实领域或网站上使用,我将在文章结尾处提供一些链接和表述)。大多数情况下,这些SDK提供C#接口。在个别例子中也可能提供对JavaScript的支持。
让我们现在开始!
1. 来自DAQRI的ARToolkit SDK
DAQRI是增强现实领域沉睡的巨人(详见LinkedIn)。因还未发布的DAQRI智能头盔,以及并购的许多令人惊奇的未来科技,包括思想解读头巾、全息头盔等技术而已名声在外,相比于技术公司,它几乎更像是一个资金充足的智库。它在2015年获取了ARToolworks并一直维护着,并将ARToolkit SDK迅速地发布为全开源项目,之前仅对其高级版本("pro" version)可用的所有功能全都开放给了开源社区。
DAQRI智能头盔
特别有趣的是,ARToolkit最早开发于1999年,比第一款开发版的商业AR头盔早了15年。ARToolkit起初由NAIST(Nara Institute of Science and Technology,或许是日本最为著名的研究生研究性大学)的Hirokazu Kato研发,之后由University of Washington著名的HIT Lab发布。如果你对“人类交互科技"还不熟悉(以及它的经常被联系在一起的“姐妹实验室”,Human Photonics Lab),他们确是过去20年间“加强与混合现实”领域较为有影响力的学术机构。负责在Virtual Retinal Display technology中所有关键技术部分(据说是Magic Leap的神奇头戴式设备的潜在技术)以研究“共享视觉空间”。搞“延展现实”的话,几乎不可能不看这个研究机构发表的优秀文章。
对DAQRIdI在ARToolkit开源发布表示感谢,以下将要介绍的全部功能在所有平台下都是免费使用的。
ARToolkit支持三种一般类型的跟踪技术。
- Natural Feature Tracking (NFT)
NFT是一种跟踪技术的经典标准 - 支持任何形式的2d图像,这些图像可以没有清晰一致的外延轮廓。包括杯垫子,路边指示牌等。
- Traditional template square marker
这些标示物通常是相当简单的具有固定黑白外围边界的图标。这都是既定好的设计而非原本就存在的。
这些标示物在SDK中已预定义好了,并且通常被深度优化以达到在各种光照条件下进行快速识别和稳定跟踪。由于已深度优化,因此可能用来同时识别和跟踪多个目标,并且这些标示物可以在其他Tracker可能探测失效的环境下却对它们有效。这看起来更像是框标或者是低分辨率QR码而不像是其他标示物,因此它们通常在你可能需要更为小心谨慎的地方会比较常见。
一些ARToolkit可能独有的功能
虽然最明显的多摄像头例子可能就是立体摄像头了,但是ARToolkit并不局限如此。其他配置的多摄像头同样能够支持。重叠部分的存在,例如在立体摄像头中的处理方式,极大地提供了摄像头阵列对动作识别的鲁棒性。
- One of comparatively few SDKs that supports Windows Phone
由于竞争对手的架构,Windows Phone未获得AR开发社区的太多青睐,但ARToolkit提供支持。
- Very robust tracking for markers over a range of distances
为Natural Feature Tracking训练ARToolkit,在变化的距离范围内能够识别特征,较少SDK能做到如此。到一定距离图片会变得模糊,距离太近往往又没有实践意义。反之亦是如此,在一定距离可跟踪的特征变为你可以处理的独特的更小的特征整列。ARToolkit是其成为可能
- JavaScript-based version for integration into web frameworks
当我看到此时,我仍然感到惊讶,甚至这相当罕见。ARToolkit有一个JavaScrpt的搭档,叫做JSARToolKit。不要混淆了,另外也有一个叫作JSARToolKit的JavaScript AR SDK,所以要确定你看得是本文中的这个,而不是另外的那个。(之后我们将谈论第二个)
特别致谢
感谢ARToolkit SDK的开源(根据LGPLv3发布),目前它是我知道的仅有的支持Unreal Engine的AR库,这由它的一个使用者贡献。所以,如果你决定死心塌地在AR做Unreal部分,DAQRI‘s ARToolkit可能值得你一看。
ARTOOLKIT SDK下载
(其他,略。开源意味着定制算法,算法乃CV的产品核心,但貌似对average people要求有点儿高,亦是CV的魅力所在)