如何根据yaw,pitch和roll值旋转处理中的对象

How to rotate an object in processing according to yaw, pitch and roll values

我正在尝试根据俯仰和滚动值旋转作为 .obj 文件导入的对象。

我实际上是用这段代码实现的

object.rotateX(ConvertToRadians(pitch));

object.rotate(ConvertToRadians(roll), 0, 0, 1); // This line is basically the same thing with rotateZ function. I used it because rotateZ gives a weird error.

但是,当新的俯仰和滚动值通过套接字连接到达时,我使用了这些代码行。它增加了之前的轮换。举个例子,当物体绕X轴旋转30度,我试着让它旋转10度。它将它旋转到 40 度。

我尝试保存之前的旋转并在用这条线给出新的旋转之前撤消它

pieta.rotateX(ConvertToRadians(pitch-prevpitch));

它似乎部分起作用,但过了一段时间后原来的位置(pitch=0 和 roll = 0 不再平坦了。它倾斜到某个角度。我不知道原因)。我认为将对象的位置重置为原始位置会起作用。

我怎样才能实现我的目标?

如果你想重新创建它,这是我的完整代码 Project File

使用resetMatrix()在每一帧设置一个全新的矩阵:

object.resetMatrix();
object.rotateX(ConvertToRadians(pitch));