2017-11-13 8 views
1

ユーザ(カメラ)に常に向いているARCoreアンカーの場所に2Dビットマップを配置するにはどうすればよいですか? ユーザーがタップする場所にマーカーを配置したいとします。ARCoreアンカーに2D Bitmapを配置する

これを実現するには、モデル、ビュー、投影行列を掛けなければいけませんか?

現在、フラット3Dオブジェクトであるため、ビットマップを表示するためにandy_shadow.objを使用しようとしました。しかし、私はそれがユーザーに直面する(回転する)と、ユーザーがタップする場所に配置することに問題があります。

Matrix.rotateM(mModelMatrix, 0, 90.0f, 1.0f, 0.0f, 0.0f); 

これはカメラに直面するオブジェクトを回転させていますが、右/左に45度回転し、新しいものを置くとき、それはフレームがスタート地点から90度であることから、それがフラットになります。

2次元オブジェクトをOpenGLで画面UIに配置することは可能でしょうか?

答えて

0

2つの質問があります。まず、カメラを常に見るためにオブジェクトをどのように回転させますか?

フレームの回転とアンカーの回転を使用してこれを行うことができました。 HelloArActivity.onDrawFrameに()変更

planeAttachment.getPose().toMatrix(mAnchorMatrix, 0); 

float translation[] = new float[3]; 
float rotation[] = new float[4]; 
planeAttachment.getPose().getTranslation(translation,0); 
frame.getPose().getRotationQuaternion(rotation,0); 

Pose rotatedPose = new Pose(translation,rotation); 
rotatedPose.toMatrix(mAnchorMatrix,0); 

であることをこれはあなたの周りに移動すると、 "アンディは" いつもあなたに見えるようになります。

2D画像を描画する2番目の部分では、もう少しコードが必要です。ハイレベル:

  1. 周りの頂点を使用して矩形を作成します(0,0,0)
  2. クワッドに上のテクスチャをマッピングするためにUVMapを使用してください。
  3. 実施例はQuadRenderer.javaであるMVP行列

によって位置を乗算頂点シェーダを使用。サンプルでは、​​ObjectRendererクラスが使用されているのと同じように、サンプルを使用します。

関連する問題