我一直在使用帶JOML的LWJGL作爲創建3D遊戲引擎的手段。 由於我一直鬆散地遵循Jeffrey的教程(YouTube),所以我遇到了一個問題,但我一直使用JOML庫而不是他創建的迷你數學庫。我已經做了變換類,它已經從傑弗裏的數學庫複製,並且我已經轉換爲使用JOML:JOML(帶LWJGL) - 從rx,ry和rz值獲取旋轉矩陣?
import org.joml.Matrix4f;
import org.joml.Vector3f;
public class Transform {
public static Matrix4f getPerspectiveProjection(float fov, int width, int height, float zNear, float zFar) {
return new Matrix4f().setPerspective(fov, width/height, zNear, zFar);
}
public static Matrix4f getTransformation(Vector3f translation, float rx, float ry, float rz, float scale) {
Matrix4f translationMatrix = new Matrix4f().setTranslation(translation);
// The first problem:
Matrix4f rotationMatrix = new Matrix4f().getRotation(rx, ry, rz);
Matrix4f scaleMatrix = new Matrix4f().initScale(scale);
return translationMatrix.mul(rotationMatrix.mul(scaleMatrix));
}
public static Matrix4f getViewMatrix(Camera camera) {
Vector3f pos = camera.getPosition();
Matrix4f translationMatrix = new Matrix4f().setTranslation(-pos.x, -pos.y, -pos.z);
Matrix4f rotationMatrix = new Matrix4f().initRotation(camera.getForward(), camera.getUp());
return rotationMatrix.mul(translationMatrix);
}
}
從JOML文檔,所有我能找到的是使用Matrix4f.getRotation與AxisAngle4f。
的問題的關鍵是,我怎麼翻譯RX,RY,並RZ角度爲AxisAngle4f?