这不是一个问题,但我很困惑什么三维空间对应什么。我习惯于听模型,视图,投影空间,但在我的工作中,他们使用世界,眼睛,投影。我没有意识到“世界”和“眼睛”是模型和视图的同义词,所以如果有人对此有任何混淆的话,我会发现下面的说明是有帮助的(希望它能帮助您)。
Local :这些坐标构成了渲染程序中的3D模型,比如3DSMAX或任何其他。它定义了三维模型本身的顶点空间。
模型/世界空间:将局部空间坐标乘以模型/世界矩阵将它们带入模型/世界空间。模型/世界空间是3D世界,正如我们想象的那样,它没有考虑任何视角。
视图/眼空间:将模型/世界空间坐标乘以视图/眼睛矩阵将它们带入视图/眼睛空间。这是坐标放置在屏幕上的位置,与所使用的透视图有偏差。因此,如果使用透视投影,这将使所有的坐标看起来都有深度。
投影矩阵:将视图/眼睛空间坐标乘以投影矩阵将获取三维透视点,并将它们正确映射到2D视图端口(也称为屏幕)。
视图/齐次空间:在乘以投影矩阵后,需要将点映射到“真实平面”。这本质上是一个规范化,我们取每一个x,y,z坐标,除以它的w分量。还调整坐标,将原点从屏幕中心移动到左上角。
请随时提供建设性的批评,我愿意接受任何建议。以下是我使用http://antongerdelan.net/opengl/raycasting.html的一些附加信息
发布于 2014-02-21 15:36:16
这只是一个想法,但您可以添加最后一个阶段"Viewport“(或类似的内容)。
你在投影矩阵阶段就暗示了这一点,但它是在投影矩阵之后应用于顶点的一个单独的变换,其中x、y和z坐标被它们的w分量除以,将它们从齐次坐标映射到“实平面”,坐标被调整为从屏幕中心到左上方移动(0,0),原点是原点。
https://stackoverflow.com/questions/21937255
复制相似问题