得到的Vector3我想我明白矩阵数学不够好,但显然我无言以对XNA:从矩阵
这里的设置:
我在世界上[0,0,0]对象空间。我有一个由鼠标移动控制的相机类,可以在物体周围旋转和缩放,以便它始终看着它。这是我如何计算我viewMatrix从相机:
public Matrix viewMatrix {
get {
return
Matrix.CreateFromAxisAngle(Vector3.Up, rotAngle)
* Matrix.CreateFromAxisAngle(Vector3.Left, pitchAngle)
* Matrix.CreateTranslation(0, 0, distance)
;
}
}
我需要能够让相机在世界空间中的位置,所以我可以从包装盒的距离 - 从每个面特别是它的距离的盒子。 如何获得相机在世界空间坐标系中的xyz位置?
我已经试过:
// all of these only return [0, 0, distance];
Vector3 pos = Vector3.Transform(Vector3.Zero, viewMatrix);
Vector3 pos = viewMatrix.Translation;
Vector3 pos = new Vector3(viewMatrix.M41, viewMatrix.M42, viewMatrix.M43);
好像旋转信息被莫名其妙地丢失。奇怪的是,viewMatrix代码完美地适用于定位相机!