glm сочетает вращение и перемещение

У меня есть объект, который я сначала хочу повернуть (о его собственном центре), а затем перевести его в какой-то момент. У меня есть glm::quat, который содержит вращение, и glm::vec3, который содержит точку, в которую его нужно перевести.

glm::vec3 position;
glm::quat orientation;
glm::mat4 modelmatrix; <-- want to combine them both in here

modelmatrix = glm::translate(glm::toMat4(orientation),position);

Затем в моей функции рендеринга я делаю.

pvm = projectionMatrix*viewMatrix*modelmatrix;
glUniformMatrix4fv(pvmMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(pvm));

..и визуализировать...

К сожалению, объект просто вращается вокруг начала координат, когда я применяю вращение (чем дальше "позиция" от начала координат, тем больше орбита).

Когда я претендую только на эту должность, все нормально. Когда я применяю только вращение, он остается в начале координат и вращается вокруг своего центра (как и ожидалось). Так почему же это странно, когда я применяю их оба? Я пропустил что-то основное?

14
задан genpfault 20 June 2019 в 13:10
поделиться