高通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(加备注)