Vuforia开发完全指南---Vuforia概述
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概述的更多相关文章
- Vuforia开发完全指南(四)--- Image Target
Vuforia开发完全指南---Image Target,简单方便的AR图像识别 概述 在Vuforia提供的SDK中,最简单.也是最常见的AR功能就是Image Target---图像识别.你只需提 ...
- Vuforia开发完全指南---不懂编程也能做AR程序
不懂编程也能做AR程序 可能一听到要做AR程序,很多人都会想到这是程序员的事.如果不懂编程,不会写代码,是做不了AR程序的.其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出 ...
- Vuforia开发完全指南---License Manager和Target Manager详解
License Manager和Target Manager License Manager 对于每一个用Vuforia开发的AR程序来说,都有一个唯一的license key,在Unity中必须首先 ...
- HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
关于Vuforia,开发AR应用的人基本都会熟悉.之前我也写过一篇关于Vuforia开发的博客:Vuforia AR SDK入门 今天这篇博客则主要是谈谈HoloLens使用Vuforia开发混合现实 ...
- Chrome 开发工具指南
Chrome 开发工具指南 谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具.开发者工具允许网页开发者深入浏览器和网页应用程序的内部.该工具可以有效地追踪布局问题,设置 Ja ...
- OpenGL ES应用开发实践指南:iOS卷
<OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...
- Visual C++2010开发权威指南 中文高清PDF - VC.NET
第一部分 Visual C++ 2010开发与新特性第1章 Visual C++ 2010开发环境简介 11.1 Visual C++ 2010简介 11.2 Visual C++ 2010下 ...
- libjingle开发人员指南
libjingle开发人员指南 libjingle SDK包含C + +源代码和文档,使您能够设计连接和网络交换数据的应用程序(通过点对点数据连接).该SDK包含代码和示例应用程序,一个Window平 ...
- Office 365 机器人(Bot)开发入门指南 (新篇)
最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...
随机推荐
- Linux 日常常用指令
最近搞了一个阿里ECS,CentOS7,涉及到一些基本的Linux指令,在这里总结一下,在搭环境中常用的一些指令,熟悉这些指令就基本能够使用CentOS进行日常操作了. 更多的可以参考系统自带的 “ ...
- MySQL 6.0安装图解
MySQL 6.0安装图解 由于免费,MySQL数据库在项目中用的越来越广泛,而且它的安全性能也特别高,不亚于oracle这样的大型数据库软件.可以简单的说,在一些中小型的项目中,使用MySQL ,P ...
- [ZYNQ-7]PS处理PL外部中断的简单实例的剖析 (参考米联miz702n)
Zynq的ARM通过GIC中断控制器来接收核仲裁所有的中断.由于中断向量表只有4Bytes大小,仅仅正好存放一条跳转语句,因此当产生一个外部中断时,中断处理的大致过程:PC内容保存到LR_IRQ用于中 ...
- shiro
1 权限管理 1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己 ...
- Linux改变语言设置的命令
--Linux语言设置--------------2013/09/22Linux中语言的设置和本地化设置真是一个很繁琐的事情,时不时的会出现乱码的情况,在这篇文章中讨论的是shell中出现乱码的一些解 ...
- CTF中图片隐藏文件分离方法总结
0x00 前言 在安全的大趋势下,信息安全越来越来受到国家和企业的重视,所以CTF比赛场次越来越多,而且比赛形式也不断的创新,题目也更加新颖有趣,对选手的综合信息安全能力有一个较好的考验,当然更好的是 ...
- html canvas-nest.js 源码
// canvas_width || r.x canvas_height || r.y = e.max / 2 && (r.x -= 0.03 * x_dist, r.y -= 0.0 ...
- Java并发基础——Thread
并发编程可以使我们将程序划分为多个分离的,独立运行的任务.通过多线程机制,这些独立任务都将由执行线程来驱动.在使用线程时,CPU将轮流给每个任务分配占用时间,每个任务都觉得自己在占用CPU,但实际上C ...
- ajax提交汉字到后台保存时乱码问题!
前端(转换): var param = XXXXXXXXXXXXXXXXXX; param = decodeURIComponent(param,true); param = encodeURI(pa ...
- Django编写RESTful API(五):添加超链接提高模型间的关联性
前言 在第四篇中,加入了用户模型,以及相关的认证和权限的功能.但是我们在使用的时候,会发现在访问http://127.0.0.1:8000/users/时看到的用户列表,不能够直接点击某个链接然后查看 ...