我可以了解三者之间的区别吗?一个很好的例子也会加起来。
我可以了解三者之间的区别吗?一个很好的例子也会加起来。
Answers:
世界坐标是您游戏世界的基石。最终直接或通过节点层次结构在世界空间中指定所有对象的3D位置。地面,建筑物,树木和其他固定物体将固定在世界空间中。游戏玩法的计算和物理将在世界空间中进行(如果世界很大,则可能出于精确目的而进行一些局部重新定位)。通常将世界坐标轴表示为罗盘方向,例如X =东,Y =北,Z =上。
局部坐标附加到一个对象(每个对象都有一个局部坐标空间)。轴可能表示对对象有意义的东西,例如对于具有固有方向的对象(例如角色,车辆,枪支等),X =向前,Y =左侧,Z =向上。随着物体的移动,局部空间和世界空间之间的关系(由转换矩阵表示)将发生变化。例如,如果您将汽车上下翻转,则其局部Z轴(局部空间中的“向上”)现在将指向世界空间中的“向下”。
相机或视图坐标是附加到相机的局部坐标。这仍然是3D坐标系,没有任何投影或任何东西,但轴对齐以匹配屏幕方向:通常X =右,Y =向上,Z =向后。从世界到视图空间的转换通常称为“视图矩阵”。
剪辑空间坐标是顶点着色器输出的坐标:已应用投影矩阵的坐标,而不是透视图划分的坐标。这是一个4D(同质)空间。(世界,局部和视图空间是3D,隐含w =1。)之所以这样命名,是因为这是视图视锥截断和剔除(至少在概念上)发生的空间。
归一化的设备坐标(通常也称为“屏幕空间”,尽管该术语有点宽松)是将透视图划分应用于剪辑空间坐标后得到的。3D坐标现在代表屏幕上点的2D位置,其中X和Y在[-1,1]中,以及深度在深度缓冲区范围内,Z在[0,1]中对于D3D或[-1,1 OpenGL。轴的方向为X =右,Y =上,Z可以向前或向后,具体取决于深度缓冲区的配置。
设备坐标是渲染目标内的2D像素坐标,其中(0,0)在左上角,X =右,Y =向下。通过将视口变换应用于规范化的设备坐标,可以得出设备坐标。视口控制图像在渲染目标中显示的像素偏移和分辨率。需要注意的一件事是设备坐标不是整数值。它们不是像素索引。它们是一个连续的2D坐标系,使用像素大小的单位,但是分数(子像素)值是完全有效的。像素中心在此坐标系中位于0.5个偏移处(例如0.5、1.5、2.5等)。