不懂编程也能做AR程序

可能一听到要做AR程序,很多人都会想到这是程序员的事。如果不懂编程,不会写代码,是做不了AR程序的。其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出简单的AR程序。只要按着这篇教程一步一步来,你就能做出一个简单的识图AR App。

在开始做AR App之前,你需要准备好制作工具,磨刀不误砍柴工嘛。由于本篇教程是生成在iOS平台,所以选择的操作系统是Mac OS,然后需要下载Unity和Xcode。如果你是想做Android程序,在Windows上用Unity可以直接生成APK包。做一个简单的识图AR需要的大致步骤分为这样几步:

  1. 登录Vuforia官网,注册开发者账号
  2. 在Vuforia的开发者平台中,创建AR App的license Key
  3. 在对象数据库中上传你需要识别的图像,下载图片SDk
  4. 下载Vuforia的Unity SDK,将Unity SDK导入到Unity中
  5. 将图片SDK导入Unity中,拖入Vuforia预设体,导入模型,进行一系列参数设置
  6. 用Unity生成Xcode工程,再用Xcode编译链接,在iOS设备上运行;或者在Windows平台上,直接用Unity生成APK包。

在这里,我采用的图片是这张Unity社区中很有名的Unity Chan,



然后人物模型也是采用Unity Chan,可以在Unity的Asset Store下载,地址是https://www.assetstore.unity3d.com/en/#!/content/18705。下载后将模型的Unity Package导入到Unity中。

可以看到这些步骤不需要你写一行代码,就是一些简单的拖拽和点击。在设备上运行的时候,App会自动打开你的摄像头,然后将摄像头对着之前已经打印好的识别图像,你的摄像头取景屏幕上就会出现Unity Chan模型和打印图像相互叠加的AR景象。好了,下面我就一步一步进行讲解,带着你不写一行代码做出神奇的AR App。

注册开发者账号

