我有一個在OpenGL ES場景中旋轉「相機」的傳感器派生的四元數。 此外,我將這個四元數的倒數應用於場景中的某些對象,所以它們「面對」「相機」 - 這可以按預期工作。 問題是,我需要取消這些對象在Z軸上的旋轉。 我如何想出一個在Z分量內沒有旋轉的四元數?如何否定任何單一軸上的GLM四元數旋轉?
我的測試: 我試圖提取歐拉角,創建一個否定四元數,並建立了旋轉矩陣從兩個四元數相乘這些對象 - 結果是不正確的。
glm::quat rMQ = cam->getCameraQuaternion();// retrieve camera quat
glm::vec3 a = glm::eulerAngles((rMQ))* 3.14159f/180.f; // Euler angle set derived
glm::quat rMZ = glm::angleAxis(-a.z, vec3(0.0f, 0.0f, 1.0f)); // negating quaternion
glm::mat4 fM = glm::inverse(glm::mat4_cast(rMQ*rMZ)); //final mat4 for GL rotation