我以为我理解矩阵数学很好,但显然我很无能为力
这是设置:
我在世界空间的[0,0,0]处有一个物体.我有一个由鼠标移动控制的摄像机类,可以旋转和缩放对象,使它始终可以看到它.以下是我从相机计算viewMatrix的方法:
public Matrix viewMatrix {
get {
return
Matrix.CreateFromAxisAngle(Vector3.Up, rotAngle)
* Matrix.CreateFromAxisAngle(Vector3.Left, pitchAngle)
* Matrix.CreateTranslation(0, 0, distance)
;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要能够将相机的位置放在世界空间中,这样我才能从盒子中获得距离 - 特别是它与盒子每个面的距离. 如何在世界空间坐标系中获得相机的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);
Run Code Online (Sandbox Code Playgroud)
似乎旋转信息以某种方式丢失.奇怪的是viewMatrix代码非常适合定位相机!
| 归档时间: |
|
| 查看次数: |
4559 次 |
| 最近记录: |