2016-06-15 20 views
1

UnityとVuforia SDKを使用してアプリケーションを開発しています。Vuforia:OnTrackableStateChangedイベントが発生しない場合があります

アプリケーションには、複数のマーカーが関係します。 マーカーを順番にスキャンする必要があります。 マーカーが1つ検出されると、追跡が失われたときにOnTrackingFoundイベントハンドラが呼び出され、OnTrackingLostイベントが発生します。

問題は、あるマーカーを別のマーカーで置き換えると、OnTrackerLostイベントが発生しないという問題です。

OnTrackLostを解雇することはできますか?

このシナリオを分析したところ、TrackTableが失われたときにOnTrackLostイベントが発生しなかったため、「OnTrackableStateChanged」イベントが発生しないことがありました。

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" イベントが時々発生しません。

答えて

0

現在、Vuforiaによってどのデータセットが追跡されているかを調べることができます。

現在、どのオブジェクトがレンダリングされているかを追跡できます。変更された場合は、OnTrackingLostを呼び出します。どのマーカーが追跡中であるかに基づいて、特定のオブジェクトがアクティブで、他のすべてがオフになっています。前のフレームでオンになっているかどうかをチェックするスクリプトを用意しています。同じでない場合は、マーカートラッキングを変更しました。

いずれの場合も、結果がある場合、メソッドが複数回呼び出されないようにする必要があります。それ以外はちょうどそれのために行く。

+0

私はコードで質問を編集しました。ご意見をお寄せください。 –

+0

OnTrackableStateChangeは、暗黙のうちに状態が変更されたときに呼び出される名前と似ています。マーカーを切り替えるときに状態を変更していない可能性があります。あなたはTRACKED状態にあり、TRACKEDに移動しています。これは、追跡中のデータセットまたは現在アクティブなゲームオブジェクトを比較する必要があります。あなたの編集は私のソリューションを変更しません。 – Everts

+0

あなたはunityとvuforiaで初心者を使用する方法を知りませんので、いくつかのサンプルコードを用意してください。 –

関連する問題