У меня есть объект, который я сначала хочу повернуть (о его собственном центре), а затем перевести его в какой-то момент. У меня есть 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));
..и визуализировать...
К сожалению, объект просто вращается вокруг начала координат, когда я применяю вращение (чем дальше "позиция" от начала координат, тем больше орбита).
Когда я претендую только на эту должность, все нормально. Когда я применяю только вращение, он остается в начале координат и вращается вокруг своего центра (как и ожидалось). Так почему же это странно, когда я применяю их оба? Я пропустил что-то основное?