0
我無法弄清楚如何從我的對象的模型矩陣中提取圍繞全局y軸的旋轉。從旋轉矩陣獲取有關y軸的旋轉
我有我的對象作爲glm :: mat4的當前模型矩陣,我需要取消圍繞y軸的旋轉。
glm中有沒有什麼功能我沒注意到?
我無法弄清楚如何從我的對象的模型矩陣中提取圍繞全局y軸的旋轉。從旋轉矩陣獲取有關y軸的旋轉
我有我的對象作爲glm :: mat4的當前模型矩陣,我需要取消圍繞y軸的旋轉。
glm中有沒有什麼功能我沒注意到?
您必須將矩陣的旋轉部分轉換爲歐拉角。這不是一個微不足道的操作。我不知道「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;
}
}