Мышь Opengl Проблема с камерой (gluLookAt)

Здравствуйте, у меня странная проблема с движением мыши в 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 градусов, он поворачивается 1-2 раза вокруг оси x, а затем продолжает увеличивать ось y. Я не могу понять, сделал ли я что-то не так, поэтому, если кто-то мог помочь, я был бы признателен.

2

Решение

Похоже, вы потеряли смысл

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

вместо:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]