Vuforia⭐二、动态修改识别目标和3D物体
目录
📢 本节的目标
本章目标为不设置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 Words
-
IEnumerable<TrackableBehaviour> trackables = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours();
-
foreach (TrackableBehaviour behaviour in trackables)
-
{
-
if (behaviour.TrackableName == targetKey)
-
{
-
behaviour.gameObject.name = "ImageTarget"; //修改NewGameObject名称为ImageTarget
-
behaviour.gameObject.AddComponent<DefaultTrackableEventHandler>(); //添加事件处理脚本
-
behaviour.gameObject.AddComponent<TurnOffBehaviour>(); //添加禁用渲染工具脚本
-
-
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<TargetCreator>().ConfigTrackable(inputText.text);
-
}
-
}
6、测试(在PC端进行,要有摄像头)
运行游戏,输入某识别图的名称,点击Button,将摄像头对准要识别的图片
在Hierarchy面板找到显示出来的模型,此时该模型比例或许不是预期想要的大小,调整模型位置角度等,记下其Transform各数据,进行下一步的Vuforia DefaultTrackableEventHandler—OnTrackingFound等功能修改,接下来步骤由玩家根据自己要求自行修改
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgffjeh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01