Мне трудно понять, как перевести объект по экрану с помощью клавиш со стрелками. В настоящее время у меня нет проблем с перемещением камеры, но я не могу обернуться вокруг, делая объект двигаться вместо камеры.
Вот что я делаю, чтобы вычислить Посмотреть матрицу
ViewMatrix = glm::lookAt(
position, //camera position
position+direction, //look at origin
up //head up
);
где позиция а также направление являются glm::vec3
Так что вместо того, чтобы изменить положение объекта, я бы изменил матрицу моделей? или я бы сделал что-то с mvp
?
Модель матрицы в настоящее время остается на glm::mat4(1.0)
computeMatricesFromInputs(window,time); //function that handles input and computes viewMatrix
glm::mat4 projectionMatrix = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 100.0f);
glm::mat4 viewMatrix = getViewMatrix();
glm::mat4 modelMatrix = glm::mat4(1.0);
glm::mat4 MVP = projectionMatrix * viewMatrix * modelMatrix;
Так что я решил проблему с помощью @ j-p. То, что я хотел сделать, это переместить объект, поэтому я применил функцию glm translate()
к матрице модели. Для этого я перешел к своему файлу управления и создал функцию под названием
glm::mat4 getModelMatrix();
который вернул переменную glm::mat4 ModelMatrix
что я также объявил в заголовочном файле. Фактическая часть кода и перемещенный объект были примерно такими:
//If the the corresponding key is pressed...
ModelMatrix = glm::translate(ModelMatrix, glm::vec3(0.0f, 1.0f, 0.0f); //move y 1.0f
//else If..etc..
Затем, возвращаясь к моему основному циклу, окончательный код будет выглядеть так:
computeMatricesFromInputs(window,time); //function that handles input and computes viewMatrix
glm::mat4 projectionMatrix = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 100.0f);
glm::mat4 viewMatrix = getViewMatrix();
glm::mat4 modelMatrix = getModelMatrix();
glm::mat4 MVP = projectionMatrix * viewMatrix * modelMatrix;
Других решений пока нет …