gpt4 book ai didi

c# - XNA:从 Matrix 获取 Vector3

转载 作者:行者123 更新时间:2023-11-30 13:51:57 29 4
gpt4 key购买 nike

我以为我对矩阵数学的理解足够好,但显然我一无所知

这是设置:

我在世界空间的 [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 代码非常适合定位相机!

最佳答案

或者稍微简化一下:

Vector3 pos = Matrix.Invert(view).Translation;

关于c# - XNA:从 Matrix 获取 Vector3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542476/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com