在 HLSL 中有很多矩阵乘法,虽然我了解如何以及在何处使用它们,但我不确定它们是如何导出的或它们的实际目标是什么。
所以我想知道是否有在线资源可以解释这一点,我特别好奇将世界矩阵乘以视图矩阵以及世界+视图矩阵乘以投影矩阵背后的目的是什么。
您可以从数学角度获得一些信息这篇维基百科文章 http://en.wikipedia.org/wiki/3D_projection or on msdn http://msdn.microsoft.com/en-us/library/bb206260(VS.85).aspx.
本质上,当您将 3D 模型渲染到屏幕上时,您会从分散在 3D 空间中的简单顶点集合开始。这些顶点都有自己的位置,用“物体空间也就是说,它们通常具有在正在渲染的场景中没有任何意义的坐标,而仅表达同一模型的一个顶点与另一个顶点之间的关系。
例如,模型顶点的位置只能在 -1 到 1 的范围内(或类似的值,这取决于模型的创建方式)。
为了将模型渲染到正确的位置,您必须缩放、旋转并将其平移到场景中的“真实”位置。您要移动到的这个位置用“世界空间“坐标也表达了场景中顶点之间的真实关系。为此,您只需将每个顶点的位置与其相乘即可World矩阵。必须创建此矩阵以包含您需要应用的平移/旋转/缩放参数,以便使对象出现在场景中的正确位置。
此时(将所有模型的所有顶点与世界矩阵相乘后)您的顶点以世界坐标表示,但您仍然无法正确渲染它们,因为它们的位置是not相对于您的“视图”(即您的相机)。因此,这次您使用视图矩阵来乘以所有内容,该矩阵反映了渲染场景的视点的位置和方向。
所有顶点现在都处于正确的位置,但为了模拟看法 http://en.wikipedia.org/wiki/Perspective_(graphical)您仍然需要将所有内容与投影矩阵相乘。最后的乘法确定顶点的位置如何根据距相机的距离而变化。
现在最后是所有顶点,从它们在“中的位置”开始物体空间”,已移动到屏幕上的最终位置,在那里它们将被渲染、光栅化然后呈现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)