图形学中涉及到多个坐标空间,这些空间之间的变换是图形渲染中的核心部分。下面是一些常见的图形学空间及其变换顺序:
对象空间(Object Space):
- 这是模型的原始坐标空间,模型的顶点数据是在这个空间中定义的。
- 变换:通常通过模型变换(Model Transformation)来改变模型在对象空间中的位置、旋转和缩放。
世界空间(World Space):
- 模型在场景中的位置,旋转和缩放都是在世界空间中定义的。
- 变换:世界变换(World Transformation)。
观察空间(View Space 或 Camera Space):
- 这是从相机视角看到的场景。
- 变换:视图变换(View Transformation)或摄像机变换。
裁剪空间(Clip Space):
- 在这里进行透视除法,得到规范化设备坐标。
- 变换:透视变换(Perspective Transformation)。
规范化设备坐标空间(Normalized Device Coordinates,NDC):
- 所有的顶点坐标都被映射到[-1, 1]的范围内。
- 变换:规范化。
屏幕空间(Screen Space):
- 最后一步变换,将NDC坐标映射到屏幕像素坐标。
- 变换:视口变换(Viewport Transformation)。
变换的顺序通常是从对象空间开始,经过模型变换,然后是世界变换,接着是视图变换,透视变换,规范化,最后是视口变换。
在图形管线中,几何数据首先被转换到世界空间(World Space),然后到相机空间(Camera Space),接着进行投影变换,得到裁剪空间的坐标。这个裁剪空间的坐标在[-w, w]范围内,其中w是顶点的齐次坐标的w分量。
裁剪空间中的坐标之后会经过视口变换(Viewport Transformation),将其映射到屏幕空间,最终渲染到屏幕上。
在裁剪空间中,可以进行裁剪操作,例如剔除不在视锥体内部的顶点,这样可以提高渲染效率。
在计算裁剪空间坐标时,通常使用齐次坐标来表示顶点位置,这样可以简化透视除法的计算。透视除法将裁剪空间中的坐标转换为规范化设备坐标(Normalized Device Coordinates,NDC),其x、y和z坐标范围在[-1, 1]之间。
案例参考GAMES101 04 games101-变换(模型、视图、投影)-CSDN博客