我有一个对象,我首先要旋转(围绕它自己的中心),然后将其转换到某个点。我有一个 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));
..并渲染...
不幸的是,当我应用旋转时,对象只是围绕原点运行(“位置”离原点越远,轨道越大)。
当我只申请这个职位时,它翻译得很好。当我仅应用旋转时,它会停留在原点并围绕其中心旋转(如预期的那样)。那么,当我同时应用它们时,为什么会变得很奇怪呢?我错过了一些基本的东西吗?