转换建模矩阵
问题:
在 GLM 中,尽管可以轻松设置 ViewMatrix,但使用设置 ModelMatrix glm::lookAt 会产生不正确的对象位置和旋转。我们如何使用 glm::lookAt 将对象方向与相机定位对齐,还是需要创建自定义函数?
答案:
在计算机图形学中,应用了变换3D 空间中的对象以准确定位它们。此过程涉及三个主要变换矩阵:ModelMatrix、ViewMatrix 和 ProjectionMatrix。
模型坐标:
场景中的每个网格都有自己的本地空间,称为模型空间。顶点坐标在此空间内定义,模型矩阵定义对象在世界空间中的位置、方向和相对大小。
世界坐标:
世界空间是坐标放置多个物体的整个场景的系统。
视图空间:
视图空间是相对于观看视角定义的,具有视图的位置、视线,以及向上的方向。视图坐标系的逆矩阵是 ViewMatrix,将对象从世界空间转换到视图(眼睛)空间。
剪辑坐标:
剪辑空间坐标是同质的,使得场景的剪辑。如果一个点的 x、y 和 z 分量在由反转的 w 分量和齐次坐标的 w 分量定义的范围内,则该点位于裁剪空间中。
投影矩阵:
ProjectionMatrix 描述了从场景的 3D 点到视口的 2D 点的映射,将视图空间转换为剪辑空间。
标准化设备坐标:
透视划分变换剪辑将空间坐标转换为 (-1, -1, -1) 到 (1, 1, 1) 范围内的标准化设备坐标。
窗口坐标:
标准化设备坐标为线性映射到窗口坐标(屏幕坐标)和深度缓冲区的深度,定义视口和深度范围。
以上是为什么对 ModelMatrix 使用 glm::lookAt 会在 GLM 中产生不正确的对象定位和旋转?的详细内容。更多信息请关注PHP中文网其他相关文章!