在使用任何Vuforia SDK之前,你首先要做的是注册Vuforia开发者账号,有了账号之后你才能有对象数据库、才能下载SDK。进入Vuforia官网(https://www.vuforia.com),点击顶部的“Dev Portal”,进入开发者平台,



进入之后点击右上角的Register进行账号注册,

创建App license,创建对象数据库

注册好开发者账号之后,在开发者界面中点击“Develop”,



之后会进入开发者界面,会有两个主要的选项:

  • License Manager:这是App的License管理界面,因为Vuforia对每个App都会有一个唯一的License Key,在Unity的设置中需要输入这个长串的Key,才能开启Vuforia的识别功能。点击“Get Development Key”获取免费的开发license,用免费的key的话程序左下方会一直有Vuforia的水印,而且一些功能会有些限制,但是用来学习足够了;

  • Target Manager:这是对象数据库管理界面,每个数据库中可以上传需要识别的图片。点击“Add Database”,会弹出一个界面,输入这个数据库的名字和类型。数据库类型一共有三种:Device(设备识别),Cloud(云端识别),VuMark(条形码)。这里我们将数据库名字取为“AR_Test”,类型选择“Device”;

上传识别图像,下载图像SDK

点击创建好的数据库,进入之后点击“Add Target”添加图片对象,



之后会弹出图片上传界面,上传需要进行扫描识别的图片

  • Type:这里选择Single Image,因为只是一个简单的图片识别;
  • File:中从电脑本地中选择识别图片,这里选择之前的Unity Chan图片;
  • Width:输入识别图片的宽度。这个是为了建立Unity场景中的单位长度,场景中所有其他物体的大小是以这个值为参照建立的。Vuforia中的单位长度是以米来计算。输入之后,图片的高度会以这个宽度来自动计算。这个值可以是任意的,但是最好比Camera的Near Clip值要大,不然在镜头靠近时你可能会看不到相关内容。这里输入为1;
  • Name:识别图的名字。这个很重要,每张识别图对象都有一个唯一的名字,而且Vuforia可以同时识别多张不同的图片,因此如果以后要用代码来控制选择是哪个对象的话,就是用这个名字来查找是哪张识别图,所以最好取一个能方便认识的名字。这里就输入”Unity_Chan“。

全部信息填完之后,点击”Add“就能将识别图上传到对象数据库,之后就能在对象管理界面中看到已经上传成功的识别图,这里要注意的是”Rating“的星星数量,这个是对图像识别度的评级,满分是5颗星,一般来说最低要有3颗星才能被准确识别。所以上传图片的时候Rating要保证在3颗星以上。然后勾选住最左边的checkbox,点击上方的”Download Database“按钮,在弹出的界面中选择Unity Editor,下载图片的Unity Package。双击这个Package将图片SDK导入到Unity中。将对象数据库导入到Unity中需要注意的是,一定要保证Editor/Vuforia/ImageTargetTextures中的文件被拷贝进Unity中,这是后面将要导入到Unity中ImageTarget的纹理。

下载Vuforia Unity SDK,进行工程设置

之后就需要下载Vuforia的Unity SDK,在开发者平台的Download界面下载最新的Unity SDK,这里最新的版本号是6-2-10。下载完成之后,双击SDK的Package,将Vuforia SDK导入到Unity中。导入之后会在Unity的Project面板中出现Vuforia的相关文件夹,如下图所示,这其中也包含了之前导入的图片SDK相关文件:

  • Editor:包含了在Unity编辑器中与对象进行互动控制的脚本;
  • Plugins:包含了Java和iOS的原生库,用来将Vuforia集成到Android和iOS平台上;
  • Vuforia:包含了用来实现增强现实功能的预设体和代码脚本;
  • StreamingAssets:包含了之前从Target Manager中下载的关于对象数据库的XML配置文件和DAT文件。

打开其中的Prefabs文件夹,将ARCamera预设体拖入到Unity场景中,并且将场景中之前默认的Main Camera删除掉。ARCamera负责渲染摄像头的取景,以及追踪识别图像对象。然后将Prefabs文件夹中的ImageTarget预设体也拖入到Unity场景中,ImageTarget就是专门用于图像识别之用的。

之后就进行以下步骤的设置:

  1. 选中被拖入场景中的ARCamera,在其属性面板中点击”Open Vuforia Configuration“,进行Vuforia的设置:

    • 在“App License Key”中,将之前申请的App license复制到输入框中

    • 在Datasets中将之前导入的识别图片对象勾选上。其他设置采用默认参数(我将会在下一篇教程中详细讲解这些另外参数的作用,这里先一笔带过);

  2. 然后选中场景中的ImageTarget,在其属性面板中将“Database”和“Image Target”分别选为之前设置好的数据库和图片对象,注意这里的“Image Target”中显示的是之前在上传图片时填入的识别图片的名字,Unity中就是靠这个名字来区分单个图片对象的。原先场景中的ImageTarget是个灰色的平面,这是识别图片对象的占位符,当你在这里勾选上相应的图片对象之后,这个占位符会选择StreamingAssets文件夹中相应的datasets,这样这个ImageTarget就会按照datasets中图片的大小和形状来作为其纹理。其他设置采用默认参数。

  3. 将之前下载好的Unity Chan的模型拖入到场景中,作为ImageTarget的子物体,调整模型的position和scale,使其能和ImageTarget的大小很相配,看起来Unity Chan仿佛站在图片上一样。

  4. 现在工程设置就已经全部完成了,到目前为止没有写一行代码。现在你可以在Unity中直接点击Play运行测试,Vuforia会自动调用电脑的摄像头。如果摄像头没有调用,在ARCamera的属性面板中,WebCam选项中选择对应的摄像头,需要注意的是不要勾选Disable Vuforia Play Mode,这样会禁止在Unity Editor中进行测试。



    然后将之前打印好的识别图像移动到摄像头前,神奇的事情发生了,Unity Chan就赫然站在识别图上了,而且会随着识别图方位的改变而转动。这时你会惊叹,做AR就是这么简单!

将AR搬上手机

但是你也不能抱着一个电脑笔记本给别人演示AR程序吧。接下来我们就将已经制作好的AR程序搬运到移动设备上去,这里采用的设备是iPhone手机。点击Unity主目录中的File--Build Settings,将当前的Unity场景添加到“Scenes In Build”中,然后“Platform”中选择iOS,再点击Build And Run,会生成Xcode工程。



连上iPhone,编译链接,将程序拷到手机中。之后,拿着你的手机向你的家人朋友炫耀吧,看,这是我做的神奇AR App!

到这里,你应该学会了不写一行代码就能做出AR程序,也知道AR是个什么概念了。但这只是一个简单的Demo,虽说没有写一行代码就做出来了,但是你也看出功能太简单了点。如果想要做出更加酷炫的AR程序,还是要会一些编程(用Unity开发的话主要是c#)。同时,AR也是要看展示效果的,因此模型方面也要精美。所以说AR程序是个需要精湛技术的艺术品。发挥你的工匠精神吧!

下面这段视频是笔者加了一些控制代码的效果,点击按钮可以与模型进行简单的互动。



视频地址:http://v.youku.com/v_show/id_XMzAzNjg1OTY2MA==.html?spm=a2h3j.8428770.3416059.1

Vuforia开发完全指南---不懂编程也能做AR程序的更多相关文章

  1. Vuforia开发完全指南---Vuforia概述

    Vuforia概述 AR(Augmented Reality)增强现实,想必大家都已经很熟悉了.这是当下最热的技术之一,是利用计算机视觉和计算机图像学领域的相关知识将虚拟世界融入到现实生活当中.AR和 ...

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

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

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

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

  4. HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)

    HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...

  5. Chrome 开发工具指南

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

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

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

  7. 推荐一本书:清华出版的《Modbus软件开发实战指南》

    前言: 最近在研究Modbus开发,如果只是简单的了解了一些modbus基础知识,但是不够系统和全面. 其实,modbus虽然比较简单,但是如果不注意有很多坑,特别是寄存器的位数,大小端处理,浮点数, ...

  8. 用Netty开发中间件:网络编程基础

    用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对<Netty权威指南(第二版)&g ...

  9. mxGraph进阶(一)mxGraph教程-开发入门指南

    mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...

随机推荐

  1. logify与theos的二三事

    最近逆向一个软件,无奈类名.方法名混淆的太厉害,class-dump后,很难猜出大致是哪个方法在起作用.用reveal 和 cycript 找到了viewcontrol 类,但类方法太多,还是不能确定 ...

  2. BotVS开发基础—2.7 指标MA

    代码 #计算一小时 MA5均线 # 时间 2017-06-29 00:00:00 -2017-06-30 00:00:00 1小时 实盘级Tick # 平台 OCKCoin BTC def main( ...

  3. Jquery笔记之第一天

    1.使用Jquery 方法一:下载JQuery 方法二:使用CDN内容分发网络 常用的国内CDN: 百度:<script src="https://apps.bdimg.com/lib ...

  4. 深入剖析C++多态、VPTR指针、虚函数表

    在讲多态之前,我们先来说说关于多态的一个基石------类型兼容性原则. 一.背景知识 1.类型兼容性原则 类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代.通过公有继承,派 ...

  5. 使用Groovy处理SoapUI中Json response

    最近工作中,处理最多的就是xml和json类型response,在SoapUI中request里面直接添加assertion处理json response的话,可以采用以下方式: import gro ...

  6. 我理解的Java中重载与重写

    程序中我们用方法来实现对对象的操作,但是对象可能有不同的数据类型,这时候对不同的数据类型,进行相同的操作,我们就可以用到方法的重载,即方法名相同,但是具有不同的参数列表. 方法的重载可以根据传递参数的 ...

  7. Web.py 框架学习笔记 - URL处理

    最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...

  8. 递归的二叉查找树Java实现

    package practice; public class TestMain { public static void main(String[] args) { int[] ao = {50,18 ...

  9. 搭建DNS服务

    author:JevonWei 版权声明:原创作品 修改/var/named/下的数据库文件的数据时,需手动修改serial序列号 UDP协议53端口用于用户DNS查询,TCP协议53端口用于主从DN ...

  10. 使用反射+策略模式代替项目中大量的switch case判断

    我这里的业务场景是根据消息类型将离线消息存入mongoDB不同的collection中.其中就涉及到大量的分支判断,为了增强代码的可读性和可维护性,对之前的代码进行了重构. 先对比一下使用反射+策略模 ...