Opengl鼠标相机问题(gluLookAt)

Opengl mouse Camera issue (gluLookAt)

本文关键字:gluLookAt 问题 鼠标 相机 Opengl      更新时间:2023-10-16

你好,我在openGL中的鼠标移动出现了一个奇怪的问题。这是我用鼠标移动相机的代码

void camera(int x, int y)
{
    GLfloat xoff = x- lastX;
    GLfloat yoff = lastY - y; // Reversed since y-coordinates range from bottom to top
    lastX = x;
    lastY = y;
    GLfloat sensitivity = 0.5f;
    xoff *= sensitivity;
    yoff *= sensitivity;
    yaw += xoff;                // yaw is x
    pitch += yoff;              // pitch is y
    // Limit up and down camera movement to 90 degrees
    if (pitch > 89.0)
        pitch = 89.0;
    if (pitch < -89.0)
        pitch = -89.0;
    // Update camera position and viewing angle
    Front.x = cos(convertToRads(yaw) * cos(convertToRads(pitch)));
    Front.y = sin(convertToRads(pitch));
    Front.z = sin(convertToRads(yaw)) * cos(convertToRads(pitch));
}

convertToRads()是我创建的一个小函数,用于将鼠标坐标转换为rads。

有了这个代码,我可以随心所欲地移动我的相机,但如果我试图在达到45度左右时一直向上移动,它会围绕x轴旋转1-2次,然后继续增加y轴。我不明白我是否做错了什么,所以如果有人能帮我,我将不胜感激。

你似乎放错了一个副题:

Front.x = cos(convertToRads(yaw) * cos(convertToRads(pitch)));

而不是:

Front.x = cos(convertToRads(yaw)) * cos(convertToRads(pitch));