私はスカイボックスの実装を始めたばかりで、数学ライブラリとして OpenGL/GLSL と GLM を使用しています。問題は行列に関連していると思いますが、GLM ライブラリを利用する実装を見つけることができませんでした。
スカイボックスのモデルは問題なく読み込まれますが、カメラは 3D 三人称カメラで回転しているかのように円を描きます。
スカイボックス マトリックスについては、カメラが更新されるたびに更新しています。私は glm::lookAt を使用しているため、方向に 0, 0, 0 を使用する以外は基本的にビュー マトリックスと同じ方法で作成されます。
これが私のビューマトリックスの作成です。オブジェクトとジオメトリのレンダリングでうまく機能します:
direction = glm::vec3(cos(anglePitch) * sin(angleYaw), sin(anglePitch), cos(anglePitch) * cos(angleYaw));
right = glm::vec3(sin(angleYaw - 3.14f/2.0f), 0, cos(angleYaw - 3.14f/2.0f));
up = glm::cross(right, direction);
glm::mat4 viewMatrix = glm::lookAt(position, position+direction, up);
同様に、私の空のマトリックスは、1 つの変更だけで同じ方法で作成されます。
glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
glm::mat4 skyView = glm::lookAt(position, position + direction, up);
スカイボックスは変換を適用せず、回転のみを考慮することを知っているので、何が問題なのかわかりません。これを行う簡単な方法はありますか?
視覚教材:
まだ何も動かずにまっすぐに
カメラを回転させると:
私の質問はこれです: glm:lookAt を使用してスカイボックスをレンダリングするための正しいマトリックスを設定するにはどうすればよいですか?