我无法理解相机如何在我的测试应用程序中工作。我已经能够拼凑一个工作相机 - 现在我试图确保我了解它是如何工作的。我的相机被封装在自己的课堂上。这里是会从我的Game.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
通过反转_worldMatrix
来计算的部分。我只是不明白这是什么。
在之前的测试中,我总是用Matrix.CreateLookAt()
来创建视图矩阵,所以我有点困惑。我希望有人能够简单地解释发生了什么事。
感谢,
斯科特
这个问题的答案可能会帮助你:http://stackoverflow.com/questions/6461740/xna-worldmatrix-and-viewmatrix –
LOL。这是我发布的关于另一个问题的问题。我很难让头部缠绕3D空间和不同的视图/矩阵/投影...... – Scott