Unity3d Vuforia:OnTrackableStateChanged事件有时未激发

Unity3d Vuforia:OnTrackableStateChanged事件有时未激发,unity3d,vuforia,Unity3d,Vuforia,我正在使用Unity和Vuforia SDK开发一个应用程序 应用程序涉及多个标记。 我需要按顺序逐个扫描标记。 当检测到一个标记时,将调用OnTrackingFound事件处理程序,并在跟踪丢失时触发OnTrackingLost事件 问题是,当一个标记被另一个标记替换时,OnTrackerLost事件不会被激发 我们能不能让他丢了工作而被解雇 我分析了这个场景,发现有时候在Trackable丢失时不会触发“OnTrackableStateChanged”事件,这就是为什么OnTrackLost

我正在使用Unity和Vuforia SDK开发一个应用程序

应用程序涉及多个标记。 我需要按顺序逐个扫描标记。 当检测到一个标记时,将调用OnTrackingFound事件处理程序,并在跟踪丢失时触发OnTrackingLost事件

问题是,当一个标记被另一个标记替换时,OnTrackerLost事件不会被激发

我们能不能让他丢了工作而被解雇

我分析了这个场景,发现有时候在Trackable丢失时不会触发“OnTrackableStateChanged”事件,这就是为什么OnTrackLost事件不会触发的原因

是否有任何解决方案可以使OnTrackableStateChanged每次都被激发

注意:我使用Unity和Vuforia版本:5.3.2

以下是我使用的代码:

using UnityEngine;
using System.Collections;

public class ImageTargetLoading : MonoBehaviour,ITrackableEventHandler
{
    private TrackableBehaviour mTrackableBehaviour;

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

public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
{
        if (newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            OnTrackingFound();
        }
        else
        {
            OnTrackingLost();
        }
}
}
使用UnityEngine;
使用系统集合;
公共类ImageTargetLoading:MonoBehavior,ITrackableEventHandler
{
私人可追踪行为;
void Start()
{
mtrackablebhavior=GetComponent();
if(MTrackableBehavior)
{
mtrackablebhavior.RegisterTrackableEventHandler(此);
}
}
公共无效OnTrackableStateChanged(TrackableBehavior.Status previousStatus,TrackableBehavior.Status newStatus)
{
if(newStatus==trackablebehavior.Status.TRACKED | | newStatus==trackablebehavior.Status.DETECTED | | newStatus==trackablebehavior.Status.EXTENDED |
{
OnTrackingFound();
}
其他的
{
OnTrackingLost();
}
}
}
“OnTrackableStateChanged”事件有时不会触发。

(这更像是对Hardik回应的回答,因为最初的帖子是2016年Vuforia 7.2之前发布的。)

如果您使用的是Vuforia 7.2或更高版本,则默认情况下会为所有跟踪器启用扩展跟踪:。(只要在Vuforia配置窗口中为设备启用了位置跟踪模式,这一点是正确的。)

从长远来看,我不是Vuforia专家,但在这种情况下,状态更改可能不是TrackableBehavior.Status.no_POSE,而是TrackableBehavior.Status.EXTENDED_TRACKED,它不调用OnTrackingLost()方法,因为Vuforia仍然能够对跟踪器的位置做出相当合理的假设,即使它实际上无法跟踪它。

(这更像是对哈迪克回应的回答,因为原始帖子是2016年Vuforia 7.2之前发布的。)

如果您使用的是Vuforia 7.2或更高版本,则默认情况下会为所有跟踪器启用扩展跟踪:。(只要在Vuforia配置窗口中为设备启用了位置跟踪模式,这一点是正确的。)

从长远来看,我不是Vuforia专家,但在这种情况下,状态更改可能不是TrackableBehavior.Status.no_POSE,而是TrackableBehavior.Status.EXTENDED_TRACKED,它不调用OnTrackingLost()方法,因为Vuforia仍然能够对跟踪器的位置做出相当合理的假设,即使它实际上无法跟踪它