首页 > 代码库 > 高通Vuforia(Unity3D)云识别初级使用教程

高通Vuforia(Unity3D)云识别初级使用教程

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

 接下来点击运行(截图压缩了,有点不清楚)

技术分享技术分享

 

终于写完了,全原创,欢迎交流QQ:1107628852(加备注)

 

高通Vuforia(Unity3D)云识别初级使用教程