テストアプリケーションでのカメラの動作を理解できません。私は働いているカメラをまとめることができました - 今、私はそれがすべてどのように機能するのかを理解しようとしています。私のカメラは、独自のクラスにカプセル化されています。ここに私のGame.Update()メソッドから呼び出されるupdateメソッドである:すべてのXNA 4.0カメラの質問
public void Update(float dt)
{
Yaw += (200 - Game.MouseState.X) * dt * .12f;
Pitch += (200 - Game.MouseState.Y) * dt * .12f;
Mouse.SetPosition(200, 200);
_worldMatrix = Matrix.CreateFromAxisAngle(Vector3.Right, Pitch) * Matrix.CreateFromAxisAngle(Vector3.Up, Yaw);
float distance = _speed * dt;
if (_game.KeyboardState.IsKeyDown(Keys.E))
MoveForward(distance);
if (_game.KeyboardState.IsKeyDown(Keys.D))
MoveForward(-distance);
if (_game.KeyboardState.IsKeyDown(Keys.S))
MoveRight(-distance);
if (_game.KeyboardState.IsKeyDown(Keys.F))
MoveRight(distance);
if (_game.KeyboardState.IsKeyDown(Keys.A))
MoveUp(distance);
if (_game.KeyboardState.IsKeyDown(Keys.Z))
MoveUp(-distance);
_worldMatrix *= Matrix.CreateTranslation(_position);
_viewMatrix = Matrix.Invert(_worldMatrix); // What's gong on here???
}
まず、私は行列が操作されている非常に最後の部分以外に、この方法では、すべてを理解しています。私は用語が私のやり方にもなっていると思う。たとえば、私の_worldMatrix
は実際に回転行列です。実際に私を困惑させるのは、を逆にして_viewMatrix
を計算する部分です。私はちょうどこれが何であるかを理解していない。
以前のテストでは、私は常にMatrix.CreateLookAt()
を使用してビューマトリックスを作成していましたので、少し混乱します。私は、誰かが何が起こっているのかを簡単に説明できることを願っています。
おかげで、ビュー行列は、グラフィックス・パイプラインの場合と
-Scott
この質問に対する回答は、次のような場合に役立ちます。http://stackoverflow.com/questions/6461740/xna-worldmatrix-and-viewmatrix –
LOL。それは別の問題について投稿された私の質問でした。私は3D空間と異なるビュー/行列/投影の周りに私の頭を包んで苦労している... – Scott