我正在为3ds max编写一个基于DirectX 11的渲染器插件。
我从3ds max获得实际的视口矩阵,在反转后看起来: [Rx Ry Rz] [Ux Uy Uz] [Dx Dy Dz] [Px Py Pz]
我将此视图矩阵应用于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天都搞清楚了......
答案 0 :(得分:0)
我终于找到了解决方案......
首先,我从3ds max matrix中获取Up,Direction和Position并手动创建 视图矩阵但使用:D3DXMatrixLookAtRH和D3DXMatrixPerspectiveFovRH(用于投影矩阵)而不是D3DXMatrixPerspectiveFovLH和D3DXMatrixLookAtLH 这解决了大多数问题...
然后,我注意到在平移相机时没有更新3ds max矩阵(只更新位置)所以,为了查看视图矩阵中的矢量,我使用了“位置方向”......