我有一个模型和一些助手立方体,它们位于它的轴上,每个轴上有三个用于转换,我用它们来围绕它的局部轴旋转模型。

我想让这些立方体围绕模型中心旋转,所以我把它们转换到模型中心,在相同的轴上以相同的角度旋转,然后把它们移回来。这是代码:
//Rotation around X axis
GLfloat theta=glm::radians(xoffset);
glm::quat Qx(glm::angleAxis(theta, glm::vec3(1.0f, 0.0f, 0.0f)));
glm::mat4 rotX = glm::mat4_cast(Qx);
pickedObject->Transform(rotX);//Multiply the model matrix by the transformation matrix
glm::vec3 op(pickedObject->getMatrix()[3]);//model position
for(TransformationHelper* h:pickedObject->GetTransformationHelpers()){//the small cubes
glm::mat4 m,it,t;
glm::vec3 hp(h->getMatrix()[3]);//the cube position
t=glm::translate(m,op);//m is a unit matrix
it=glm::translate(m,-op);
m=t*rotX*it;
h->Transform(m);
}结果是出乎意料的

更新:在更新翻译矩阵之后,我得到了以下结果:

https://stackoverflow.com/questions/53119907
复制相似问题