2017-06-27 106 views
0

我有一個對象可以在所有的軸上旋轉,我的問題是,如果你旋轉對象的Y軸(例如90°),Z軸上的旋轉是不正確的,因爲它旋轉在X相反,x軸上的旋轉繼續完美運行,如果y軸設置爲0°,則z軸的旋轉恢復正常。Lwjgl旋轉不起作用

旋轉和平移目標i使用以下代碼:

public static Matrix4f createTransformationMatrix(Vector3f translation , float rx, float ry, float rz , float scale){ 
    Matrix4f matrix = new Matrix4f(); 
    matrix.setIdentity(); 
    Matrix4f.translate(translation,matrix,matrix); 
    Matrix4f.rotate((float) Math.toRadians(rx),new Vector3f(1, 0, 0) , matrix,matrix); 
    Matrix4f.rotate((float) Math.toRadians(ry),new Vector3f(0, 1, 0) , matrix,matrix); 
    Matrix4f.rotate((float) Math.toRadians(rz),new Vector3f(0, 0, 1) , matrix,matrix); 
    Matrix4f.scale(new Vector3f(scale, scale, scale), matrix, matrix); 
    return matrix;} 

回答

0

即在歐拉角旋轉的固有奇點,稱爲萬向鎖。使用四元的旋轉代替(可指定任意軸)。

+0

我試圖生成四元數矩陣,但結果往往是很可能我錯過了實現 –

+0

@MaurizioTerreni你是什麼意思「小姐」的實施? – meowgoesthedog

+0

https://github.com/maurizioterreni/OpenGL/blob/master/src/com/unifi/ing/engine/utils/Maths.java我嘗試實現四元數(看第34行),但問題是一樣的。也許是不正確的我實現 –