我目前正在试图弄清楚四元数在glm中是如何相乘和连接的,但是我发现的每一个线程都只提到一个四元数的旋转.基本上,我如何组合四元数,使所有的旋转连接在一起?例如:
glm::quat quaternions[4]; // how to merge all 4 quaternions?到目前为止,我已经尝试了两种方法:
// approach 1:
glm::quat quaternions[4];
glm::quat q = glm::quat(glm::vec3(0));
q *= quaternions[0];
q *= quaternions[1];
q *= quaternions[2];
q *= quaternions[2];
glm::mat4 matrix = glm::toMat4(q);
// approach 2:
glm::quat quaternions[4];
glm::mat4 matrix = glm::mat4(1.0f);
matrix = matrix * glm::toMat4(quaternions[0]);
matrix = matrix * glm::toMat4(quaternions[1]);
matrix = matrix * glm::toMat4(quaternions[2]);
matrix = matrix * glm::toMat4(quaternions[2]);这些方法似乎都没有给我带来我期待的结果。
编辑:我应该补充一下,我试图用assimp和glm来剥掉一个collada模型。方法1和方法2给出了我正在寻找的确切解决方案,因此两者都应该有效。
发布于 2016-04-23 01:54:04
经过3天的反复试验,我终于明白了到底是怎么回事。结果发现我的一些骨头在搅拌机里“滚”了一下,把事情搞砸了。倒立的骨头在我的网眼里也是个问题。因此,对于任何对assimp加载的动画有问题的人:
所以我的四元数密码没什么问题..。
https://stackoverflow.com/questions/36720821
复制相似问题