这不是一个问题,但我对3D空间对应的内容感到非常困惑。我习惯于听模型,视图,投影空间,但在我的工作中他们使用世界,眼睛,投影。我没有意识到World and Eye是模型和视图的同义词,所以如果有人对此有任何疑惑,我发现以下澄清帮助(希望它会对你有所帮助)。
局部空间:这些是在3Ds Max或任何其他渲染程序中构成3D模型的坐标。它定义了3D模型本身的顶点空间。
模型/世界空间:将模型/世界矩阵乘以局部空间坐标将它们带入模型/世界空间。模型/世界空间是我们想象的3D世界,没有考虑任何视角。
视图/眼睛空间:通过视图/眼睛矩阵乘以模型/世界空间坐标将它们带入视图/眼睛空间。这是坐标放置在偏离正在使用的视角的屏幕上的位置。因此,如果您使用透视投影,这将使所有坐标看起来都具有深度。
投影矩阵:通过投影矩阵乘以视图/眼睛空间坐标将获取3D透视点并将它们正确映射到2D视口(也称为屏幕)。
视口/均匀空间:在乘以投影矩阵后,您的点需要映射到“真实平面”。这基本上是一种规范化;我们取每个x,y,z坐标并将其除以w分量。还调整坐标以将原点从屏幕中心移动到左上角。
请随意提出建设性的批评,我愿意接受任何建议。以下是我使用的一些其他信息http://antongerdelan.net/opengl/raycasting.html
答案 0 :(得分:1)
就像一个想法,但你可以添加一个最后阶段“视口空间”(或类似的东西)。
你在Projection Matrix阶段暗示它,但是它是一个单独的变换应用于投影矩阵之后的顶点,其中x,y和z坐标除以它们的w分量以将它们映射到“真实平面” “,从齐次坐标,调整坐标以移动(0,0)原点,从屏幕中心到左上角。