UNITY中如何在AR项目中动态的给ImageTag添加对象

2024-12-04上海AR开发专家

  • 此篇教程教导我们如何在AR场景运行时实例化ImageTag下面的子对象,来进行目标检测。
    如果你是初学者请跟着我的一下的步骤来操作:
    1.打开Unity,并且创建一个基本的AR场景。(关于构建AR基本的场景,网上有大把的教程,这里就不累赘了)
    2.假设我们要在运行时,才去创建一个ImageTag的自对象用来进行目标检测,那么首先,确保ImageTage底下没有自对象。
    3.我们先去创建一个Prefab,作为后面运行时动态加载的临时对象,以演示给大家。
    4.那么下来创建一个加载的脚本。此处为C#脚本。(脚本如下:)
    using UnityEngine;
    using System.Collections;
    using
    Vuforia
    ;      //此处必须引入高通的Vuforia命名空间
    public class MyPrefabInstantiator : MonoBehaviour, ITrackableEventHandler    //使用ITrackableEventHandler接口,此接口是个跟踪事件。在AR场景一运行的时候调用
    {
        private TrackableBehaviour mTrackableBehaviour;     //用来获取ImageTarget的信息
        public Transform myModelPrefab;                    //这个就是你要去操作的对象(也就是你想动态实例化的那个物品)
        // Use this for initialization
        void Start()
        {
            mTrackableBehaviour = GetComponent();
            if (mTrackableBehaviour)
            {
                mTrackableBehaviour.RegisterTrackableEventHandler(this);   
                //如果找到TrackableBehaviour这个脚本,则把这个对象注册为他的目标
            }
        }
        public void OnTrackableStateChanged(     //改变跟踪对象的状态,一个以前状态,一个新状态
          TrackableBehaviour.Status previousStatus,
          TrackableBehaviour.Status newStatus)
        {
            if (newStatus == TrackableBehaviour.Status.DETECTED ||
                newStatus == TrackableBehaviour.Status.TRACKED ||
                newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            //如果状态在跟踪或者已经检测到,或者扩大跟踪,则去指定跟踪对象,通过OnTrackingFound();
            {
                OnTrackingFound();
            }
        }
        private void OnTrackingFound()
        {
            if (myModelPrefab != null)
            {
                Transform myModelTrf = GameObject.Instantiate(myModelPrefab) as Transform;
                //去实例你想要的对象
                myModelTrf.parent = mTrackableBehaviour.transform;
                //设置他的父级
                myModelTrf.localPosition = new Vector3(0f, 0f, 0f);
                //设置他的位置
                myModelTrf.localRotation = Quaternion.identity;   //设置他的旋转
                myModelTrf.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f);    //设置他的大小
                myModelTrf.gameObject.active = true;    //设置他的显示
            }
        }
    }
    5.然后把此脚本拖放到你指定的ImageTarget上。并且指定你要实例化的对象(即代码中的myModelPrefab)即可。
    6.运行,你会发现你所指定的那个对象会动态加载在场景中的ImageTarget下。
    更多AR新闻就在中国AR网(https://www.chinaar.com/)

关于AR

卓越的技术,一流的团队,为您打造专家级AR产品。
Test your infrastructure

什么是AR?

AR(Augmented Reality),即增强现实技术能将虚拟信息(图片,视频, 音频等)融入现实世界,让现实世界更加多元、丰富,为人们带来更加生动有 趣的感官体验。简单来说AR技术给人们带来的是一种信息的增强体验,它也 将成为一种“更新奇、更易传播”的新型信息传递方式。

AR的趋势

在信息技术化的时代趋势下,AR将以一种新型娱乐及信息交互方式融入人们 的生活,而对于企业来说,AR产品的广泛推广及运用也将是一项不可错失的 绝佳商机。

Test your infrastructure

AR运用的困惑

AR技术备受瞩目,然后实际运用上却让人望而止步。
成本上 往往单制作一个AR形式的内容就得花费上万元, 只有高预算的大企业或广告商才能出手
技术上 AR技术总给人一种触不可及的印象,导入AR技术 是否需要高度技术支持。
企划上 AR充满娱乐性,但是好玩之外,如何将AR良性结 合商务是难题。

选择迅速AR的八大优势

迅速AR始终以满足顾客为己任,成就AR领先品牌。

经典案例展示

我们是AR应用的领军者,专注AR技术研究与开发。

新闻动态 · 与日俱进

我们诚心邀您分享我们的成长历程。
更多动态 >

合作伙伴

整合全球产业链资源,服务超过7亿用户