У меня есть куб в открытом GL. У меня есть куб, вращающийся путем умножения на матрицу вращения. У меня также есть камера, вращающаяся вокруг куба по оси x, используя gluLookAt, как вы можете видеть ниже.openGL - Вращение выше и ниже объекта с использованием 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);
То, что я борюсь с становится камера вращаться выше и ниже куба кружит его на оси у.
Спасибо. Я полностью понимаю, что вы имеете в виду, что я просто испытываю трудности с пониманием с точки зрения openGL и C++. Вы еще раз рекомендуете glTranslate glRotate и glTranslate? Как мне получить мировое положение и положение камеры? –
Cam pos в мировых коордах - это то, что вы вводите как eyeX, Y, Z в gluLookAt. Вы можете вращать и переводить любым способом, который вы хотите (правильность указана); но я могу порекомендовать вам пропустить устаревшее вещество «glTranform/Rotate/Scale» и перейти на современный шейдерный/буферный/унифицированный GL и использовать [glm] (http://glm.g-truc.net/0.9.5/ index.html) для оставшейся процессорной алгебры. –