Im делает упражнения в конце этого урока: LinkСоздать камеру, которая вращается вокруг объекта OpenGL C++
Однако Im застрял на «Создать камеру, которая вращается вокруг объекта»
(position = ObjectCenter + (radius * cos(time), height, radius * sin(time)));
Я использовал приведенный выше код, подаваемый создать следующий поворот
GLfloat radius = 10.0f;
position = glm::vec3(0.0f,0.0f,0.0f) + glm::vec3(radius * cos(glfwGetTime()), 0.0f, radius * sin(glfwGetTime()));
Используя эту сцену, она вращается вокруг (0,0,0) на расстоянии 10, что, по моему мнению, является центром куба, однако это не так, поэтому куб медленно мигает мимо окна так часто, как поворачивается сцена.
Как я могу найти центр объекта? Я не понимаю из кода, когда я рисую куб, где я говорю, чтобы он центрировал его.
Для справки начальное положение VEC является
glm::vec3 position = glm::vec3(0, 0, 5);
Вы делаете глобальное вращение вместо локального вращения. Вам необходимо переместить камеру в локальное пространство относительно проигрывателя, умножив камеру на обратную позицию игроков. Затем примените свое вращение. – user2970916
или поверните объект на месте –
Редактировать: позиция игрока ==> локальная матрица игрока – user2970916