3D ワールドの回転などを計算するために複雑な三角法を使用したくないので、gluLookAt は優れた代替手段のように思えます。ドキュメントによると、私がする必要があるのは、カメラの位置に 3 つの座標を配置することだけです。画面の上部があるべき方向の視線と直角でなければならないと私が考えるまで、最後のものは意味がありませんでした.
それはまったくそのようには機能しません。私はいくつかのPythonコードを持っています。これは、ゲームのこの部分に入るときのいくつかのデータといくつかのモード コードを初期化するコードです。
def init(self):
self.game_over = False
self.z = -30
self.x = 0
def transfer(self):
#Make OpenGL use 3D
game.engage_3d(45,0.1,100)
gluLookAt(0,0,-30,0,0,0,0,1,0)
「game.engage_3d(45,0.1,100)」は、基本的に投影行列を 45 度の画角と 0.1 と 100 の近距離座標と遠距離座標を持つように設定します。
最初の gluLookAt は、カメラを適切な位置に配置します。
(0,0,0) の中心で描画された立方体があり、gluLookAt なしで正常に動作します。描画する前に、次のコードがあります。
gluLookAt(self.x,0,self.z,0,0,0,0,1,0)
if game.key(KEY_UP):
self.z += 2.0/game.get_fps()
if game.key(KEY_DOWN):
self.z -= 2.0/game.get_fps()
if game.key(KEY_LEFT):
self.x += 2.0/game.get_fps()
if game.key(KEY_RIGHT):
self.x -= 2.0/game.get_fps()
これで、上向きの位置は常に同じで、常に直角になるはずです。私が考えていたのは、上下のキーで z 軸を前後に移動し、左右のキーで x 軸を左右に移動することです。実際に起こることは、左右のキーを使用すると、キーによって加速された「目」の周りを立方体が回転することです。上キーを押すと、どこからともなく別のキューブが画面を切り裂き、最初のキューブに当たります。ダウン キーは、謎のクローン キューブを元に戻します。これをローテーションと組み合わせて、ドキュメントに記載されているように、まったく異なる結果を得ることができます。
いったい何が間違っているのですか?
ありがとうございました。