矩阵乘法 - 视图/投影,世界/投影等

6
在HLSL中,有很多矩阵乘法。虽然我知道如何和在哪里使用它们,但我不确定它们是如何推导出来的或者它们的真正目的是什么。
因此,我想知道是否有在线资源可以解释这个问题。我特别想知道将世界矩阵乘以视图矩阵以及将世界+视图矩阵乘以投影矩阵背后的用途是什么。
2个回答

13
你可以从数学角度上看到一些有关于三维投影的信息,可参考维基百科或者MSDN
在将三维模型渲染到屏幕上时,需要先准备一个简单的三维空间中的顶点集合。这些顶点都有它们自己在“对象空间”中的位置。也就是说,它们通常具有在正在渲染的场景中没有意义的坐标,而只是表示同一模型中一个顶点与另一个顶点之间的关系。例如,模型的顶点位置可能仅限于-1至1之间(或类似的范围,这取决于模型的创建方式)。
为了将模型渲染到正确的位置上,需要将其进行缩放、旋转和平移以适应场景中的“实际”位置。此位置使用“世界空间”坐标表示,也表示场景中顶点之间的实际关系。要做到这一点,只需将每个顶点的位置与其世界矩阵相乘即可。此矩阵必须包括需要应用的平移/旋转/缩放参数,以便对象在场景中出现在正确的位置。
此时(在使用世界矩阵将所有模型的所有顶点相乘之后),您的顶点已经用世界坐标表示了,但仍无法正确地渲染它们,因为它们的位置与“视图”(即相机)相关。所以,这一次您需要使用一个反映渲染场景时视点的位置和方向的视角矩阵来进行乘法运算。
现在,所有顶点都位于正确的位置上,但为了模拟透视,还需要将所有内容与一个投影矩阵相乘。这个最后的乘法决定了顶点的位置如何随着距离摄像机的远近而改变。

现在,所有顶点都从它们在“对象空间”中的位置移动到屏幕上的最终位置,这是它们将被呈现、光栅化和展示的地方。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接