首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JOML (使用LWJGL) -从rx、ry和rz值获得旋转矩阵?

JOML (使用LWJGL) -从rx、ry和rz值获得旋转矩阵?
EN

Stack Overflow用户
提问于 2017-09-23 14:21:41
回答 1查看 1.3K关注 0票数 1

我一直在使用LWJGL和添加的JOML作为创建3D游戏引擎的一种方法。自从我松散地遵循Jeffrey (YouTube)的教程以来,我遇到了一个问题,但是我一直在使用JOML库,而不是他创建的迷你数学库。我做了一个Transform类,它是从Jeffrey的数学库中复制的,我一直在翻译它以使用JOML:

代码语言:javascript
复制
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.getRotationAxisAngle4f

问题的关键是,我如何将rxryrz angles转换成一个AxisAngle4f

EN

回答 1

Stack Overflow用户

发布于 2017-09-23 15:57:29

请仔细彻底地阅读JOML方法的JavaDocs。Matrix4f.getRotation()检索(仿射)矩阵的旋转部分,并将该旋转转换为表示相同旋转的轴角。该方法不从三个欧拉角度创建/构建旋转矩阵。

因此,要精确地陈述/改写你的问题:“我如何构建一个仿射4x4矩阵,表示给定三个欧拉角的三维旋转(分别是围绕X、Y和Z轴的角度),然后按X、Y和Z的顺序旋转?”

答案是:Matrix4f.rotationXYZ()或后乘的Matrix4f.rotateXYZ()。如果需要不同的旋转顺序,您还可以查看其他的旋转ZYX/ZYX和rotateYXZ/ZYX方法,甚至可以在给定旋转轴和角度的情况下对Matrix4f.rotate()进行三次调用。

我还建议您参考GitHub项目的Wiki和GitHub上joml-lwjgl3-demos项目的来源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46380577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档