在Direct3D中,我使用Matrix.LookAtLH函数来计算视图矩阵。从视图矩阵中获取眼睛,目标和向量
我正在使用这个摄像机,它通过将原点移动到目标位置,旋转,然后将原点移回到(0,0,0),绕过目标。
这是乘以最初从LookAtLH计算的矩阵。
在这些操作中的一些操作之后,是否有办法分解矩阵以获得眼睛位置,目标位置和向量?
在Direct3D中,我使用Matrix.LookAtLH函数来计算视图矩阵。从视图矩阵中获取眼睛,目标和向量
我正在使用这个摄像机,它通过将原点移动到目标位置,旋转,然后将原点移回到(0,0,0),绕过目标。
这是乘以最初从LookAtLH计算的矩阵。
在这些操作中的一些操作之后,是否有办法分解矩阵以获得眼睛位置,目标位置和向量?
两个选项:
查看matricies非常容易从中提取数据。检查出你使用的功能(我用D3DXMatrixLookAtLH的文档)的文件:
http://msdn.microsoft.com/en-us/library/bb205342%28v=vs.85%29.aspx
正如你可以实现页面的底部看到,基体内部,像这样产生的:
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
请记住,这只适用于DirectX;在将相同的计算移植到OpenGL时转置上述矩阵,因为DirectX中的坐标系反转到标准。
OpenGL坐标系不倒退!它是向后的DirectX坐标系:-P – mchiasson 2014-10-09 02:19:40
正确!我被DirectX程序员教导,所以一切都倒退了。多年来,我了解到,我一直在使用转置矩阵... 我已经更新了答案,谢谢你打电话给我。 – Salami 2014-10-09 05:34:06