Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sdk DirectX 11中的视图矩阵-奇怪变换_Sdk_Directx 11_3dsmax_3ds - Fatal编程技术网

Sdk DirectX 11中的视图矩阵-奇怪变换

Sdk DirectX 11中的视图矩阵-奇怪变换,sdk,directx-11,3dsmax,3ds,Sdk,Directx 11,3dsmax,3ds,我正在为3ds max编写一个基于DirectX 11的渲染器插件 我从3ds max获得了实际的视口矩阵,在反转外观后: [Rx Ry Rz] [Ux Uy Uz] [Dx-Dy-Dz] [Px-Py-Pz] 其中R表示右侧,U表示向上,D表示id方向,P表示位置 我正在将此视图矩阵应用于DirectX (我基于rastertek教程:) 但是我使用的不是自己创建的视图矩阵,而是3ds max中的视图矩阵, 其结构基本相同: [Rx Ry Rz 0] [Ux Uy Uz 0] [Dx-Dy

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

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

  • 其中R表示右侧,U表示向上,D表示id方向,P表示位置
我正在将此视图矩阵应用于DirectX (我基于rastertek教程:) 但是我使用的不是自己创建的视图矩阵,而是3ds max中的视图矩阵, 其结构基本相同: [Rx Ry Rz 0] [Ux Uy Uz 0] [Dx-Dy-Dz 0] [Px-Py-Pz-1]

起初,一切似乎都正常,因为“最大视口”中的视图和DirectX窗口中的渲染视图看起来几乎相同。但是“最大视口”和“DirectX”窗口中的变换不同。看起来是这样的:当我在max中移动摄影机位置时,DirectX中的摄影机目标在移动,而当我在max中移动摄影机目标(或旋转摄影机)时,DirectX中的摄影机位置在移动

谢谢你的帮助。。。
我三天都想不出来…

我终于找到了解决办法

首先,我从3ds max matrix中选择方向和位置并手动创建 视图矩阵,但使用:D3DXMatrixLookAtRH和D3DXMatrixPerspectiveFovRH(用于投影矩阵)而不是D3DXMatrixPerspectiveFovLH和D3DXMatrixLookAtLH 解决了大部分问题

然后,我注意到在平移摄影机时3ds max矩阵没有更新(仅更新了位置),因此,对于查看矩阵中的向量,我使用了“位置方向”