2017-09-16 7 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内側にインクリメント: 私は別のINTを初期化:の問題を解決しますが、それはすべてのフレームを数える繰り返されるので、私はいくつかのコードを追加

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

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

@yakobomの答えmMarkerCountがのアクティビティクラスに到達した回数をmaxにしてください。それを毎秒更新するタイマーを追加して、それを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

関連する問題