如何从模型视图矩阵中获取相机旋转矩阵

时间:2013-06-26 16:34:08

标签: opengl opengl-es matrix rotation

如果我有模型视图旋转矩阵(例如我也可以在glMultMatrixf(rtMatrix,0)中使用),那么如何计算虚拟摄像机周围的旋转。我认为转换位置t只是camPos = -1 * t但是当我围绕世界中心旋转时,如何围绕相机进行旋转(这是模型视图矩阵对吗?)

1 个答案:

答案 0 :(得分:2)

取模型视图矩阵的左上3×3子矩阵的逆:

                    -1
    / M00 M10 M20 \
O = | M01 M11 M21 |
    \ M02 M12 M22 /

完成。

由于InkBlend

的评论请求而更新代码示例
/* datenwolf's linmath.h, available at
 * https://github.com/datenwolf/linmath.h
 */
#include <linmath.h>

void view_orientation(mat4x4 O, mat4x4 MV)
{
    mat4x4_dup(O, MV);
    O[0][3] = O[1][3] = O[2][3] =
    O[3][0] = O[3][1] = O[3][2] = 0.;
    O[3][3] = 1;
    mat4x4_invert(O, O);
}