2017-09-16 106 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獲得max計數mMarkerCount達到,在onCreate(...)的活動分類中,我添加了一個計時器,每秒更新一次以將其設置爲TextFeild並重置最大值。

在的onCreate Activity類

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