云识别(图像识别)
Note
支持:Android / iOS / Windows
OSX平台注意:VOIDAR_Unity_v1.0_Beta4暂时不支持OSX平台运行,打包iOS正常
一、简介
云识别(图像识别)是将识别数据(识别图和显示资源)存放在云服务器上,在云端运行识别算法,实现进行精准识别及跟踪的AR效果。
二、阅读指南
本教程主要介绍如何在Unity环境下进行操作。
默认读者您拥有一定的软件使用、应用开发经验。
教程中只会对Unity的基础使用进行简要说明,有关Unity使用的更多信息,请访问Unity官网查看。
三、搭建环境
在进行具体操作前,您需要安装下列软件,准备如下环境:
操作系统
- Windows 7 或更高版本
- OS X 10.10 或更高版本
Unity版本支持
Unity 3D版本 | 太虚AR SDK功能 |
---|---|
5.6.x | 全部支持 |
2017.x | 全部支持 |
2018.x | 全部支持 |
2019.1.x | 全部支持 |
2019.2.0 | 全部支持 |
Note
本教程中使用的Unity版本为:Unity 2017.4.13
Unity 3D下载地址:https://unity3d.com/cn/get-unity/download/archive
四、实现流程
第一步、注册并登录云平台
先打开云平台网址,注册账号并登录
。网站地址:https://cloud.voidar.net
第二步、创建开发者云数据库
进入云平台,新注册用户需要先创建数据库,创建开发者自己的识别库以后,才能管理识别资源。
点击[ 创建数据库 ]
,每个账号只允许创建1个数据库。
弹出界面填写数据库名称
(支持中文),本教程中将数据库名称定为“VOID SLAM”,填写完成后点击[ 保存 ]
。
完成后,即可获得“Accsess Key
”和“Secret Key
”,这两个Key,在下文Unity中设置属性时会用到。
第三步、管理云资源数据
点击云数据库列表中的名称“VOID SLAM
”,进入云资源管理界面。
新注册用户没有数据。点击[ 上传图片 ]
按钮可以添加数据。
添加新资源窗口如下:
1 云资源名称
(必填,支持中文)
2 自定义数据
(针对云视频播放,本教程跳过)
3 上传识别图片
,仅支持jpg格式
4 选择assetbundle所属的平台
(ios / android/ windows / mac)
5 上传对应平台的assetbundle文件
Note
先在本地实现图像识别,进行调试后,再将识别资源上传云平台。
下文以“图像识别(单目标)”为内容,创建本地识别。如果您已经熟悉该内容,请直接从“实现流程中的第十二步”开始查看。
第四步、新建Unity工程
打开Unity,新建一个工程。填写Project name为“VOID CLOUD
”、选择保存的位置,点击[ Create project ]
。
第五步、导入太虚AR SDK
选中[ Assets ] -> [ Import Package ] -> [ Custom Package... ],导入太虚AR SDK。
选择下载好的SDK文件(.unitypackage),点击[ 打开 ]
按钮。
弹出界面,点击[ Import ]
,导入过程需要耐心等待一段时间。
如果弹出“API Update Required”界面,请点击[ I Made a Backup, Go Ahead! ]
。
第六步、删除Main Camera
Note
Unity3D打开时默认是新的Scene,新的Scene自带一个Main Camera和Directional Light对象,我们需要用SDK的ARCamera,故将默认的Camera删除。
右键选中场景中自带的“Main Camera
”,点击[ Delete ]
删除。
第七步、拖入预制件“ARCamera”、“ImageTarget”
展开[ Assets ] -> [ VoidAR ] -> [ Prefabs ]目录,
将预制件“
ARCamera
”和“ImageTarget
”分别拖至场景中。
操作成功后显示如下。
第八步、设置ARCamera
选中ARCamera,查看右侧的“Inspector
”栏,设置“Void AR Behaviour (Script)”组件属性。
设置MarkerType
= "Image",代表识别类型为图像设置Simultaneous Tracking
= "1",代表同时跟踪的识别Marker数量为1个
第九步、设置识别图(Marker)
选中ImageTarget,查看右侧的“Inspector
”栏,设置“Image Target Behaviour (Script)”组件属性。
设置Image File Path = "Panda.jpg"
,填写时需要包括“文件名”+“后缀jpg”
Warning
Marker图片文件,必须放在[ Assets ] -> [ StreamingAssets ]文件夹内,本教程使用的是SDK的内置图片。
第十步、设置模型
Note
识别后显示的模型,需要放在ImageTarget下。
右键选中场景中的“ImageTarget
”,添加一个3D模型“Cube
”。
选中“Cube
”,调整模型的位置和大小。
第十一步、进行调试
Warning
确保您的PC已经连接了摄像头。
点击[ 运行 ]
按钮。
识别成功,完成调试。
第十二步、设置云识别参数
选中ARCamera,查看右侧的“Inspector
”栏,设置“Void AR Behaviour (Script)”组件属性。
再次选中“ARCamera”,点击[ Add Compoent ]
,添加“Cloud Controller”脚本
。
脚本绑定成功后,显示如下。
第十三步、生成Assetbundle
Important
在本地单目标识别调试完成的前提下,利用Unity3D的AssetBundle功能,将本地识别资源ImageTarget打包,生成AssetBundle文件,上传至太虚AR提供的云平台,即可实现云识别功能。
首先,需要将ImageTarget生成Prefab。
选中[ Assets ]
目录。
Hierarchy下方选中“ImageTarget
”,将其拖入Assets文件夹中。
选中刚生成的“ImageTarget.prefab
”,点击[ VoidAR ] -> [ AssetBundleBuilder ]
。
Note
不同平台的AsssetsBundle包不一致。
先勾选[ Windows ]
,然后点击[ BuildAssetBundles ]
。
生成过程需要一定时间,请耐心等待。
生成完成后,请关闭该界面。
将在StreamingAssets下生成“Assetbundle资源
”,每个平台对应一个同名的子文件夹,如下图:
第十四步、上传云识别资源
返回第三步的“上传图片
”界面,设置并上传相关资源。
设置图片名称
= "Panda"上传图片资源
设置assetbundle的平台
= “windows”(第十七步中,将在windows系统下实现云识别)上传assetbundle文件
其中,"图片资源"和"assetbundle文件"的路径,可以在Unity中选中相关资源,右键点击,选择[ show in Explorer ]
查看。查找Windows的assetbundle文件路径,如下所示:
上传完成后,点击[ 保存 ]
按钮。
上传完成,云资源库中新添加了一条记录,“识别评分”项值越高,识别图品质越好。此外,添加了资源的平台名称被点亮
。
第十五步、删除ImageTarget
Important
因为已将ImageTarget生成的“assetbundle”上传至云平台,所以在Unity工程文件中删掉ImageTarget。
第十六步、保存场景
选中[ File] -> [ Save Scenes ]
,进行场景保存。
设置文件名为“VOID CLOUD
”,点击[ 保存 ]
按钮。
第十七步、Windows系统实现云识别
Warning
确保您的PC已经连接了摄像头。
点击[ 运行 ]
按钮。
舞台上出现模型,Hierarchy中出现“ImageTarget(Clone)
”,即识别成功。
第十八步、打包发布
打包流程分为“Android
”、“iOS
”、“Windows exe
”。
Android
打包Android,需要将Unity切换至Android平台,点击[ File ] -> [ Build Settings... ]
。
选中Android标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity Android Support
,请点击右侧的[ Open Download Page ]
按钮,下载并安装。
点击[ Switch Platform ]
按钮,完成Android平台的切换。
切换完成后,先关闭Build Settings界面,继续搭建打包环境。
选中[ Edit ] -> [ Preferences... ]
,设置参数。
弹出界面选中“External Tools
”选项,设置Android SDK和JDK。
Note
如果本地没有SDK和JDK,可以点击后方的[ Download ]
,在弹出的网页上进行下载即可。
也可以用链接下载安装:
SDK
(要科学上网才能打开):https://developer.android.com/studio/index.html
JDK
:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装完成后,设置好SDK和JDK的路径就可以了。
生成Android平台的Assetbundle
接着,需要生成Android平台的Assetbundle。选中[ Assets ] 目录
,选中刚生成的“ImageTarget.prefab”,点击[ VoidAR ] -> [ AssetBundleBuilder ]
。
勾选[ Android ],然后点击[ BuildAssetBundles ]
。
生成过程需要一定时间,请耐心等待。
生成完成后,请关闭该界面。
返回云识别后台,设置并上传相关资源。
针对“Panda”识别图进行操作,点击[ 修改 ]
按钮。
弹出如下界面。
设置assetbundle的平台
= “android”上传assetbundle文件
"assetbundle文件"的路径,可以在Unity中选中相关资源,右键点击,选择[ show in Explorer ]
查看。
查找Android的assetbundle文件路径,如下所示:
上传完成后,点击[ 保存 ]
按钮。
上传完成,添加了资源的“Android平台名称
”被点亮。
返回Unity,选中ARCamera,查看右侧的“Inspector
”栏,设置“Void AR Behaviour (Script)”组件属性。
设置Camera
= "后置摄像头"
选中[ File ] -> [ Build Settings... ]
,取消默认场景前方的勾选。然后点击[ Add Open Scenes ]
,添加当前的场景。
添加完成后,如下所示。
设置属性参数
点击[ Player Settings... ]
按钮,查看右侧的“Inspector
”栏,设置属性参数,您可以自定义。
设置Company
= "VOIDAR"设置Product Name
= "VOID CLOUD"设置Bundle Identifier
= "com.VOIDAR.CLOUD"(不能使用默认值,否则无法打包)-
Important
取消“Multithreaded Rendering”的勾选!
完成设置后,点击[ Build ]
按钮。
设置文件名为“VOID CLOUD
”,点击[ 保存 ]
按钮,开始打包。
打包过程需要耐心等待一段时间。
完成后,将生成一个“VOID CLOUD.apk
”文件,安卓打包完成。
iOS
iOS打包需要在Mac OS系统中完成,需要准备Mac设备(如MacBook Pro、MacBook、iMac、Mac mini等)。
在Unity中,将开发平台切换至iOS,然后Build生成Xcode工程。
Warning
推荐使用Mac设备的Unity软件来生成Xcode工程。如果之前是在Windows环境下编辑的,可以将Unity工程输出成unitypackage,或拷贝至Mac电脑中进行编辑处理。
启动Unity,打开
之前保存的、或者拷贝过来的VOID CLOUD工程文件
(工程已经打开的,跳过这步)
点击[ Open ]
按钮打开工程。
将Unity切换至iOS平台,点击[ File ] -> [ Build Settings... ]
。
选中iOS标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity iOS Support
,请点击右侧的[ Open Download Page ]
按钮,下载并安装。
点击[ Switch Platform ]
按钮,完成iOS平台的切换。
切换完成后,点击[ Player Settings... ]
按钮。
Important
取消“Multithreaded Rendering”的勾选!
Important
取消“Strip Engine Code”的勾选!
生成iOS平台的Assetbundle
关闭Build Settings界面,接着需要生成iOS平台的Assetbundle。
选中[ Assets ] 目录
,选中刚生成的“ImageTarget.prefab”,点击[ VoidAR ] -> [ AssetBundleBuilder ]
。
勾选[ iOS ],然后点击[ BuildAssetBundles ]
。
生成过程需要一定时间,请耐心等待。
生成完成后,请关闭该界面。
返回云识别后台,设置并上传相关资源。
针对“Panda”识别图进行操作,点击[ 修改 ]
按钮。
弹出如下界面。
设置assetbundle的平台
= “ios”上传assetbundle文件
"assetbundle文件"的路径,可以在Unity中选中相关资源,右键点击,选择[ Reveal in Finder ]
查看。
查找ios的assetbundle文件路径,如下所示:
上传完成后,点击[ 保存 ]
按钮。
上传完成,添加了资源的“iOS平台名称
”被点亮。
返回Unity,选中ARCamera,查看右侧的“Inspector
”栏,设置“Void AR Behaviour (Script)”组件属性。
设置Camera
= "后置摄像头"
选中[ File ] -> [ Build Settings... ]
,取消默认场景前方的勾选。然后点击[ Add Open Scenes ]
,添加当前的场景。
添加完成后,如下所示。
完成设置后,点击[ Build ]
按钮。
准备生成Xcode工程,命名为“Output
”,点击[ Save ]
。
打开
生成的Xcode文件。
设置属性参数
填写配置,将自己的证书、iOS适应版本都正确选上:
左侧点击[ Unity-iPhone ]
,配置参数,您可以自定义。
设置Display Name
= "VOIDAR_Test"设置Bundle Identifier
= "com.VOIDAR.Demo"设置Version
= "1.0"设置Build
= “1.0”设置Team
= “您自己的证书”设置Deployment Target
= “8.1”
添加Accelerate.framework
General页面往下拉,在Linked Frameworks and Libraries中,点击“+
”。
弹出界面,选中“Accelerate.framework”,点击[ Add ]
。
添加完成,Linked Frameworks and Libraries下方出现“Accelerate.framework”。
添加摄像机权限
选中“Info”标签,点击Supported interface orientations后面的“+”。在弹出列表中选中“Privacy - Camera Usage Description
”。
设置Enable Bitcode = “No”
选中”Build Settings”标签,设置Enable Bitcode = “No
”。
打包取消armv7
选中“Build Settings”标签,展开Architectures,选择 “Other...
”。
弹出界面,选中“armv7”后点击“-
”。
取消后显示如下即可。
数据线连接iphone或者ipad,点击[ 运行 ]
,即可打包。
完成后,iphone或者ipad上,将生成一个“VOIDAR_Test
”的APP,iOS打包完成。
Windows exe
打包Windows exe,需要将Unity切换至PC平台,点击[ File ] -> [ Build Settings... ]
。
选中PC标签,点击[ Switch Platform ]
按钮,完成PC平台的切换。
Important
设置Architecture
= "x86_64"
Warning
确保您的PC已经连接了摄像头。
选中ARCamera,查看右侧的“Inspector
”栏,设置“Void AR Behaviour (Script)”组件属性,选择对应的摄像头
。
选中[ File ] -> [ Build Settings... ]
,取消默认场景前方的勾选。然后点击[ Add Open Scenes ]
,添加当前的场景。
添加完成后,如下所示。
设置属性参数
点击[ Player Settings... ]
按钮,查看右侧的“Inspector
”栏,设置属性参数,您可以自定义。
完成设置后,点击[ Build ]
按钮。
设置文件名为“VOID CLOUD
”,点击[ 保存 ]
按钮,开始打包。
Important
文件名不能含有“中文”,否则exe运行时会报错。
打包过程需要耐心等待一段时间。
完成后,将生成“VOID CLOUD.exe
”文件,Windows exe打包完成。
至此,云识别(图像识别)制作完成。