Таким образом, используя клавиши «влево», «вправо», «вверх» и «вниз», мне нужно добиться этой анимации вероятно, используя gluLookAt
.
Я пробовал все, но я не могу заставить его двигаться именно так. Есть ли у вас какие-либо советы? Вот моя текущая функция для движения камеры.
void specialKeys(int key, int x, int y) {
switch (key) {
case GLUT_KEY_DOWN:
ex -= 0.04;
break;
case GLUT_KEY_UP:
ex += 0.04;
break;
case GLUT_KEY_LEFT:
ey += 0.05;
cy -= 0.05;
std::cout << ex << " " << cx << " " << uy << std::endl;
break;
case GLUT_KEY_RIGHT:
ey -= 0.05;
cy += 0.05;
std::cout << ex << " " << cx << " " << uy << std::endl;
break;
default:
break;
}
glutPostRedisplay();
}
Остальную часть кода можно найти в предыдущих вопросах Почему моя связанная сфера превращается в эллипсоид при переводе и изменении угла камеры? и Проблемы с анимацией - перевод, проекция OpenGL/C++.
my gluLookAt
is:
gluLookAt(ex + 0.0, ey + 0.0, ez*ex - 5.5, cx, cy, -1.0 + cz, -1.0, 0.0, 0.0);
Почему-то мои клавиши вверх и вниз не делают того, что должны делать, когда элементы переводятся вправо. Я думаю, что я на правильном пути, но я работаю над этим два дня и не могу решить эту проблему.