0

現在、私はJoglでアプリケーションを開発しています(実際には私の最初のアプリケーションです)。最初に.objファイルからモデルをキャンバスにロードする必要があります(なんとかそうすることができます)。

次は、マウスのドラッグイベントを使用して同じキャンバンにストロークを描画する必要があり、ストロークはティーポットの前にある必要があります(GL.GL_LINE_STRIPを使用)および(glu.gluUnprojectを使用して描画する座標を取得します)

この時点まで、私は問題を抱えています。(モデルは、x軸上に水平に配置されたロッドです)

ロードされたモデルの座標は、muマウスカーソルポイントと同じではないようです。例:マウスクリックを使用してカーソルの位置を特定し、モデル(ロッド)の端をクリックします。これにより、miのX値0.37599047216147075が返されます。次に、ロッドモデルの最大頂点X値を探します(ロッドの最も右側の頂点である必要があります)。それは私に1.xxx値を返します...これは私のマウスカーソル値に近いところにはありません。そして、私がクリックできる最大値はわずか0.6xxxです。なぜそうなのか、何か考えはありますか?

4

2 に答える 2

0

さて、glu.gluUnproject を使ってみましたが、z の値がどうあるべきかわかりません。

public void calObjectCoor(GL gl, float mousex, float mousey, float z) {

    float x = mousex, y = mousey;
    gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
    gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
    gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);

    /* note viewport[3] is height of window in pixels */
    realy = viewport[3] - (int) y ;


    glu.gluUnProject((double) x, (double) realy, z, //
            mvmatrix, 0,
            projmatrix, 0,
            viewport, 0,
            wcoord, 0);
}
于 2009-10-08T04:09:06.817 に答える