我尝试在旋转后翻译对象。我使用输入事件旋转对象,存储旋转的值并将其用于翻译。但是,对象会以错误的旋转进行转换。我不明白为什么。 这是我的程序的伪代码:
翻译:
for(int i = 0; i < numberObjects; i++)
objects.at(i) = glm::translate(glm::mat4(1.0f), newPosition.at(i)) * glm::rotate(glm::mat4(1.0f), valueOfRotation, glm::vec3(0, 0, 1));
旋转:
rotation = glm::rotate(glm::mat4(1.0f), valueOfRotation, glm::vec3(0, 0, 1));
for(int i = 0; i < numberObjects; i++)
objects.at(i) = objects.at(i) * rotation;
翻译后的旋转效果非常好。有什么好主意吗?感谢
答案 0 :(得分:0)
好的,我终于找到了解决方案。
我使用glm :: decompose来提取旋转并使用它。 但我仍然不明白为什么
glm::translate(glm::mat4(1.0f), newPosition.at(i)) * glm::rotate(glm::mat4(1.0f), valueOfRotation, glm::vec3(0, 0, 1));
没有人可以解释我吗?