Vuforia概述



AR(Augmented Reality)增强现实,想必大家都已经很熟悉了。这是当下最热的技术之一,是利用计算机视觉和计算机图像学领域的相关知识将虚拟世界融入到现实生活当中。AR和另外的VR(Virtual Reality,虚拟现实)以及MR(Mix Reality,混合现实)并称能改变未来生活的3R技术,更是被誉为下一代计算平台。去年(2016年)是VR元年,各大科技巨头都纷纷砸重金进入这个领域,Oculus和HTC的VR设备的惊艳亮相,带动了整个VR行业的大热。MR更是黑科技中的战斗机,目前只有微软的Hololens走在最前面。相对于VR和MR,AR的技术要早很多年,其实也已经在现实生活中初见端倪,大家熟悉的直播中常用的虚拟面罩其实就是AR的应用场景之一。世界上第一次将AR运用到现实生活中要追溯到上个世纪90年代,美国空军的Armstrong实验室在1992年研制出了Virtual Fixtures系统,该系统起初是为了增进人类的表现力以及完成一些远程控制任务而设计。但是当时受制于硬件的限制,AR这一技术始终没有被大规模普及开来。近年来随着计算机硬件的惊人进步,特别是微电子领域的高速发展,使得硬件这一壁垒早已被打破,AR技术得以拨开云雨重见天日,并被认为是下一代通用计算平台。

像所有的开发一样,AR也需要有巨头来提供SDK,使得开发者们能够基于底层封装好的模块,快速的开发出一系列AR产品。目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。其中Metaio在2015年5月已被Apple重金收购,之后就没有再对外公开过SDK,经过两年的封闭开发,Apple已经打造出了强大的ARKit,能够基于庞大的iOS和iPad设备生产出各种惊艳的AR产品。Vuforia也在2015年11月被PTC公司重金收购,但是后续一直在更新并提供SDK,因此在ARKit普及之前,Vuforia一直是开发者最青睐的AR SDK,众多的功能以及高质量的识别技术,使得Vuforia早已深入人心。

随着VR/AR/MR的大热,笔者本人也利用Vuforia开发了一系列的AR产品,高品质的识别速度让顾客十分满意,Unity和Vuforia的深入结合也让AR开发变得十分容易上手,并且能够打造出十分惊艳的产品。《Vuforia开发完全指南》这一系列文章,就是笔者借着利用Vuforia开发的一些经验,来将Vuforia开发的流程以及各种功能细节写成教程,希望能够帮助AR开发者们能够快速进入AR的世界。

Vuforia的SDK支持很多平台,包括iOS、Android、UWP,能够适配市面上大部分的移动终端。Vuforia SDK封装了底层用来图像识别的计算机视觉模块,而且不用你操心摄像头的开启以及图像的读取,这些Vuforia都为你提供好了一系列的参数设置,开发者需要做的只是按照需要配置这些参数,然后基于底层的识别算法开发出自己想要的AR程序。

Vuforia主要由三大部分组成:

  • Vuforia引擎。这个引擎是一个静态链接库,作为客户端封装进最终的App中,用来进行最主要的识别功能,支持iOS、Android和UWP,并且根据不同的平台开放出了不同的SDK,可以根据需要从Android Studio、Xcode、Visual Studio以及Unity中任选一种作为开发工具。本系列是以Unity为开发工具,因为Unity本来就是个游戏引擎,对3D模型的导入以及控制非常方便,非常适合开发AR程序;
  • 一系列工具。Vuforia提供了一系列的工具,用来创建对象、管理对象数据库以及管理程序licenses。Target Manager是一个网页程序,开发者在里面创建和管理对象数据库,并且可以生成一系列的识别图像,用在AR设备以及云端上。Licenses Manager用来创建和管理程序licenses,因为每一个AR程序都有一个唯一的licenses。Vuforia Object Scanner是Vuforia近段时间新出的工具,用来进行十分黑科技的功能--实物扫描,但是很遗憾目前只支持某些Android设备。
  • 云识别服务。当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。

