【发布时间】:2021-06-24 03:58:54
【问题描述】:
我正在尝试根据 9DoF 参数为我的模型在场景中分配一个位置。其中,轮换让我很难受。如果我将 x 和 z 旋转保持为零,那么 roty 似乎工作正常并且模型仅围绕 y 轴旋转。但是,只要我给 x 和 y 旋转任何值,模型就会在进行 y 旋转时围绕其他两个轴移动。
下面是我用来给出 rotx、roty、rotz 值的代码。我觉得矩阵乘法有一些问题。因为 0 * x + roty * y + 0 * z = roty 除了任何东西 * x + roty * y + 任何东西 * z = 任何东西 .
model = glm::translate(model, glm::vec3(transX, transY, transZ));
model = glm::rotate(model, toRadians * rotX, glm::vec3(1, 0, 0));
model = glm::rotate(model, toRadians * rotY, glm::vec3(0, 1, 0));
model = glm::rotate(model, toRadians * rotZ, glm::vec3(0, 0, 1));
【问题讨论】:
-
矩阵乘法不是Commutative。顺序很重要。
标签: c++ opengl 3d rendering glm-math