在Direct3D中,我使用Matrix.LookAtLH函数来计算视图矩阵。
我正在将它用于相机,我通过将原点移动到目标位置,旋转,然后将原点移回(0,0,0)来围绕目标进行轨道运行。
这将乘以最初从LookAtLH计算的矩阵。
在这些操作中,有一种方法可以分解矩阵以获得眼睛位置,目标位置和向上矢量吗?
答案 0 :(得分:4)
查看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中的坐标系向后退到标准。
答案 1 :(得分:3)
两个选项: