opengles 矩阵计算
总的变换矩阵:
matrix = projection * view * model
模型矩阵:
modelMatrix=translateMatrix * scaleMatrix * rotateMatrix
视图矩阵:
viewMatrix=gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,
GLdouble centerx,GLdouble centery,GLdouble centerz,
GLdouble upx,GLdouble upy,GLdouble upz);
相机位置(eyex,eyey,eyez) 焦点(centerX,cneterY,centerZ) 相机头的朝向(upx,upY,upZ)
自转:修改modelMatrix的rotateMatrix
公转:viewMatrix = viewMatrix * rotateMatrix
法向量矩阵是模型视图矩阵的逆转置矩阵
normalMatrix = GLKMatrix3InvertAndTranspose(GLKMatrix4GetMatrix3(GLKMatrix4Multiply(viewMatrix, modelMatrix)))
GLKMatrix4GetMatrix3
==>a4=[
0 1 2 3;
4 5 6 7;
8 9 10 11;
12 13 14 15;
]
==>a3=[
0 1 2;
4 5 6;
8 9 10;
]
opengl是右乘的,逆推平移矩阵
不考虑视图矩阵和投影矩阵的情况下,我们手动计算的顺序
V' = V * model = V * (rotateMatrix * scaleMatrix * translateMatrix)=V * (rotateMatrix * scaleMatrix) * translateMatrix
模型矩阵----将物体坐标变换为世界坐标
视图矩阵----将世界坐标变换为眼睛坐标
投影矩阵----将眼睛坐标变换为裁剪坐标