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

时间:2023-03-08 23:32:36
高通Vuforia(Unity3D)云识别初级使用教程

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

   最近因项目开发需要,接触了高通的AR引擎Vuforia云识别,个人感觉稳定性还是很不错的,唯一不爽的地方就是免费的云识别库每个月只能识别1000次,想继续使用只能重新再建一个云识别库或者拿钱了(苦逼)。。。

  正赶上现在有点时间,也把自己这段时间所学到的给大家分享一下,比较小白,打算勿喷(ha ha ha ha ...)

先上传送门:

  高通Vuforiahttps://developer.vuforia.com/

下面教程开始:

  1、官网注册登录并且创建许可证管理器(License Manager)和目标管理器(Target Manager)------步骤略(网上教程一大堆---度娘传送门

      保存好许可证管理器里的Key值和目标管理器的Client Access Keys

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

   2、之后下载Vuforia的Unity3D版本SDK--------传送门

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

  导入之后的效果  ↑↑↑↑↑↑

  之后把场景内主摄像机删除,把Assets\Vuforia\Prefabs\ARCamera  预制拖入Hierarchy窗口

  然后相同方式拖入CloudRecognition、ImageTarget两个预制

  1、点击菜单栏Vuforia->configuration  在右侧App License Key中填入可证管理器里的Key值

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

  

  2、点击Hierarchy窗口中的CloudRecognition,在Inspector面板中填入目标管理器的Client Access Keys

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

  3、点击Hierarchy窗口中的ImageTarget,在Inspector面板中ImageTargetBehaviour的参数改为

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

  4、模型拖为ImageTarget子物体,更改位置(模型为半成品-演示所用,勿喷)

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

下面新建脚本,开始码脚本吧,苦逼。。。

  5、任意物体上新建脚本,名称暂定为:CloudRecoManage,双击打开

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

  记得必须要using Vuforia    并且继承ICloudRecoEventHandler并实现

   ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 代码在此 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

 using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia; //添加引用 public class CloudRecoManage : MonoBehaviour, ICloudRecoEventHandler //继承接口并实现
{
//声明两个变量
private GameObject mImageTarget; //ImageTarget的Object对象
private ObjectTracker mObjectTracker; //跟踪器变量 (个人理解)识别出的物体就靠它才能跟着图片移动 //需要保留Start方法 初始化用
void Start()
{
//把这个脚本和CloudRecoBehaviour云识别进行绑定 --不然脚本怎么知道哪个云识别模块给这个脚本提供识别信息呢~ //获取到场景中的云识别组件 因为我们只有一个云识别 所以不用担心冲突
CloudRecoBehaviour cloudRecoBehaviour = FindObjectOfType<CloudRecoBehaviour>(); //把云识别和脚本绑定
cloudRecoBehaviour.RegisterEventHandler(this);
} public void OnInitError(TargetFinder.InitState initError)
{
//初始化错误
Debug.Log("初始化错误:" + initError);
} public void OnInitialized()
{
//初始化
Debug.Log("初始化开始"); //获取ImageTarget的Object对象
mImageTarget = FindObjectOfType<ImageTargetBehaviour>().gameObject; //获取追踪管理器
mObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
} public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
//搜索到新的目标
Debug.Log("搜索到目标:" + targetSearchResult.TargetName);
if (targetSearchResult.TargetSize <= ) //判断targetSearchResult是否符合要求
return;
//搜索到新的目标关闭ClearTrackables
mObjectTracker.TargetFinder.ClearTrackables(false); //启动追踪 很简单 两个参数1、识别到的目标 2、生成的物体 两个同步运动
mObjectTracker.TargetFinder.EnableTracking(targetSearchResult, mImageTarget);
} public void OnStateChanged(bool scanning)
{
//云识别状态改变
Debug.Log("云识别状态:" + scanning);
//云识别开启时关闭ClearTrackables
if (scanning)
mObjectTracker.TargetFinder.ClearTrackables(false);
} public void OnUpdateError(TargetFinder.UpdateState updateError)
{
//云识别错误
Debug.Log("云识别错误:" + updateError); }
}

CloudRecoManage

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

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

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