0

「カメラ」の位置と向きを設定するために gluLookAt() を使用しています

GLU.gluLookAt(xPosition, yPosition, zPosition,
              xPosition + lx, yPosition, zPosition + lz
              0, 1, 0);

lz 変数と lx 変数は、フォワード ベクトルを表します

lz = Math.cos(angle);
lx = -Math.sin(angle);

3D の世界で振り向くと、常に目の前にある軸を中心に回転しているように見えます

xPosition 変数と yPosition 変数は同じままなので、これはわかりますが、オブジェクトに近づいて向きを変えると、オブジェクトの周りを回転しているように見えます。

軸図

ここで使用した数学に問題がないことはわかっています。これは、適切に機能した過去のプロジェクトのコードを使用してみましたが、問題はまだ残っているためです。

これは私がレンダリングループでやっていることです

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//draw scene from user perspective
glLoadIdentity();
GLU.gluLookAt(camera.getxPos(), camera.getyPos(), camera.getzPos(), 
      camera.getxPos()+camera.getLx(), camera.getyPos(),     camera.getzPos()+p1.getLz(),
      0, 1, 0);


glBegin(GL_QUADS);
glVertex3f(-dim, dim, 0);
glVertex3f(dim, dim, 0);
glVertex3f(dim, 0, 0);
glVertex3f(-dim, 0, 0);
glEnd();

pollInput();
camera.update();

プレーヤーの座標があるボックスをレンダリングしようとしましたが、この結果が得られました。カメラはプレイヤー座標の後ろから見ているように見えます。例えを使うと、今は 3 人称ゲームのようで、1 人称ゲームのように見えるはずです

ここの小さなボックスはカメラ座標でレンダリングされ、より大きなボックスが前面にある遠近感を与えます。

第三者 三人称 2

4

1 に答える 1

0

解決しました!

問題は、マトリックス モードが GL_PROJECTION に設定されているときに、最初に gluLookAt() を呼び出していたことです。

その行を削除して、マトリックスモードをGL_MODELVIEWに設定した直後に移動し、問題を解決しました。

于 2012-11-23T15:01:46.827 に答える