Перевод объекта через экран программируемого конвейера

Мне трудно понять, как перевести объект по экрану с помощью клавиш со стрелками. В настоящее время у меня нет проблем с перемещением камеры, но я не могу обернуться вокруг, делая объект двигаться вместо камеры.

Вот что я делаю, чтобы вычислить Посмотреть матрицу

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;

0

Решение

Так что я решил проблему с помощью @ 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;
0

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

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

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