根据功能的不同,Vuforia支持很多类型的AR识别类型,主要有以下几种:

  • Image Targets,这是最常用、也是最简单的识别对象,即单一静态的平面图像,比如打印的图片或者产品包装;

  • VuMark,这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息;

  • Multi-Targets,多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面;

  • Cylinder Targets,是形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别;

  • Text Recognization,文字识别,可以识别大约10万个英文单词,对于一些英语教育产品很是实用。但是很遗憾,不支持中文汉字识别,只支持英文;

  • Object Recognization,实物识别,这是Vuforia在今年前不久推出的一种新型识别,识别对象已经从简单的图像中跳出来了,可以基于现实生活中的实物模型进行扫描识别,很是黑科技,这也代表着AR的未来。但是很遗憾目前只支持三星S7等少数Android手机,不过随着技术的进步,不久的未来一定会全平台覆盖;

  • Smart Terrain,这是一项突破性的技术,可以基于用户的真实物理环境重新建造虚拟的3D环境,可以打造出新型种类的游戏以及很真实的视觉效果,这种产品中的元素可以和真实世界中的物理实体以及平面进行互动,非常酷炫,真正做到了虚拟和现实相互融合。

Vuforia的SDK可以是免费的,开发者只需注册一个开发者账号,进入官网下载相关平台的SDK就可以进行开发了。当然,免费有免费的限制,用免费SDK开发的程序,摄像头取景时左下角始终会有Vuforia的水印存在,而且一些高级功能也有数量限制。所以如果你是想开发企业级产品,最好还是花钱去买个licenses吧。但是对于学习Vuforia,免费SDK就够了,功能上没有什么太大的影响。

本系列教程采用的是Unity SDK,基于Vuforia + Unity开发AR产品。众所周知,Unity是目前世界上最流行的游戏引擎,也是开发者用的最多的VR/AR开发工具,你不需要懂得计算机图形学,不需要懂得光照计算,不需要会使用OpenGL,也不用操心模型是怎样导入的等等一系列流程,你需要的只是将模型导入,然后用C#编写控制脚本,根据平台编译生成二进制文件,就OK了。同时Vuforia的Unity SDK十分人性化,有很多的常用设置,你可以根据需要设置相关参数,并且不用操心摄像头取景等问题,Vuforia都为你做好了,你需要做的只是free your imagination。

关于具体的开发流程,本系列教程采用的是最新版的Unity作为开发工具,C#作为开发语言(后期还会用到Objective-C,进行Vuforia和Xcode的结合),Mac系统作为开发环境,Xcode作为程序编译链接工具,iOS作为程序最终生成平台。但是其实也不必太在意操作系统的选择,Windows下的Unity一样可以开发AR程序,只不过笔者选择的运行平台是iOS,Unity生成iOS平台App的流程是Unity先要生成Xcode工程,然后利用Xcode进行编译链接,生成最终的App二进制文件进行安装,因此选择了Mac + Unity + Xcode这样的组合。如果只是想开发Android程序,Windows就够了,因为Unity生成Android程序不需要生成中间的工程,可以直接生成APK包进行安装。

好了,接下来我会首先从最基础的教学,让一个不懂编程的人也能快速开发AR程序,然后逐步将Vuforia的各种AR功能展现出来。相信如果你能学完本教程,关于Vuforia的AR开发,应该可以算得上入门并且比较熟悉了。


