2

ARToolKitPlusのiPhoneポートであるVRToolkitに小さな問題があります。フレームワークの3Dのものは必要ありませんが、検出されたマーカーの情報だけが必要です。これまでのところすべてが正常に機能しており、すべてのフレームでリアルタイムに生成されるマーカーの頂点座標に固執しています。

検出されたマーカーのエッジの周りに単純なCGRectを描画して、マーカーを視覚化したいと思います。'TrackerSingleMarkerImpl.cxx'でマーカーの頂点を取得しており、主に次のようなコードを使用しています。

vertexArray[0] = marker_info[k].vertex[0][0];
vertexArray[1] = marker_info[k].vertex[0][1];
vertexArray[2] = marker_info[k].vertex[1][0];
vertexArray[3] = marker_info[k].vertex[1][1];
vertexArray[4] = marker_info[k].vertex[2][0];
vertexArray[5] = marker_info[k].vertex[2][1];
vertexArray[6] = marker_info[k].vertex[3][0];
vertexArray[7] = marker_info[k].vertex[3][1];

CGRectは正常に描画されますが、問題は完全にミラーリングされていることです。したがって、水平軸と垂直軸がミラーリングされます。XとYを入れ替えると、垂直軸のみがミラーリングされたままになり、次のようになります。

http://i1218.photobucket.com/albums/dd416/vyrb1/artoolkit_marker_failure.png

ここで何が問題になるのか分かりますか?正確な質問は必要ありませんが、問題がどこにあるかについての大まかな方向性は必要です。'arGetTransMat.cxx'のようなファイルを調整しようとしましたが、問題が生成された頂点座標にあるかどうかはわかりません。マーカーへの3Dモデルの投影は完全に機能しますが、これは3D空間にあります。2DとCGRectのみが必要なため、OpenGL ES(EAGLView)で使用される射影行列を使用していません。

お役に立てば幸いです。前もって感謝します。

4

1 に答える 1

0

ARToolKitを使用してからしばらく経ち、それでもOpenGL関数を怠惰に使用していましたが、マーカーの方向に基づいてコーナーの頂点を決定する必要があると思います(dirのフィールドですmarker_info

「ARToolKitmarker_info頂点コーナー」をグーグルですばやく検索したところ、これが私の予感をサポートしているようです。

// read in the detected corners from the marker info (easier to work with)
for (int i = 0; i < 4; i++) {
    corners_ar[2*i]   = corners[i][0] = marker_info[best].vertex[(4+i-dir)%4][0];
    corners_ar[2*i+1] = corners[i][1] = marker_info[best].vertex[(4+i-dir)%4][1];
}
于 2012-01-19T12:19:30.610 に答える