2017-10-10 149 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; 

    } 
}