Vuforia开发完全指南---Image Target,简单方便的AR图像识别
2017-10-05 15:23
579 查看
概述
在Vuforia提供的SDK中,最简单、也是最常见的AR功能就是Image Target---图像识别。你只需提供一张可识别的图片,将图片移到设备的摄像头下,设备上就能出现之前已经集成进去的虚拟场景,而且可以根据ARCamera的不同模式,让图片和虚拟场景的叠加现象有所不同。这篇文章详细讲解了Vuforia中基于Image Target的AR产品开发流程,学完之后你就能开发出一个基于图片的AR App。
演示Demo
这是笔者做的一个简单的冰与火之歌的AR Demo,基于Vuforia Image Target。点击观看
视频地址:https://v.qq.com/x/page/k0557z1x02n.html
准备工作
工欲善其事,必先利其器。首先我们要做的是准备好工具,这里采用Unity作为开发工具,演示在iOS设备上,因此还需要Mac系统和Xcode。进行开发的第一步就是要下载Vuforia的SDK,登上Vuforia官网进入开发者平台下载Unity的SDK包,完成之后将package导入到Unity中。然后就要登录License Manager和Target Manager创建App的license,以及上传需要扫描的图片。关于License Manager和Target Manager,已经在之前的教程中详细讲过了,可以参考一下。Vuforia开发完全指南(三)---License Manager和Target Manager详解
首先是在License Manager中创建license key,然后进入Target Manger创建Database,上传需要扫描的图片。这里在点击Add Target之后选择的类型是Device,然后输入相关参数。上传成功后就可以下载图片SDK,导入到Unity中。
功能开发
打开Unity工程,在Project面板中找到Vuforia文件夹,将其Prefabs文件夹中的ARCamera拖到Unity场景中,之后删掉场景中之前默认的Camera。将Prefabs文件夹中的ImageTarget拖到场景中,这个是Vuforia用来专门进行图像识别的工具。
点击场景中的ARCamera,在其选项面板中点击“Open Vuforia configuration”,将之前创建的license key复制到“App License Key”输入框中。然后在下面的Datasets中,勾选住之前创建的database以及其“Activate”选项,将database激活。
点击场景中的ImageTarget,在其选项面板的“Image Target Behaviour”组件中,在Database和Image Target选中对应的名字。
将想要展现的3D模型拖入到场景中,并将其作为ImageTarget的子物体。这样,已经完成了最简单的AR图像识别,如果你现在编译工程在设备上运行,将识别图放到摄像头取景范围内,模型就能出来了,并随着识别图的位置改变而改变。但是如果想要加入更多的交互功能,就要用代码来控制。
点击场景中的ImageTarget,在其属性面板中可以看到已经挂了一个脚本“Default Trackable Event Handler”,在这个脚本里我们就能对AR场景中的物体进行控制,当图片被成功识别时做什么,当图片消失时又会做什么。
在这个脚本中需要关注两个函数:OnTrackingFound()和OnTrackingLost()函数。其中OnTrackingFound会在图片被识别后调用,OnTrackingLost会在被识别的图片从摄像头取景范围内消失后调用。这两个函数的定义如下:
private void OnTrackingFound() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); // Enable rendering: foreach (Renderer component in rendererComponents) { component.enabled = true; } // Enable colliders: foreach (Collider component in colliderComponents) { component.enabled = true; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); } private void OnTrackingLost() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); // Disable rendering: foreach (Renderer component in rendererComponents) { component.enabled = false; } // Disable colliders: foreach (Collider component in colliderComponents) { component.enabled = false; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost"); }
这两个函数的最后都有一行Debug.Log的打印,里面有mTrackableBehaviour.TrackableName这个变量。这个变量就是之前在Target Manager中上传图片后,导入到图片SDK的图片名字。还记得在上传图片时需要输入的那个名字字符串么?mTrackableBehaviour.TrackableName这个变量就和那个名字字符串是一样的,因此我们可以在代码中利用这个变量来判断是哪张图片被识别,继而控制场景中的物体。
在这个例子中,笔者在场景中加了一个红龙Dragon的模型,还加了一个附带几个按钮的Canvas,用来控制这个红龙的动作。在Default Trackable Event Handler脚本中,将Dragon和Canvas声明为public变量,
public GameObject dragon; public GameObject canvas;
将场景中的Dragon和Canvas拖入到脚本中的物体框。然后在OnTrackingFound()函数中添加当图像被识
别后,对Dragon和Canvas的控制代码,这里只是简单的让两者出现,注意这里对图片的名字进行了判断,虽说工程中只有这一张图片,但是当需要识别多张图片时,就必须通过ImageTarget中的图像名称来判断识别出的是哪张图片。
if (mTrackableBehaviour.TrackableName == "Dragon") { dragon.SetActive(true); canvas.SetActive(true); }
同样,在OnTrackingLost()函数中通过对mTrackableBehaviour.TrackableName的判断,来让Dragon和Canvas消失。
if (mTrackableBehaviour.TrackableName == "Dragon") { dragon.SetActive(false); canvas.SetActive(false); }
Canvas中对Dragon控制的按钮脚本代码就不贴出来了,大家可以通过自己的需求加上很多酷炫和实用的功能。
当代码检查无误后,就能编译工程,拷进设备进行AR体验了。大家可以看到使用Vuforia的Image Target功能,无需很复杂的代码就能做出非常酷炫的AR程序。
相关文章推荐
- Vuforia SDK---- AR开发vuforia cylinder Target识别图制作流程
- Vuroria增强现实平台,Unity工具开发——ImageTargetPackage 在识别不同图像的同时,自定义功能
- [AR]ImageTarget(图像识别)
- 更换vuforia中ImageTarget功能的识别目标图像
- HoloLens开发2:Vuforia结合HoloLens开发AR(识别图像)
- boost完全开发指南第2章-处理时间5 (date_time库简单运用)
- 利用Vuforia开发一个AR卡牌对战(一):多图识别+EventHandler框架
- AR图像识别 AR识别图像 AR摄像头识别 外包开发 AR识别应用开发就找北京动点软件
- java图像界面开发简单实例-ImageIO、JFileChooser、JMenu、JPanel的应用
- Vuforia开发高阶四-Multiple Target(立方体识别)
- Unity+Vuforia开发增强现实(AR)教程——识别图的那些坑
- Unity+Vuforia开发增强现实(AR)教程——识别图的那些坑
- Vuforia SDK---- AR开发vuforia 3D识别追踪项目分析分享
- Vuforia SDK---- AR开发vuforia cylinder Target 加多宝项目制作
- 【Vuforia】基于Vuforia增强现实开发(一)之识别图像播放声音
- Vuforia SDK---- AR开发vuforiaARCamera动态修改最大识别量
- 利用Vuforia、Unity 实现AR识别图触发音频播放
- gulp完全开发指南 => 快来换掉你的Grunt吧
- iOS开发-简单获取View截图图像(Quartz2D)
- ERP SYSTEM 开发指南(一)简单模块开发