2011-11-10 3 views
0

私はOpenGLを初めて使っていて、一人称視点を使って横断できる単純な迷路を作成しようとしていました。私には迷路のレンダリングとすべてのものがあります。しかし、私の最初の人物のカメラの視点は、3人目のカメラの多くになります。カメラはカメラのある特定の点を中心に回転します。実際の回転と平行移動OpenGLで基本的な一人称カメラを正しく実装するにはどうすればよいですか?

void camera(){ 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glRotatef(pitch, 1, 0, 0); 
    glRotatef(yaw, 0, 1, 0); 
    glTranslatef(player.x, player.y, player.z); 
} 

これはまた、レンダリングに起こる最初の翻訳および回転であるため

マイコード。 ありがとうございました。

+0

「カメラは、特定のポイントインフロントを中心に展開カメラ。"あなたが見ていることについては何ですか、あなたはそれを言うことができますか?可能な可能性のある唯一の方法は、ビューを回転させたときに 'player'の位置が変わった場合です。 –

+0

「プレイヤー」にちょっとピラミッドを描いて、回転するとカメラがその位置を中心に回転します。 – Mirza

答えて

1

あなたが原点に、この場合には、プレイヤーの位置をカメラ位置を移動するようにカメラの変換は、反転する必要があります

glTranslatef(-player.x, -player.y, -player.z); 
0

私はあなたの迷路を構築し、それを残してから、gluLookAt()を使って一人称視点にすることをお勧めします。あなたが今やっていることは、まだ立っていて、あなたの周りの迷路を動かすことです。あなたはそれを難し​​い方法でやっています。

+2

'gluLookAt'を提案している間に、あなたはちょうど言ったことと彼がやっていることの間に文字通り違いはありません。 'gluLookAt'はすべて、彼がやっているのと同じように、行列を生成します。固定カメラの周りを世界を動かすことは、固定カメラを世界に動かすことと変わりありません。すべてが同じ場所で終わります。固定されたカメラスペースに相対して、投影の準備ができています。それは概念上の違いであり、コードの違いではありません。 –

関連する問題