在计算机图形学中,物体从模型空间到屏幕空间的坐标变换是一个多步骤的过程,涉及多个坐标系的转换。
一、数学变换
1. 模型坐标 → 世界坐标(Model Space → World Space)
目的:将物体从自身的局部坐标系(模型空间)转换到全局的世界坐标系。
变换矩阵:模型矩阵(Model Matrix,简称 M_model
)
操作:
-
通过平移(Translation)、旋转(Rotation)、缩放(Scale)等变换组合,将模型顶点从局部坐标转换为世界坐标。
-
例如:一个顶点在模型坐标系中的坐标为
(x_model, y_model, z_model)
,变换后为世界坐标(x_world, y_world, z_world)
。
公式:
、
2. 世界坐标 → 视图坐标(World Space → View Space)
目的:将世界坐标系中的点转换到摄像机的视角坐标系(视图空间)。
变换矩阵:视图矩阵(View Matrix,简称 M_view
)
操作:
-
通过摄像机的位置、朝向(LookAt)和上方向(Up Vector)构建视图矩阵。
-
本质是将世界坐标系原点移动到摄像机位置,并旋转坐标系使其与摄像机对齐。
公式:
3. 视图坐标 → 裁剪坐标(View Space → Clip Space)
目的:将视图空间中的点转换到裁剪空间(齐次坐标),便于后续的透视除法。
变换矩阵:投影矩阵(Projection Matrix,简称 M_proj
)
操作:
-
透视投影(Perspective Projection)或正交投影(Orthographic Projection)将视锥体映射到标准立方体(NDC,范围为
[-1, 1]
)。 -
透视投影会引入透视除法(
w
分量存储深度信息)。
公式:
4. 裁剪坐标 → 标准化设备坐标(Clip Space → NDC)
目的:通过透视除法将齐次坐标转换为标准化设备坐标(NDC)。
操作:
-
将裁剪坐标的
(x, y, z)
分量除以w
分量(透视除法)。 -
NDC 的范围为
[-1, 1]
,超出范围的顶点会被裁剪。
公式:
5. NDC → 屏幕坐标(NDC → Screen Space)
目的:将 NDC 映射到屏幕像素坐标。
操作:
-
通过视口变换(View