OpenGL ESシーン内で「カメラ」を回転させるセンサーから派生したクォータニオンがあります。また、このクォータニオンの逆数をシーン内の特定のオブジェクトに適用することで、オブジェクトが「カメラ」に「向き合っている」ようになりました。これは期待どおりに機能します。問題は、これらのオブジェクトの Z 軸の回転を無効にする必要があることです。Z コンポーネント内で回転しないクォータニオンをどのように考え出すのですか?
私のテスト: オイラー角を抽出し、否定四元数を作成し、2 つの四元数の乗算からこれらのオブジェクトの回転行列を作成しようとしましたが、結果は正しくありません。
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