【发布时间】:2021-11-29 21:47:31
【问题描述】:
我正在尝试使用来自 JOML 的四元数来使用四元数旋转:https://github.com/JOML-CI/JOML/blob/main/src/org/joml/Quaternionf.java。
我可以让物体旋转,但它们卡住了,无法完成完整的旋转。对象每帧都会更新。
编辑: 删除了所有与欧拉相关的代码,我只是试图让对象基于某个角度在单个轴上旋转。
编辑 2: 我正在尝试使用共轭并将四元数相乘,就像我在一些视频中看到的那样。但我并不完全在那里,因为模型出于某种原因将自己从屏幕上旋转了下来。
编辑 3: 标准化四元数修复了消失的行为。问题似乎是没有简单的方法来旋转一定的量,而没有一个计时器来处理这在我的情况下不起作用,因为我试图旋转一个没有设置开始和结束的任意量的对象。
旋转函数
public void rotate(float angle, float x, float y, float z) {
Quaternionf rot = new Quaternionf();
rot.rotateAxis((float) Math.toRadians(angle), x, y, z);
Quaternionf conjugate = rot.conjugate();
rotation = rot.mul(rotation).mul(conjugate);
}
调用旋转函数
entity.transform.rotate( 1,0,1, 0);
【问题讨论】:
标签: java rotation lwjgl quaternions joml