高通Vuforia(Unity3D)雲識別初級使用教程


高通Vuforia(Unity3D)雲識別初級使用教程

   最近因項目開發需要,接觸了高通的AR引擎Vuforia雲識別,個人感覺穩定性還是很不錯的,唯一不爽的地方就是免費的雲識別庫每個月只能識別1000次,想繼續使用只能重新再建一個雲識別庫或者拿錢了(苦逼)。。。

  正趕上現在有點時間,也把自己這段時間所學到的給大家分享一下,比較小白,打算勿噴(ha ha ha ha ...)

先上傳送門:

  高通Vuforiahttps://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 }
CloudRecoManage

 接下來點擊運行(截圖壓縮了,有點不清楚)

 

終於寫完了,全原創,歡迎交流QQ:1107628852(加備注)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM