高通AR-关于切换相机跟踪图片的控制

原创 2015年11月20日 15:51:06
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">        当跟踪到图片,并且显示模型的时候,调用SetTrackerSwitch(false)函数,模型会保持显示,移开图片,不会对模型产生影响.此时如果调用SetTrackerSwitch(true),就会回到正常状态。</span>

    

using UnityEngine;
using System.Collections;
using Vuforia;
public class MyTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
{

    #region PRIVATE_MEMBER_VARIABLES

    private TrackableBehaviour mTrackableBehaviour;
    bool _trackerSwitch = true; //作为可否跟踪的开关.

    //private ImageTargetAbstractBehaviour mImageTarget;
    #endregion // PRIVATE_MEMBER_VARIABLES



    #region UNTIY_MONOBEHAVIOUR_METHODS



    void Start()
    {
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
        //mImageTarget = GetComponent<ImageTargetAbstractBehaviour>();
    }

    #endregion // UNTIY_MONOBEHAVIOUR_METHODS



    #region PUBLIC_METHODS
    /// <summary>
    /// 设置跟踪开关的状态
    /// </summary>
    /// <param name="sitchValue"></param>
    public void SetTrackerSwitch(bool sitchValue)
    {
        _trackerSwitch = sitchValue;
        Fix();
    }

    /// <summary>
    /// 改变跟踪开关为相反值
    /// </summary>
    public void ChangeTrackerSwitch()
    {
        _trackerSwitch = !_trackerSwitch;
        Fix();
    }

    /// <summary>
    /// 跟踪开关改变后进行的调整.
    /// </summary>
    void Fix()
    {
        if(_trackerSwitch == true)
        {
            mTrackableBehaviour.enabled = true;
            OnTrackingLost();
        }
        else
        {
            mTrackableBehaviour.enabled = false; 
        }
    }
    /// <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()
    {
        if (_trackerSwitch == false) return;
        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()
    {
        if (_trackerSwitch == false) return;

        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
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

unity3D按下同一键切换不同的相机两种方法

如何按同一个键来回切换不同的摄像机呢? 首先建立两个相机放在不同的物体下用来分别摄到不同的物体。如图示 在sphere下的图如下:在这个相机上绑定一个脚本如图sphere: ...
  • alayeshi
  • alayeshi
  • 2015年03月27日 15:39
  • 2834

关于自定义相机照片横竖屏转换问题的解决

在自定义相机中,横竖屏拍照时,其显示的图片与预览的时候方向不一致,有以下2种方法: 第一种:比较普遍, /** * 获取图片...
  • spring_0101
  • spring_0101
  • 2015年11月06日 16:21
  • 653

JS函数之多组图片切换

函数传递参数:参数=JS的数据类型。 遵循的原则:1.尽量保证HTML代码结构一致,可以通过父元素获取子元素;2.把核心主程序通过函数包起来;3.把魅族不同的值找出来,通过传参实现。 以下为多组图...
  • CharlesK6
  • CharlesK6
  • 2017年06月30日 21:20
  • 236

unity多个相机实现切换

做项目的过程中遇到一个问题,有6个相机,需要实现点击按钮切换到某个相机,从网上看了一些文章,有些已经不再用了(比如说enable),做的过程中还遇到了找不到组件的情况,趁晚上有时间记录下这些。 核心实...
  • u013720726
  • u013720726
  • 2017年03月27日 00:58
  • 1991

自定义相机,人脸追踪

自定义相机,人脸追踪
  • liuxuldx
  • liuxuldx
  • 2015年12月24日 14:42
  • 860

深度相机的人物检测、分割、跟踪算法,openNI的NITE采用的算法,kinect,华硕xtion

不管是kinect还是华硕的xtion (openNI),里面把人定位、分割segmentation并且跟踪 tracking得都好好啊,而且这也是后续做姿势识别和骨骼跟踪的基础。 找了很久论文没有看...
  • wuyoy520
  • wuyoy520
  • 2015年11月06日 12:40
  • 2248

jQuery带左右按钮控制图片切换

代码如下 带左右按钮控制图片切换jQuery幻灯片,jquery焦点图 #owl-demo{position:relative;width:640px;height:390px;marg...
  • wenzhilanyu2012
  • wenzhilanyu2012
  • 2015年09月05日 20:05
  • 1555

理解HTC Vive更新——控制相机旋转和位移

本文章由cartzhang编写,转载请注明出处。 所有权利保留。 文章链接:http://blog.csdn.net/cartzhang/article/details/72188658 作者:...
  • cartzhang
  • cartzhang
  • 2017年05月15日 18:13
  • 2775

Three.js控制相机

先看效果: 手动旋转相机
  • birdflyto206
  • birdflyto206
  • 2016年08月03日 14:19
  • 2149

unity官方demo学习之Stealth(十三)摄像机跟踪

1,调整视角为游戏开始我们想要的视角,选择摄像机camera_main,选择GameObject->align with view,使摄像机在游戏开始放在我们想要的视角 2,为摄像机添加脚本Do...
  • u012723995
  • u012723995
  • 2015年10月05日 10:17
  • 1511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高通AR-关于切换相机跟踪图片的控制
举报原因:
原因补充:

(最多只允许输入30个字)