[译] AR SDK的种类比你想得要多!这里介绍七个棒棒哒
作者:Eddie Offermann
原文: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
这些标示物通常是相当简单的具有固定黑白外围边界的图标。这都是既定好的设计而非原本就存在的。
- 2D Barcode Markers
这些标示物在SDK中已预定义好了,并且通常被深度优化以达到在各种光照条件下进行快速识别和稳定跟踪。由于已深度优化,因此可能用来同时识别和跟踪多个目标,并且这些标示物可以在其他Tracker可能探测失效的环境下却对它们有效。这看起来更像是框标或者是低分辨率QR码而不像是其他标示物,因此它们通常在你可能需要更为小心谨慎的地方会比较常见。
一些ARToolkit可能独有的功能
- Multiple camera support
虽然最明显的多摄像头例子可能就是立体摄像头了,但是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可能值得你一看。
(其他,略。开源意味着定制算法,算法乃CV的产品核心,但貌似对average people要求有点儿高,亦是CV的魅力所在)
[译] AR SDK的种类比你想得要多!这里介绍七个棒棒哒的更多相关文章
- [原创] Linux下几种文件传输命令 sz rz sftp scp介绍
Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...
- 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
转载地址:http://blog.csdn.net/truong/article/details/46711045 关键字:Redis的Java客户端Jedis的八种调用方式(事务.管道.分布式…)介 ...
- Vuforia AR SDK入门
Vuforia是一个能让应用拥有视觉的软件平台.开发者借助它可以很轻松地为任何应用添加先进计算机视觉功能,允许你识别图片和物体,或者在真实世界中重建环境内容. 如果你现在正在制作一些可交互的市场活动项 ...
- 国产AR SDK介绍
说到VR,大家都知道虚拟现实有多火.可是VR之后呢,还有AR.相较于VR,AR的应用意义更加的强大. 相信在不久的将来AR和VR将会融为一体,把现实世界的数据信息完全联通在我们的眼前.这其中的领头羊莫 ...
- [译]Python作为一种编程语言有多强大?
Quora上有个问题:Python作为一种编程语言有多强大? 以下是Patrycja Okowicka的回答 说实话,Python是一门强大的语言,几乎所有东西都可以用Python创建!这就是为什么它 ...
- [译]AngularJS中几种Providers(Factory, Service, Provider)的区别
原文: http://blog.xebia.com/2013/09/01/differences-between-providers-in-angularjs/ 什么是Provider? Angula ...
- Android SDK三种更新失败及其解决方法
更新Android SDK,居然失败了三次. 1.第一次失败 出现Failed to fetch URL错误提示 Failed to fetch URL https://dl-ssl.google.c ...
- jdbc接口的一种类比——打酱油
jdbc很简单,这里只是为了方便自己的记忆.模型也许有缺陷,但本质是相同的. jdbc可以屏蔽数据库的底层的不同,让我们有能力用java语言统一访问不同的数据库.就像打酱油一样,可以去超市买,也可以去 ...
- 五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
商业化的软件应该主要选用MIT或者Apache license的开源系统作为插件. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的 ...
随机推荐
- ISP和IAP
ISP(在系统编程)是一种不依赖于单片机自身软件的程序下载方式,特点是不需要从电路板上取下单片机,通过某种方式使单片机进入ISP模式,开放编程接口,由其使用的计算机将新的程序代码写入到存储器内.我们平 ...
- Grunt 入门
转自:http://user.qzone.qq.com/174629171/blog/1404433906 Grunt被定义为:the javascript task runner. 什么算是Java ...
- php+socket模拟表单发送请求
<?php /** * http请求类(php + socket) * @todo 这里还有很多未完善的地方,仅有简单的get post head请求 * @author chuangrain@ ...
- C缺陷与陷阱----读书笔记---第一章
第一章:词法陷阱 编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”.例如,对于语句: if ( x == big ) big = x ; 它的第一个符号是C语言关键字if,紧接着下一 ...
- mysql 数据库 切表的脚本
#!/bin/sh host=$1 port=$2 host=${host:="localhost"} #host没赋值,那么就赋值为localhost port=${port: ...
- ucos任务优先级从64到256,任务就绪表的改变
Ucos在任务调度中经常使用的技术为任务就绪表,在之前的文章中使用的例子是低于64个优先级的任务就绪表查找方法,现在ucos将任务扩展到256优先级之后,任务就绪表的查找也做了一定的修改,今天来讲讲 ...
- 从字符串拼接看JS优化原则
来自知乎的问题:JavaScript 怎样高效拼接字符串? 请把以下用于连接字符串的JavaScript代码修改为更高效的方式: var htmlString ='< div class=”co ...
- IOS开发中如何给UIImageView添加点击事件
1.先创建一个UIImageView控件: photeImageView = [[UIImageView alloc]init]; photeImageView.frame = CGRectMake( ...
- javascript---jquery (1事件)
1.例子说明 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- IO文件
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. Separator: 比如说要在te ...