現在、私は自分のゲームで太陽のシャドーマッピングを実装しようとしています。このためには、glmの関数を使って太陽の視点からシーンをレンダリングする必要があります。ここに私のコードは次のとおりです。OpenGL GLM lookAtの異常な動作
projection = glm::ortho<float>(-200, 200, -200, 200, -200, 400);
view = glm::lookAt(sun_pos_modelspace, -target_position_modelspace, glm::vec3(0, 1, 0)); // target needs to be negative for correct camera direction
final_matrix = projection * view;
これは、ゲームが開始されるときにシーンが太陽の視点からレンダリングされるため、うまくいきます。しかし、私がターゲットを変換すると、ビューマトリックスは元の目の位置(太陽の位置)から移動しているように見えます。私は目をまったく動かしたくありません。私はちょうどカメラが太陽の位置に座り、ターゲットベクトルに向かって直接見たいと思っています。
これを解決するために他のglm関数を使用する必要がありますか?またはlookAtを間違って使用していますか?
私はあなたが使用しているglmのバージョンを知りませんが、0.9.7ではlookat()は想定通りに動作しません。自分でLookAtを計算することをお勧めします。 –
@MichaelIV:that奇妙に聞こえる、glmはかなり長い間周りにあって、一般的に安定しています...あなたはそれのバグレポートを開くべきです、そうでなければ修正することはできません。 – karyon
gluLookAt()で見つけたものともっと似たものを使っています.GLMでなぜ翻訳パートにドットをつけているのか分かりません。また、私の前進が正(GLのデフォルトに反して)であるので、 –