OpenGL模型矩阵——旋转、缩放、平移乘法前后顺序
(2015-08-31 14:25:52)分类: OpenGL |
参考:http://stackoverflow.com/questions/12838375/model-matrix-in-glm
OpenGL中的乘法顺序:
P * V * M * 3DPoint
M中包含旋转、缩放、平移等操作,记住这些操作需要按顺序,因为矩阵乘法不满足交换律,具体的可以再百度一下;
再回顾上述的OpenGL的乘法顺序,这里所写的只是OpenGL编程时候的顺序,OpenGL是左乘的,所以实际对应的是:
3DPoint * M * V * P
按照这个顺序去看,在M中包含的模型操作,距离3DPoint越近的操作先执行;
例如:理想状态下,一个操作需要通过 缩放、旋转最后平移达到目的,那么
推导出:
3DPoint * M缩放 * M旋转 * M平移 * V * P//这个是实际操作顺序
但在OpenGL中写出来就应该相反:
P * V * M平移 * M旋转 * M缩放 * 3DPoint//才能得到正确结果
后一篇:向量点积与叉积的意义