3D Spaces (Model/World, View/Eye, Projection)
这不是一个问题,但我很困惑什么三维空间对应什么。我习惯于听模型,观察,投影空间,但在我的工作中,他们使用世界,眼睛,投影。我没有意识到世界和眼睛是模型和视图的同义词,所以如果有人对此有任何困惑,我发现下面的澄清有助于(希望它能帮助你)。
局部空间:这些是在渲染程序(如3dsmax或任何其他程序)中构成三维模型的坐标。它为三维模型本身定义顶点的空间。
模型/世界空间:将局部空间坐标乘以模型/世界矩阵,将其引入模型/世界空间。模型/世界空间是我们想象的三维世界,没有考虑任何透视。
视图/眼睛空间:将模型/世界空间坐标乘以视图/眼睛矩阵,将它们带入视图/眼睛空间。在这里,坐标被放置在屏幕上,偏离了正在使用的透视图。因此,如果使用透视投影,这将定位所有坐标,使其看起来具有深度。
投影矩阵:将视图/眼睛空间坐标乘以投影矩阵将获得三维透视点,并将其正确映射到二维视区(即屏幕)。
视区/均匀空间:乘以投影矩阵后,您的点需要映射到"真实平面"。这本质上是一个标准化;我们取每个x,y,z坐标,并除以它的w分量。坐标也会调整以将原点从屏幕中心移动到左上角。
请随时提出建设性的批评,我愿意接受任何建议。以下是我使用的一些附加信息:http://antongeredelan.net/opengl/raycasting.html
正如一个想法,但是你可以添加一个最后的阶段"视区空间"(或沿着这些线的东西)。
你在投影矩阵阶段暗示过它,但是它是一个单独的变换,应用于投影矩阵之后的顶点,在这个矩阵中x、y和z坐标被它们的w分量分割,从齐次坐标映射到"真实平面",坐标被调整到移动(0,0),原点,从屏幕在左上角。