高通Vuforia(Unity3D)云识别初级使用教程
最近因项目开发需要,接触了高通的AR引擎Vuforia云识别,个人感觉稳定性还是很不错的,唯一不爽的地方就是免费的云识别库每个月只能识别1000次,想继续使用只能重新再建一个云识别库或者拿钱了(苦逼)。。。
正赶上现在有点时间,也把自己这段时间所学到的给大家分享一下,比较小白,打算勿喷(ha ha ha ha ...)
先上传送门:
高通Vuforia:
下面教程开始:
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并实现
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 代码在此 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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();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 ().gameObject;38 39 //获取追踪管理器40 mObjectTracker = TrackerManager.Instance.GetTracker ();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 //搜索到新的目标关闭ClearTrackables50 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 //云识别开启时关闭ClearTrackables61 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(加备注)