Как изменить центр вращения в OpenGL - PullRequest
4 голосов
/ 15 июля 2009

У меня есть 3D-модель (OpenGL ES 1.1 iPhone SDK v3.0) , которая несколько сложна (, т.е. тысячи вершин и граней ), и я хотел бы повернуть это модель вокруг оси Y в или около центра модели. Проблема в том, что glRotate вращает мою модель вокруг точки в / около центра одного из ее нижних краев , а НЕ около центра модели . Представьте себе машину, едущую очень круто по световому столбу, и это в основном то, что у меня есть. Я хочу, чтобы автомобиль был насажен на фонарный столб и вращался вокруг него. (Некоторые источники ниже)

   // BLUE BLOCK----------------------------------------------
    glPushMatrix();
    {
        glTranslatef(blueLocation[0], blueLocation[1], blueLocation[2]);
        glRotatef(blueRotAngle, 0.0, 0.0, 1.0);
        ...

ВОПРОС:
Есть ли ЛЕГКИЙ способ изменить центр вращения в OpenGL?

Ответы [ 3 ]

9 голосов
/ 15 июля 2009

Конечно. Переведите объект вниз. Затем поверните его.

1 голос
/ 19 июля 2009

Стоит помнить, что все операции в OpenGL выполняются относительно источника. Вы не можете «изменить центр вращения в OpenGL». Вы перемещаете мир относительно этого источника.

1 голос
/ 15 июля 2009

Вы должны использовать API модели, чтобы изменить модель происхождения. Если бы вы могли сказать, какой из них вы используете, возможно, я мог бы помочь еще немного.

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

...