XNAのビューマトリックスを理解する上で重大な問題があります。私は他のすべての部分でかなり遠くに来ました。私は必要な数学を自分で学んだので、最初に何をするのか理解せずに、組み込みの行列関数を使いたくありません。XNAマトリックスを見る - 参照の説明
ここでは、回転、投影、平行移動の基本について理解していますが、XNAでの表示行列の仕組みを理解することはできません。
私が集めたことから、ビューマトリックスは「世界」を自分の空間に変えなければなりません。合理的だと思われますが、ライブラリのMatrix.CreateLookAtメソッドは非常に困惑しています。
私が設立しました(どのようなライブラリ関数の出力を調べて)そのコード収率のこれら2つ同じ結果:
Matrix view = Matrix.CreateReflection(new Plane(Vector3.UnitX, 0)) * Matrix.CreateReflection(new Plane(Vector3.UnitZ, 0)) * Matrix.CreateTranslation(Position);
// ..equals this if (Position = (0 0 -5), since LookAt "looks at" but the above just looks straight down Z)..
Matrix blah = Matrix.CreateLookAt(Position, Vector3.Zero, Vector3.UnitY);
はなぜX軸とZ軸を反転?私はあなたがカメラの回転に応じて世界を回転させるべきだと思ったが、反対方向に世界を同じ方向に逆向きに翻訳するべきだと思った。
または、変換としては使用されていないビュー行列は、世界のカメラの位置と回転をエンコードするだけですか?
ありがとう、それは私の元のアイデアが正しいと思われる。しかし、私はこれらの異なる座標系を少し混乱させました。 – Skurmedel