云識別(圖像識別)
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打包完成。
至此,云識別(圖像識別)制作完成。