高通Vuforia(Unity3D)雲識別初級使用教程
最近因項目開發需要,接觸了高通的AR引擎Vuforia雲識別,個人感覺穩定性還是很不錯的,唯一不爽的地方就是免費的雲識別庫每個月只能識別1000次,想繼續使用只能重新再建一個雲識別庫或者拿錢了(苦逼)。。。
正趕上現在有點時間,也把自己這段時間所學到的給大家分享一下,比較小白,打算勿噴(ha ha ha ha ...)
先上傳送門:
高通Vuforia:https://developer.vuforia.com/
下面教程開始:
1、官網注冊登錄並且創建許可證管理器(License Manager)和目標管理器(Target Manager)------步驟略(網上教程一大堆---度娘傳送門)
保存好許可證管理器里的Key值和目標管理器的Client Access Keys
2、之后下載Vuforia的Unity3D版本SDK--------傳送門
導入之后的效果 ↑↑↑↑↑↑
之后把場景內主攝像機刪除,把Assets\Vuforia\Prefabs\ARCamera 預制拖入Hierarchy窗口
然后相同方式拖入CloudRecognition、ImageTarget兩個預制
1、點擊菜單欄Vuforia->configuration 在右側App License Key中填入可證管理器里的Key值
2、點擊Hierarchy窗口中的CloudRecognition,在Inspector面板中填入目標管理器的Client Access Keys
3、點擊Hierarchy窗口中的ImageTarget,在Inspector面板中ImageTargetBehaviour的參數改為
4、模型拖為ImageTarget子物體,更改位置(模型為半成品-演示所用,勿噴)
下面新建腳本,開始碼腳本吧,苦逼。。。
5、任意物體上新建腳本,名稱暫定為:CloudRecoManage,雙擊打開
記得必須要using Vuforia 並且繼承ICloudRecoEventHandler並實現
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 代碼在此 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using UnityEngine; 5 using Vuforia; //添加引用 6 7 public class CloudRecoManage : MonoBehaviour, ICloudRecoEventHandler //繼承接口並實現 8 { 9 //聲明兩個變量 10 private GameObject mImageTarget; //ImageTarget的Object對象 11 private ObjectTracker mObjectTracker; //跟蹤器變量 (個人理解)識別出的物體就靠它才能跟着圖片移動 12 13 //需要保留Start方法 初始化用 14 void Start() 15 { 16 //把這個腳本和CloudRecoBehaviour雲識別進行綁定 --不然腳本怎么知道哪個雲識別模塊給這個腳本提供識別信息呢~ 17 18 //獲取到場景中的雲識別組件 因為我們只有一個雲識別 所以不用擔心沖突 19 CloudRecoBehaviour cloudRecoBehaviour = FindObjectOfType<CloudRecoBehaviour>(); 20 21 //把雲識別和腳本綁定 22 cloudRecoBehaviour.RegisterEventHandler(this); 23 } 24 25 public void OnInitError(TargetFinder.InitState initError) 26 { 27 //初始化錯誤 28 Debug.Log("初始化錯誤:" + initError); 29 } 30 31 public void OnInitialized() 32 { 33 //初始化 34 Debug.Log("初始化開始"); 35 36 //獲取ImageTarget的Object對象 37 mImageTarget = FindObjectOfType<ImageTargetBehaviour>().gameObject; 38 39 //獲取追蹤管理器 40 mObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); 41 } 42 43 public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) 44 { 45 //搜索到新的目標 46 Debug.Log("搜索到目標:" + targetSearchResult.TargetName); 47 if (targetSearchResult.TargetSize <= 1) //判斷targetSearchResult是否符合要求 48 return; 49 //搜索到新的目標關閉ClearTrackables 50 mObjectTracker.TargetFinder.ClearTrackables(false); 51 52 //啟動追蹤 很簡單 兩個參數1、識別到的目標 2、生成的物體 兩個同步運動 53 mObjectTracker.TargetFinder.EnableTracking(targetSearchResult, mImageTarget); 54 } 55 56 public void OnStateChanged(bool scanning) 57 { 58 //雲識別狀態改變 59 Debug.Log("雲識別狀態:" + scanning); 60 //雲識別開啟時關閉ClearTrackables 61 if (scanning) 62 mObjectTracker.TargetFinder.ClearTrackables(false); 63 } 64 65 public void OnUpdateError(TargetFinder.UpdateState updateError) 66 { 67 //雲識別錯誤 68 Debug.Log("雲識別錯誤:" + updateError); 69 70 } 71 }
接下來點擊運行(截圖壓縮了,有點不清楚)
終於寫完了,全原創,歡迎交流QQ:1107628852(加備注)