0

状況を説明します。マーカーが表示されたときにカメラを一時停止する方法を見つけようとしています。マーカーの意味は、このリンクから示されています。

http://code.google.com/p/andar/

マークが表示されたら、カメラを一時停止して、カメラが動いてもマーカーが消えないようにする方法が必要です。これが必要なのは、ゲームをプレイするときにカメラをジョギングしても、マーカーが正しい場所にとどまるようにするためです。これがマーカーアクティビティのコードです

パブリッククラスCustomActivityはAndARActivityを拡張します{

CustomObject2 someObject;
ARToolkit artoolkit;
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    CustomRenderer renderer = new CustomRenderer();//optional, may be set to null
    super.setNonARRenderer(renderer);//or might be omited
    try {
        //register a object for each marker type
        artoolkit = super.getArtoolkit();
        someObject = new CustomObject2
            ("test", "patt.hiro", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject);
        someObject = new CustomObject2
        ("test", "android.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject);
        someObject = new CustomObject2
        ("test", "barcode.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject);
    } catch (AndARException ex){
        //handle the exception, that means: show the user what happened
        System.out.println("");
    }       
    startPreview();
}

/**
 * Inform the user about exceptions that occurred in background threads.
 * This exception is rather severe and can not be recovered from.
 * TODO Inform the user and shut down the application.
 */
public void uncaughtException(Thread thread, Throwable ex) {
    Log.e("AndAR EXCEPTION", ex.getMessage());
    finish();
}

}

@オーバーライド

立方体の描画に使用される描画関数

public final void draw(GL10 gl) {
        super.draw(gl);

        gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR,mat_flash);
        gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SHININESS, mat_flash_shiny);    
        gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, mat_diffuse);  
        gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, mat_ambient);

        //this code draws the cube. 
        gl.glColor4f(0, 1.0f, 0, 1.0f);
        gl.glTranslatef( 0.0f, 0.0f, 12.5f );


        // experement with the api
        //draw the box
      box.draw(gl);
    }

startPreview関数の周りにコードをラップしますか?または、オブジェクトが描画されているかどうかを確認してから、その方法でプレビューを停止する必要がありますか?

このコマンドを見つけましたが、マーカーが表示されているときにどのように実装するかわかりません。私はいくつかの状態が必要であることを知っていますが、それが何であるかはわかりません。camera.stopPreview();

4

1 に答える 1

2

たぶん、処理のためにカメラプレビューバッファの送信を停止するコードを追加してみてください。そうすれば、カメラプレビューのレンダリングは継続されますが、新しいフレームは処理されません。

于 2012-08-01T22:04:26.410 に答える