2016-06-15 1 views
1

Unity 및 Vuforia SDK를 사용하여 응용 프로그램을 개발 중입니다.Vuforia : OnTrackableStateChanged 이벤트가 때때로 실행되지 않습니다.

응용 프로그램에는 여러 마커가 포함됩니다. 순차적으로 마커를 하나씩 스캔해야합니다. 하나의 마커가 감지되면 추적이 손실되면 OnTrackingFound 이벤트 처리기가 호출되고 OnTrackingLost 이벤트가 발생합니다.

하나의 표식을 다른 표식으로 바꾼 경우 OnTrackerLost 이벤트가 발생하지 않는 것이 문제입니다.

OnTrackLost를 해고 할 수 있습니까?

시나리오를 분석 한 결과 Trackable이 손실되어 OnTrackLost 이벤트가 실행되지 않는 경우 "OnTrackableStateChanged"이벤트가 실행되지 않는 경우가 있습니다.

OnTrackableStateChanged를 매번 실행할 수있는 솔루션이 있습니까?

참고 : 나는 유니티와 Vuforia 버전 사용

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"이벤트가 때로는 해고되지 않은 : 5.3.2

이 다음은 제가 사용했던 코드입니다.

답변

0

현재 Vuforia가 어떤 데이터 세트를 추적하고 있는지 확인할 수 있습니다.

또는 현재 렌더링 된 개체를 추적 할 수 있습니다. 변경된 경우 OnTrackingLost를 호출합니다. 추적중인 마커를 기반으로 특정 개체가 활성화되어 있고 다른 모든 개체는 꺼져 있습니다. 어떤 스크립트가 켜져 있고 이전 프레임에 있었는지 확인하는 스크립트가 있습니다. 같지 않으면 마커 추적을 변경했습니다.

두 경우 모두 결과가있는 경우 메서드를 여러 번 호출하지 않아야합니다. 그렇지 않으면 그냥 가자.

+0

나는 코드로 질문을 편집했습니다. 의견을 검토하고 제공하십시오. –

+0

OnTrackableStateChange는 암시 된 이름과 같으며 상태가 변경되면 호출됩니다. 마커를 전환 할 때 상태를 변경하지 않고 TRACKED 상태에 있고 TRACKED로 이동할 수 있습니다. 추적중인 데이터 세트 또는 현재 활성화 된 게임 개체를 비교해야합니다. 수정해도 내 솔루션이 변경되지 않습니다. – Everts

+0

당신은 unity와 vuforia에서 초보자를 사용하는 방법에 대한 아이디어를 얻지 못하기 때문에 몇 가지 샘플 코드를 제공해 주시겠습니까? –