Is the following correct, please? I wish to perform quaternion interpolation:
//myInterpolatedRotQuat = glm::mix(glm::quat(1.0f, pvAnimation->at(nFrameNo).vecRotation.x, pvAnimation->at(nFrameNo).vecRotation.y, pvAnimation->at(nFrameNo).vecRotation.z), glm::quat(1.0f, pvAnimation->at(nFrameNo + 1).vecRotation.x, pvAnimation->at(nFrameNo + 1).vecRotation.y, pvAnimation->at(nFrameNo + 1).vecRotation.z), fInterpolationTime);
glm::quat myXAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo).vecRotation.x, 1.0f, 0.0f, 0.0f);
glm::quat myYAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo).vecRotation.y, 0.0f, 1.0f, 0.0f);
glm::quat myZAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo).vecRotation.z, 0.0f, 0.0f, 1.0f);
glm::quat myAxisQuat = glm::gtc::quaternion::cross( myZAxisQuat, myYAxisQuat);
myAxisQuat = glm::gtc::quaternion::cross( myAxisQuat, myXAxisQuat);
glm::quat myNextXAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo + 1).vecRotation.x, 1.0f, 0.0f, 0.0f);
glm::quat myNextYAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo + 1).vecRotation.y, 0.0f, 1.0f, 0.0f);
glm::quat myNextZAxisQuat = glm::gtx::quaternion::angleAxis (pvAnimation->at(nFrameNo + 1).vecRotation.z, 0.0f, 0.0f, 1.0f);
glm::quat myNextAxisQuat = glm::gtc::quaternion::cross( myNextZAxisQuat, myNextYAxisQuat);
myNextAxisQuat = glm::gtc::quaternion::cross( myNextAxisQuat, myNextXAxisQuat);
myInterpolatedRotQuat = glm::mix(myAxisQuat, myNextAxisQuat, fInterpolationTime);
I use ZYX orientation multiplication order. The problem I have is, that
vecInterpolatedRot = glm::gtx::quaternion::eularAngles( myInterpolatedRotQuat) ;
does not contain interpolated Rotation values. In fact, the values do not change at all.
Thank you.