【问题标题】:Vuforia: OnTrackableStateChanged event not fired sometimesVuforia:有时不会触发 OnTrackableStateChanged 事件
【发布时间】:2018-09-24 01:54:34
【问题描述】:

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

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

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

我们可以让 OnTrackLost 被解雇吗?

我分析了这个场景,发现当 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();
        }
}
}

“OnTrackableStateChanged”事件有时不会被触发。

【问题讨论】:

    标签: unity3d vuforia


    【解决方案1】:

    (这更像是对 Hardik 的回应,因为原始帖子来自 2016 年,在 Vuforia 7.2 之前。)

    如果您使用的是 Vuforia 7.2 或更高版本,默认情况下会为所有跟踪器启用扩展跟踪:https://library.vuforia.com/articles/Training/Extended-Tracking。 (只要您在 Vuforia 配置窗口中为您的设备启用了 POSITIONAL 跟踪模式,就可以做到这一点。)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2019-10-07
      • 1970-01-01
      相关资源
      最近更新 更多