Unity 高通AR

今天测试一下高通AR,使用Unity5.6.4。

首先下载高通SDK,下载地址:

https://developer.vuforia.com/downloads/sdk

下载完成后,把我们下载的unitypackage包导入unity中,

在unity中我会看到高通SDK文件夹。

接下来我们找到一张识别图,在高通AR官网新建一个工程,并上传识别图

然后点击

下载识别图数据,同样把得到的unitypackage我们导入unity,数据在这两个文件下

接下来设置VuforiaConfiguration文件,主要是这两个数据

AppLicenseKey需要在官网这里添加后获取

Datasets勾选添加当前工程即可。

准备工作到此完成。

我们在Unity中新建一个场景,删除原来的相机,找到高通SDK中的ARCamera和ImageTarget预设添加到场景中

选择ImageTargetBehaviour中项目数据和识别图

再看一下官方示例脚本DefaultTrackableEventHandler:

    public class DefaultTrackableEventHandler : MonoBehaviour,
                                                ITrackableEventHandler
    {
        #region PRIVATE_MEMBER_VARIABLES
 
        private TrackableBehaviour mTrackableBehaviour;
    
        #endregion // PRIVATE_MEMBER_VARIABLES

        #region UNTIY_MONOBEHAVIOUR_METHODS
    
        void Start()
        {
            mTrackableBehaviour = GetComponent<TrackableBehaviour>();
            if (mTrackableBehaviour)
            {
                mTrackableBehaviour.RegisterTrackableEventHandler(this);
            }
        }

        #endregion // UNTIY_MONOBEHAVIOUR_METHODS

        #region PUBLIC_METHODS

        /// <summary>
        /// Implementation of the ITrackableEventHandler function called when the
        /// tracking state changes.
        /// </summary>
        public void OnTrackableStateChanged(
                                        TrackableBehaviour.Status previousStatus,
                                        TrackableBehaviour.Status newStatus)
        {
            if (newStatus == TrackableBehaviour.Status.DETECTED ||
                newStatus == TrackableBehaviour.Status.TRACKED ||
                newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            {
                OnTrackingFound();
            }
            else
            {
                OnTrackingLost();
            }
        }

        #endregion // PUBLIC_METHODS

        #region PRIVATE_METHODS


        private void OnTrackingFound()
        {
            Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
            Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);

            // Enable rendering:
            foreach (Renderer component in rendererComponents)
            {
                component.enabled = true;
            }

            // Enable colliders:
            foreach (Collider component in colliderComponents)
            {
                component.enabled = true;
            }

            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
        }


        private void OnTrackingLost()
        {
            Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
            Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);

            // Disable rendering:
            foreach (Renderer component in rendererComponents)
            {
                component.enabled = false;
            }

            // Disable colliders:
            foreach (Collider component in colliderComponents)
            {
                component.enabled = false;
            }

            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
        }

        #endregion // PRIVATE_METHODS
    }

这个脚本比较简单,检测识别状态,隐藏和显示子物体。

接下来新建一个cube 调整大小和ImageTarget合适,把cube保存为ImageTarget子物体。我们尝试运行一下:

OK识别出来了 今天的记录就到这里。

猜你喜欢

转载自blog.csdn.net/qq_26723085/article/details/81334424