Java LWJGL对象未正确旋转

Java LWJGL对象未正确旋转,java,lwjgl,Java,Lwjgl,如果以前有人问过我,我很抱歉,但是我找不到任何适合我的问题的答案。我试图旋转一个对象(面集合),但它绕着世界原点而不是对象原点旋转。这是用于计算的my view()方法: public static Matrix view(Vector position, Vector rotator) { Matrix translation = Matrix.translate(new Vector(-position.getX(), -position.getY(), -position.

如果以前有人问过我,我很抱歉,但是我找不到任何适合我的问题的答案。我试图旋转一个对象(面集合),但它绕着世界原点而不是对象原点旋转。这是用于计算的my view()方法:

public static Matrix view(Vector position, Vector rotator) {
        Matrix translation = Matrix.translate(new Vector(-position.getX(), -position.getY(), -position.getZ()));
        Matrix rotX = Matrix.rotate(rotator.getX(), new Vector(1, 0, 0));
        Matrix rotY = Matrix.rotate(rotator.getY(), new Vector(0, 1, 0));
        Matrix rotZ = Matrix.rotate(rotator.getZ(), new Vector(0, 0, 1));

        Matrix rotation = Matrix.multiply(rotZ, Matrix.multiply(rotY, rotX));

        return Matrix.multiply(translation, rotation);
    }
我已经尝试过在multiply()方法中交换平移和旋转参数,但是这样做的时候事情变得有点奇怪

此外,这是我的顶点着色器,以防任何人需要它:
gl_Position=投影*视图*模型*vec4(Position.x,Position.y,Position.z,1.0)


有人知道这个问题的解决方法吗?

我只是想在这里记录我在评论中提供的答案。如果要围绕(0,0)以外的其他原点旋转对象,则需要通过新原点偏移旋转矩阵

有关数学堆栈交换的详细信息,请参见如何精确执行此操作


考虑这一点的另一种方法是将新原点移回(0,0),并将点移动相同的量。然后可以应用旋转矩阵,然后将旋转的点向后移动相同的量。看一看就知道了。

这有用吗?:是的,这正是我需要的。谢谢