openGL — вращение над и под объектом, используя gluLookAt

У меня есть куб в открытом GL. У меня есть куб, вращающийся путем умножения на матрицу вращения. У меня также есть камера, вращающаяся вокруг куба по оси x, используя gluLookAt, как вы можете видеть ниже.

    case 'j':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle -= 0.1;
break;
case'l':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle += 0.1;
break;

где

gluLookAt( eyeX, eyeY, eyeZ, centerX, centerY, centerZ, 0.0, 1.0, 0.0);

Я борюсь с тем, чтобы камера вращалась выше и ниже куба, обводя его по оси Y.

1

Решение

Чтобы камера вращалась вокруг объекта

  • вычесть объект мира поз. с камеры мира поз.,

    cam_pos_os = cam_pos_ws — object_pos_ws

  • поверните вектор, указывая на cam_pos_os, как вы делаете это в мировом пространстве в вашем коде

  • добавить объект мира поз. снова к камере поз. в объектном пространстве,

    cam_pos_ws = cam_pos_os + object_pos_ws

0

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

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

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