2017-10-10 18 views
0

私のオブジェクトのモデル行列からグローバルy軸の周りの回転を抽出する方法を見つけることができません。回転行列からy軸に関する回転を取得

私はオブジェクトの現在のモデル行列をglm :: mat4として持っており、y軸を中心に回転を取り消す必要があります。

glmには何の機能もありますか?

答えて

0

行列の回転部分をオイラー角に変換する必要があります。それは簡単な操作ではありません。私は "glm"には関数があるのか​​どうか分かりませんが、4x4行列の回転部分をX、Y、Zオイラー角に変換するコード(他の方法もあります)があります:

function Matrix4ToEuler(OutEuler, InMatrix4) 
{ 
    let cy = Math.sqrt(InMatrix4[0] * InMatrix4[0] + InMatrix4[1] * InMatrix4[1]); 

    if(cy > 0.001) { 

    OutEuler.x = Math.atan2(InMatrix4[6], InMatrix4[10]); 
    OutEuler.y = Math.atan2(-InMatrix4[2], cy); 
    OutEuler.z = Math.atan2(InMatrix4[1], InMatrix4[0]); 

    } else { 

    OutEuler.x = Math.atan2(-InMatrix4[9], InMatrix4[5]); 
    OutEuler.y = Math.atan2(-InMatrix4[2], cy); 
    OutEuler.z = 0; 

    } 
} 
関連する問題