我已经实现了一个简单的弧形球相机,效果很好 - 当我使用鼠标时,我用滚动,俯仰和打哈欠更新视图矩阵。
然而,为了正确计算镜面反射,我需要在世界空间中当前的相机位置,在应用旋转时本身不会更新。
你们知道如何从View矩阵中检索当前位置吗?还是有另一种方法可以更新吗?
答案 0 :(得分:3)
你有一些简单的选择:
通过调用XMMatrixInverse或D3DXMatrixInverse来反转视图矩阵,这样就可以获得" CameraWorld"矩阵。然后它的(_41,_42,_43)元素将成为位置向量。
反转视图矩阵(例如上次)但不是读出鱼卵,而是使用XMMatrixDecompose或D3DXMatrixDecompose来获取相机的位置和方向。
一个好主意是在程序存储器中同时包含View和InvView矩阵,以便快速访问这些信息:矩阵求逆在计算上非常昂贵。