热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

目录📢本节的目标🟥动态识别的实现方法📢本节的目标本章目标为不设置ImageTarget,Unity完成动态识别识

在这里插入图片描述

目录

📢 本节的目标

🟥 动态识别的实现方法



📢 本节的目标

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


🟥 动态识别的实现方法

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

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

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

using System.Collections.Generic;
using UnityEngine;
using Vuforia;public class TargetCreator : MonoBehaviour
{//每张识别图对应现实的3D物体public GameObject[] targetPrefabs;public void ConfigTrackable(string targetKey){if (targetPrefabs == null && targetKey == null) return;//获取场景中所有的识别图 //GetTrackableBehaviours:Returns all currently instantiated TrackableBehaviours except WordsIEnumerable trackables = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours();foreach (TrackableBehaviour behaviour in trackables){if (behaviour.TrackableName == targetKey){behaviour.gameObject.name = "ImageTarget"; //修改NewGameObject名称为ImageTargetbehaviour.gameObject.AddComponent(); //添加事件处理脚本behaviour.gameObject.AddComponent(); //添加禁用渲染工具脚本foreach (GameObject prefab in targetPrefabs){if (prefab.name.Equals(targetKey)){GameObject obj = GameObject.Instantiate(prefab);obj.transform.parent = behaviour.transform;return;}}}}}}

代码解析:

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方法

using UnityEngine;
using UnityEngine.UI;public class Skode_Identification : MonoBehaviour {public Text inputText;public void Skode_Iden(){GetComponent().ConfigTrackable(inputText.text);}
}

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

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

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

大家还有什么问题,欢迎在下方留言!


 

在这里插入图片描述


如果你有 技术的问题  项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡


推荐阅读
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 图片复制到服务器 方向变了_双服务器热备更新配置文件步骤问题及解决方法
    本文介绍了在将图片复制到服务器并进行方向变换的过程中,双服务器热备更新配置文件所出现的问题及解决方法。通过停止所有服务、更新配置、重启服务等操作,可以避免数据中断和操作不规范导致的问题。同时还提到了注意事项,如Avimet版本的差异以及配置文件和批处理文件的存放路径等。通过严格执行切换步骤,可以成功进行更新操作。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
author-avatar
独行小刀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有