Привет, у меня странная проблема с движением мыши в openGL. Вот мой код для перемещения камеры с моей мышиКлюч для мыши Opengl (gluLookAt)
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() является малой функцией я создал, чтобы преобразовать координаты мыши в рады.
С помощью этого кода я могу перемещать камеру, как бы то ни было, но если я попытаюсь пройти весь путь, когда я достигаю около 45 градусов, он вращается 1-2 раза вокруг оси х и затем продолжает увеличивать ось Y , Я не могу понять, если я сделал что-то не так, поэтому, если кто-то мог помочь, я был бы признателен.
Я думаю, умножив результат соз() с convertToRads для х значение не является правильным. (используйте простой случай, yaw = 45 и pitch = 45 градусов и посмотрите, какой результат. –
Вы, возможно, хотели сказать мне, что я потерял паратерхию, я думаю: P спасибо за помощь – Fotis
да :-) ... не было достаточно для ответа :-)) –