Skip to main content
 首页 » 资源教程

Unity高通AR解析(二)

2016年08月13日 17:28:165240

前言

上周跟大家分享了高通AR的基本使用,跟着我一起做的同学应该有所发现,其实AR项目与游戏的区别就在于一个图像识别,识别出来之后,我们就可以在识别出来之后的对象上添加代码实现功能。本周先分享一个小小的迁移项目,AR版本的2048。

  • 最常需要操作的AR脚本DefaultTrackableEventHandler.cs

         /// <summary>     /// A custom handler that implements the ITrackableEventHandler interface.    /// </summary>    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)        {
                Debug.Log("!!!" + 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
  • 根据跟踪状态实现相应功能

    • TrackableBehaviour.Status.DETECTED//检测到

    • TrackableBehaviour.Status.EXTENDED_TRACKED//延伸跟踪

    • TrackableBehaviour.Status.NOT_FOUND//未找到

    • TrackableBehaviour.Status.TRACKED//跟踪中

    • TrackableBehaviour.Status.UNDEFINED//未定义的

    • TrackableBehaviour.Status.UNKNOWN//未知的

可以通过状态 + 控制,完成识别后的切换,如果想识别多张图,可以创建多个ImageTarget。

高通会为识别图评测识别度(星级✨),在项目中识别图最少要三星。

Unity高通AR解析(二) 资源教程 第1张
星级

ImageTarget子对象添加子对象时会自动缩放比例

Unity高通AR解析(二) 资源教程 第2张
自动缩放-1


Unity高通AR解析(二) 资源教程 第3张
自动缩放-2

✨✨所以在添加新对象之后要重新设置transform(P-R-S),修改transform时需修改本地transform。

对于新的AR2048主要是针对位置、旋转、缩放,做一些细致的调整,具体请看实际代码。下载地址(M:6kwt)

Unity高通AR解析(二) 资源教程 第4张
效果图

结束语

其实AR能完成的需求很多,只是大部分需要的技术还是前面Unity引擎的技术了,AR这边的Unity实现还需要AR引擎的支持。至于AR项目,今后遇到好的创意,还会和大家分享,如想交流请私密。

更多AR教程就在中国AR网

本文链接:http://www.chinaar.com/ZYJC/882.html

评论列表暂无评论
发表评论