• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Vuforia⭐二、动态修改识别目标和3D物体

武飞扬头像
小小姑娘很大
帮助1

目录

📢 本节的目标

🟥 动态识别的实现方法


📢 本节的目标

本章目标为不设置ImageTarget,Unity完成动态识别识别图。

🟥 动态识别的实现方法

1、Vuforia官网上传识别目标,下载unitypackage并导入Unity

2、导入Vuforia SDK,并将ARCamera放置到场景,激活要识别的Datasets。由于激活了Datasets,这时,尽管没有放置ImageTarget,运行游戏,仍可看到Vuforia自动创建了多个带有ImageTargetBehaviour的New Game Object

学新通

3、创建空物体TargetManager,添加TargetCreator脚本,代码如下

  1.  
    using System.Collections.Generic;
  2.  
    using UnityEngine;
  3.  
    using Vuforia;
  4.  
     
  5.  
    public class TargetCreator : MonoBehaviour
  6.  
    {
  7.  
    //每张识别图对应现实的3D物体
  8.  
    public GameObject[] targetPrefabs;
  9.  
     
  10.  
    public void ConfigTrackable(string targetKey)
  11.  
    {
  12.  
    if (targetPrefabs == null && targetKey == null) return;
  13.  
     
  14.  
    //获取场景中所有的识别图
  15.  
    //GetTrackableBehaviours:Returns all currently instantiated TrackableBehaviours except Words
  16.  
    IEnumerable<TrackableBehaviour> trackables = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours();
  17.  
    foreach (TrackableBehaviour behaviour in trackables)
  18.  
    {
  19.  
    if (behaviour.TrackableName == targetKey)
  20.  
    {
  21.  
    behaviour.gameObject.name = "ImageTarget"; //修改NewGameObject名称为ImageTarget
  22.  
    behaviour.gameObject.AddComponent<DefaultTrackableEventHandler>(); //添加事件处理脚本
  23.  
    behaviour.gameObject.AddComponent<TurnOffBehaviour>(); //添加禁用渲染工具脚本
  24.  
     
  25.  
    foreach (GameObject prefab in targetPrefabs)
  26.  
    {
  27.  
    if (prefab.name.Equals(targetKey))
  28.  
    {
  29.  
    GameObject obj = GameObject.Instantiate(prefab);
  30.  
    obj.transform.parent = behaviour.transform;
  31.  
    return;
  32.  
    }
  33.  
    }
  34.  
    }
  35.  
    }
  36.  
    }
  37.  
     
  38.  
    }
学新通

代码解析:

1)、由behaviour.TrackableName == targetKey可以看出,我们在调用ConfigTrackable(string targetKey)方法时,要传入的是识别图的名称

2)、由prefab.name.Equals(targetKey)可以看出,我们预制体的名称,要=Vuforia上传的识别图的名称

4、创建Button和InputField,如下图所示

学新通

5、创建脚本Skode_Identification,挂载到TargetManager,代码如下。将输入框的text赋值到inputText,Button绑定Skode_Iden方法

  1.  
    using UnityEngine;
  2.  
    using UnityEngine.UI;
  3.  
     
  4.  
    public class Skode_Identification : MonoBehaviour {
  5.  
     
  6.  
    public Text inputText;
  7.  
    public void Skode_Iden()
  8.  
    {
  9.  
    GetComponent<TargetCreator>().ConfigTrackable(inputText.text);
  10.  
    }
  11.  
    }

6、测试(在PC端进行,要有摄像头)

运行游戏,输入某识别图的名称,点击Button,将摄像头对准要识别的图片

在Hierarchy面板找到显示出来的模型,此时该模型比例或许不是预期想要的大小,调整模型位置角度等,记下其Transform各数据,进行下一步的Vuforia DefaultTrackableEventHandler—OnTrackingFound等功能修改,接下来步骤由玩家根据自己要求自行修改

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgffjeh
系列文章
更多 icon
同类精品
更多 icon
继续加载