OpenGL坐标系

六大坐标系

1,物体或模型坐标系(Object or model coordinates);
2,世界坐标系(World coordinates)
3,眼坐标或相机坐标(Eye (or Camera) coordinates)
4,裁剪坐标系(Clip coordinates)
5,标准设备坐标系(Normalized device coordinates)
6,屏幕坐标系(Window (or screen) coordinates)
7. 视口坐标系(ViewPort coordinates)
8. 纹理坐标系(Texture coordinates)
9. 齐次坐标(Homogeneous Coordinates)

转换流程

coor-transfrom

常用矩阵

ModelMatrix

将模型坐标变换到WorldMatrix的Matrix

ViewMatrix

将World坐标系下的坐标转换到Camera坐标系

ModelViewMatrix

模型视图矩阵是视图变换矩阵与模型变换矩阵相乘的结果。

ProjectionMatrix

投影矩阵将视图坐标系中的顶点转化到平面上。

MVP:ModelViewProjectionMatrix

模型视图投影矩阵 = 投影矩阵 × 视图矩阵 × 模型矩阵

顶点坐标乘以该矩阵就直接获得其在规范立方体中的坐标了。这个矩阵通常作为一个整体出现在着色器中:

1
2
3
4
5
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0);
}

NormalMatrix

法线矩阵:与自己的共轭转置矩阵满足交换律的复系数方块矩阵

这是一个三维矩阵:

1
2
uniform mat3 NormalMatrix;

设计经验

在openGL中,每一个GameObject上面都会有一个Transform,用来记录这个Object的position,rotation和scale.

资料

https://blog.csdn.net/aoxuestudy/article/details/109923749