gluLookAt вопросы - как сделать кривое движение?

Таким образом, используя клавиши «влево», «вправо», «вверх» и «вниз», мне нужно добиться этой анимации вероятно, используя 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);

Почему-то мои клавиши вверх и вниз не делают того, что должны делать, когда элементы переводятся вправо. Я думаю, что я на правильном пути, но я работаю над этим два дня и не могу решить эту проблему.


person me995    schedule 16.05.2020    source источник
comment
Эталонная анимация тоже содержит движение камеры, не так ли?   -  person robinsax    schedule 17.05.2020
comment
Я верю, что да, но нам не дали никаких конкретных инструкций, только эту гифку, чтобы воспроизвести это.   -  person me995    schedule 17.05.2020


Ответы (1)


Цель взгляда, кажется, не находится в центре тора. Вроде бы на оси симметрии, но впереди тора. Следовательно, аргумент centerZ для gluLookAt зависит от ez. Например:

gluLookAt(ex, ey, ez, 0.0, 0.0, ez-1.0, 0.0, 1.0, 0.0);
person Rabbid76    schedule 17.05.2020
comment
Это похоже на пример, но мне все равно не удалось заставить его двигаться точно так же, как на гифке. Я сдаюсь, что бы я ни делал, это не помогло. Он просто не делает тех крошечных движений, которые есть в анимации на гифке. Спасибо за вашу помощь в любом случае, это очень ценно, я узнал кое-что новое. - person me995; 17.05.2020