如何使 Nvidia FleX 以与 Blender、Unity 或其他 3D 软件相同的方式旋转对象?

How to make Nvidia FleX rotate the objects the same way as Blender, Unity or other 3D software?

我在 FleX 中旋转了一些对象,将它们导出并在 Blender 中渲染。我意识到我在 FleX 中应用到对象的旋转并不像 Blender 那样旋转对象。如果我做对了,我了解到 FleX 使用变换矩阵来旋转对象,但 Blender 不会 [必须] 这样做。我还与在 Unity 中使用 FleX 插件的人交谈过,他说他也面临类似的问题。欧拉角或四元数都是这种情况。下面是我用来在 FleX 中旋转对象的一段代码。我是 FleX 的新手,我不知道我应该使用哪些函数,这样我就可以获得与在 Blender 中相同的旋转,而无需进行不必要的转换。有人可以帮我解决这个问题吗?

对于欧拉角旋转:

obj->Transform(RotationMatrix(rx, Vec3(1.0f, 0.0f, 0.0f)));
obj->Transform(RotationMatrix(ry, Vec3(0.0f, 1.0f, 0.0f)));
obj->Transform(RotationMatrix(rz, Vec3(0.0f, 0.0f, 1.0f)));

对于四元数的旋转:

obj->Transform(RotationMatrix(Quat(qx, qy, qz, qw)));

发生这种情况是由于 Blender 和 Flex 中对轴的不同解释。 Blender 中的 [x, y, z] 在 Nvidia FleX 中被解释为 [-y, z, x]。