坐标

1. 局部坐标(Local Space)

  • 定义:局部坐标也称为对象坐标,是相对于对象自身的坐标系。它描述了模型的顶点在模型自身坐标系中的位置。
  • 应用:在局部坐标系中,模型的原点通常位于模型的中心或某个重要部分。例如,一个立方体的顶点坐标可能是(-0.5, -0.5, -0.5)到(0.5, 0.5, 0.5),假设立方体的中心为原点。
  • 转换:将局部坐标转换到世界坐标需要使用模型矩阵,它包括平移、旋转和缩放等变换。

2. 世界坐标(World Space)

  • 定义:世界坐标是整个3D场景的全局坐标系。它描述了对象在整个场景中的位置和方向。
  • 应用:当多个对象放置在同一场景中时,它们的位置、大小和方向都是在世界坐标系中定义的。例如,一棵树的根可能在(10, 0, 20)的世界坐标位置,而另一棵树可能在(15, 0, 25)。
  • 转换:将世界坐标转换到视图坐标需要使用视图矩阵,这通常是通过相机的位置和方向确定的。

3. 视图坐标(View Space)

  • 定义:视图坐标也称为相机坐标,是从相机视角观察到的对象位置。它描述了物体相对于相机的距离和方向。
  • 应用:在视图坐标系中,相机会被认为是原点,场景中的所有对象都会根据相机的位置和方向进行转换。相机前方的物体在负z方向,越远的物体z值越小。
  • 转换:将视图坐标转换到裁剪坐标需要使用投影矩阵,这决定了相机的视角、远近平面等。

4. 裁剪坐标(Clip Space)

  • 定义:裁剪坐标是在应用投影矩阵之后得到的坐标。这个坐标系是为了准备将3D坐标转换为2D屏幕坐标。
  • 应用:裁剪坐标系中,所有可见的对象坐标都在一个标准化的范围内(通常是[-1, 1]的范围)。这个范围之外的对象会被裁剪,不会被渲染到最终的图像中。
  • 转换:将裁剪坐标除以w分量(齐次坐标的第四个分量),可以得到规范化设备坐标(NDC),然后映射到屏幕坐标。

5. 切线空间(Tangent Space)

  • 定义:切线空间是一个相对于表面定义的局部坐标系。它的原点是一个表面上的点,切线空间的三个轴分别是切线、双切线和法线。
  • 应用:切线空间用于处理法线贴图等操作。法线贴图中的每个法线向量通常定义在切线空间中,可以用于细化光照效果,使表面看起来更加细致和真实。
  • 转换:将切线空间的向量转换到世界坐标或视图坐标时,需要使用从切线空间到目标空间的转换矩阵。

坐标空间之间的转换关系

  1. 局部坐标到世界坐标:通过模型矩阵进行转换。
  2. 世界坐标到视图坐标:通过视图矩阵进行转换。
  3. 视图坐标到裁剪坐标:通过投影矩阵进行转换。
  4. 裁剪坐标到屏幕坐标:通过透视除法和视口变换进行转换。
  5. 切线空间到其他空间:使用切线矩阵(由切线、双切线和法线构成的3×3矩阵)进行转换。

滚动至顶部