Vuforia开发完全指南---Vuforia概述的更多相关文章

  1. Vuforia开发完全指南(四)--- Image Target

    Vuforia开发完全指南---Image Target,简单方便的AR图像识别 概述 在Vuforia提供的SDK中,最简单.也是最常见的AR功能就是Image Target---图像识别.你只需提 ...

  2. Vuforia开发完全指南---不懂编程也能做AR程序

    不懂编程也能做AR程序 可能一听到要做AR程序,很多人都会想到这是程序员的事.如果不懂编程,不会写代码,是做不了AR程序的.其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出 ...

  3. Vuforia开发完全指南---License Manager和Target Manager详解

    License Manager和Target Manager License Manager 对于每一个用Vuforia开发的AR程序来说,都有一个唯一的license key,在Unity中必须首先 ...

  4. HoloLens开发手记 - Vuforia开发概述 Vuforia development overview

    关于Vuforia,开发AR应用的人基本都会熟悉.之前我也写过一篇关于Vuforia开发的博客:Vuforia AR SDK入门 今天这篇博客则主要是谈谈HoloLens使用Vuforia开发混合现实 ...

  5. Chrome 开发工具指南

    Chrome 开发工具指南 谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具.开发者工具允许网页开发者深入浏览器和网页应用程序的内部.该工具可以有效地追踪布局问题,设置 Ja ...

  6. OpenGL ES应用开发实践指南:iOS卷

    <OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...

  7. Visual C++2010开发权威指南 中文高清PDF - VC.NET

    第一部分  Visual C++ 2010开发与新特性第1章  Visual C++ 2010开发环境简介 11.1  Visual C++ 2010简介 11.2  Visual C++ 2010下 ...

  8. libjingle开发人员指南

    libjingle开发人员指南 libjingle SDK包含C + +源代码和文档,使您能够设计连接和网络交换数据的应用程序(通过点对点数据连接).该SDK包含代码和示例应用程序,一个Window平 ...

  9. Office 365 机器人(Bot)开发入门指南 (新篇)

    最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...

随机推荐

  1. C# 6.0 内插字符串 (Interpolated Strings )

    讲Interpolated Strings之前,让我们先看EF Core 2.0 的一个新的特性:String interpolation in FromSql and ExecuteSqlComma ...

  2. Python使用PDFMiner解析PDF

    近期在做爬虫时有时会遇到网站只提供pdf的情况,这样就不能使用scrapy直接抓取页面内容了,只能通过解析PDF的方式处理,目前的解决方案大致只有pyPDF和PDFMiner.因为据说PDFMiner ...

  3. 开心的金明 NOIP 2006 普及组

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就 ...

  4. Mac实用操作技巧(六)

    Night Shift,保护你夜间的眼睛 之前在Mac上有一款很著名的软件叫f.lux,这款软件会根据Mac的时间和地理位置,来自动切换屏幕亮度,如果进入晚上则调成暖色,白天就切换成普通颜色.现在Ma ...

  5. Lua table.sort排序

    在用table.sort 排序的时候注意,如果使用多个条件排序,应在一个排序函数里按照条件优先级进行比较排序. 例如 local t = { {time = , i = }, {time = , i ...

  6. 【Ganglia】集群监控系统搭建

    参考博客 www.cnblogs.com/atomicbomb/p/6726119.html 操作系统 centos7  机器两台 一. 配置软件环境 操作步骤: 使用yum安装方式安装所需基础依赖包 ...

  7. PHP迭代与递归实现无限级分类

    无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...

  8. 转载_2012年的Android之旅:梦想、学习、坚持、自信、淡定

    原文地址:http://blog.csdn.net/luoshengyang/article/details/8452527 2012年的Android之旅:梦想.学习.坚持.自信.淡定.. ---- ...

  9. Linux 命令大全之Red Hat 7常用命令总结二

    Linux 命令大全之RedHat7常用命令笔记... ----------------------------------------------------- 征服Linux从终端开始 ----- ...

  10. 关于操作系统中多个fork()会创建几个进程的理解

    最近在看操作系统的书,在讲到用fork()创建子进程时,有些地方一时迷惑,最终理解,特记录下来.如下: //创建一个子进程:#include "csapp.h" int main( ...