在DirectX 11中查看矩阵 - 奇怪的转换

时间:2012-09-18 14:00:23

标签: sdk directx-11 3dsmax 3ds

我正在为3ds max编写一个基于DirectX 11的渲染器插件。

我从3ds max获得实际的视口矩阵,在反转后看起来:     [Rx Ry Rz]     [Ux Uy Uz]     [Dx Dy Dz]     [Px Py Pz]

  • 其中R代表Right,U代表Up,D id方向,P代表Position。

我将此视图矩阵应用于DirectX (我基于rastertek教程:http://www.rastertek.com/dx11tut04.html) 但是我没有创建自己的视图矩阵,而是使用3ds max中的这个视图矩阵, 它具有基本相同的结构:     [Rx Ry Rz 0]     [Ux Uy Uz 0]     [Dx Dy Dz 0]     [Px Py Pz 1]

起初一切似乎都没问题,因为最大视口中的视图和DirectX窗口中的渲染视图看起来几乎相同。但是最大视口和DirectX窗口中的转换并不相同。似乎是:当我移动相机位置时,DirectX中的相机目标正在移动,而当我移动相机目标(或旋转相机)时,DirectX中的相机位置正在移动。

感谢帮助...... 我连续3天都搞清楚了......

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案......

首先,我从3ds max matrix中获取Up,Direction和Position并手动创建 视图矩阵但使用:D3DXMatrixLookAtRH和D3DXMatrixPerspectiveFovRH(用于投影矩阵)而不是D3DXMatrixPerspectiveFovLH和D3DXMatrixLookAtLH 这解决了大多数问题...

然后,我注意到在平移相机时没有更新3ds max矩阵(只更新位置)所以,为了查看视图矩阵中的矢量,我使用了“位置方向”......