關於Unity四元數相乘先后順序的問題


在unity中四元數和向量相乘可以變換旋轉。四元數之間相乘類似矩陣之間相乘的效果。

矩陣相乘的順序不可互換,只有特殊條件矩陣才可互換。四元數相乘類似,今天就因為這個問題掉進坑里了,記錄一下

 

問題大致是,有一個cube,它會看向左邊的板,用角軸旋轉,但我想要y軸看向它

Quaternion.AngleAxis(-90, Vector3.forward);

 

以下代碼就是沒有注意相乘順序導致的結果

var quat1 = Quaternion.AngleAxis(-90, Vector3.forward);
var quat2 = Quaternion.AngleAxis(Time.time * 180, referenceTransform.forward);
transform.rotation = quat1 * quat2;

 

修改后正確結果如下

transform.rotation = quat2 * quat1;

 

 

所以在處理四元數或者矩陣相乘操作時,注意順序,並且避免xxx*=quat這樣的操作,盡量用直觀寫法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM