【发布时间】:2014-06-11 20:27:54
【问题描述】:
我一直在研究加载游戏几何图形并跟踪玩家位置和视图的东西,但我遇到了一个问题:如果所有轴都被打乱,我无法旋转视图。
以下是俯仰角和偏航角为 0 的程序截图(就像游戏的客户端一样): http://i.stack.imgur.com/DXhIr.jpg
这是我的视图矩阵代码:
public void UpdateViewMatrix()
{
Vector3 pos = Position;
pos.X *= -1;
pos.Y *= -1;
pos.Z *= -1;
this.ViewMatrix = Matrix.CreateScale(1) * Matrix.CreateLookAt(Vector3.Zero, new Vector3(1, 0, 0), new Vector3(0, 0, 1)) * Matrix.CreateTranslation(pos) * Matrix.CreateFromYawPitchRoll(-MathHelper.PiOver2, -MathHelper.PiOver2, MathHelper.Pi);
this.Frustum.Matrix = (this.ViewMatrix * this.ProjectionMatrix);
if (this.CameraUpdated != null) this.CameraUpdated(this, new EventArgs());
}
我不确定为什么在更新视图矩阵之前还要翻转所有坐标。
提前致谢!
【问题讨论】:
-
我不确定它为什么会发生,但它一定与描述视图的矩阵与描述世界的矩阵混合有关。如果你想解决它,那么不要将旋转矩阵与视图相乘,而是使用它来转换目标向量的外观。