0

GLU.gLookAt(eyeX、eyeY、eyeZ、Xpos、Ypos、Zpos、upX、upY、upZ)メソッドでの使用について非常に混乱しています。私が欲しいのは、3D立方体をズームすることだけです。eyeZの値を増減すると、カメラが立方体に向かって前後に移動します。eyeZの特定の制限まではすべて問題ありませんが、eyeZの値をその制限を超えて増やすと、エフェクトが元に戻り始めます。つまり、ズームインする代わりにズームアウトが開始されます。

私はopenGLで上記の方法を理解するのは得意ではないかもしれませんが、この背後にある基本的な理由を誰かに教えてもらえますか。このリンクを参照しました http://jerome.jouvie.free.fr/opengl-tutorials/Tutorial8.php

必要に応じて、ここにコードを投稿できます。

public void onDrawFrame(GL10 gl) 
{

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT  | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();


    //gl.glTranslatef(xPos, yPos, -zoomFactor);
    GLU.gluLookAt(gl, eyeX, eyeZ, eyeZ, 0f, 0f, 0f  , 0f, 1f, 0f);

    gl.glRotatef(mAngleX, 0, 1, 0);
    gl.glRotatef(mAngleY, -1, 0, 0);

    // Draw the model
    cube.draw(gl);
}

これは私がgLookAtメソッドを使用しているメソッドです。

4

1 に答える 1

1

GLU.gluLookAt(gl, eyeX, eyeZ, eyeZ, 0f, 0f, 0f , 0f, 1f, 0f);は、カメラを特定のスポット、この場合は (0,0,0) に向ける関数です (パラメーターがどちらの方向にあるか思い出せないと思いますが、最後の 3 つはアップ ベクトルであると想定しています)。したがって、カメラを自分が見ている方向に動かすと、最終的にはカメラを通り抜けて反対側に出ていきます。カメラを使用しGLU.gluLookAtているため、背後にあるオブジェクトに向きを変えるため、ズームアウトしているような印象を受けます。同じ方向に進み続けるとき。

于 2013-02-26T07:26:01.033 に答える