2017-09-16 3 views
0

나는 rajawali vuforia에서 발견 된 마커의 수를 얻으려고합니다.발견 된 마커를 계산하는 방법 rajawali vuforia?

우리는 방법이 동안 :

1 protected void foundFrameMarker(final int markerId, Vector3 position,Quaternion orientation) {} // this method is called when found any marker until the marker disappeared

2 public void noFrameMarkersFound() {} // this method is called when no markers appeared or found

어떻게 발견 마커의 수를 얻기 위해 이러한 방법을 사용하기를? 또는 카운트를받는 다른 방법이 있습니까?

답변

0

foundFrameMarker은 현재 프레임마다 루프마다 감지 된 마커마다 호출됩니다. 발견 된 마커를 계산하려면 렌더링을 계산하기 위해 렌더러에 int 변수를 추가해야합니다. 렌더링 루프 (onRenderFrame)의 시작 부분을 재설정하고, 증가를 foundFrameMarker 내부 :

public void onRenderFrame(GL10 gl) { 
    ... 
    mMarkerCount = 0; 
    ... 
} 

protected void foundFrameMarker(int markerId, Vector3 position, Quaternion orientation) { 
    mMarkerCount++; 
    ... 
} 
0

@yakobom 응답의 해결 문제를하지만 내가 몇 가지 코드를 추가하므로 모든 프레임을 계산 반복 : 나는 또 다른 INT 초기화를 maxmMarkerCount에 도달하도록하십시오. onCreate(...)의 액티비티 클래스에서 매 초마다 새로 고치는 타이머를 추가하여 TextFeild에 설정하고 최대 값을 재설정하십시오. 하지 OnCreate 활동 클래스의

:

Thread t = new Thread() { 

     @Override 
     public void run() { 
      try { 
       while (!isInterrupted()) { 
        Thread.sleep(1000); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          te.setText(mRenderer.max+""); 
          mRenderer.max=0; 
         } 
        }); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 
    }; 

    t.start(); 

렌더러 클래스에서 :

protected void foundFrameMarker(int markerId, Vector3 position, 
     Quaternion orientation) { 

    ... 

    mMarkerCount++; 

    if (mMarkerCount > max) 
     max = mMarkerCount; 

    ... 

} 
+0

두 번째는 좋은 여부 될 수있다. Vuforia는 매 프레임마다 탐지 된 마커/타겟의 정확한 상태를 업데이트하므로 모든 프레임에서이를 수행 할 수있는 정확한 방법이 있습니다. 이로 인해 발생할 가능성이없는 성능 문제가있는 경우 타협을 시작할 수 있습니다. – yakobom