在OpenGL中解决从Blender导出的z-Up Collada文件问题

8
我将Blender模型以及动画导出为Collada格式。众所周知,Blender是一个右手坐标系系统,因此其上轴是z轴,而OpenGL ES2的上轴则为Y轴。
对于静态网格,我可以将对象绕x轴旋转90度,但是当我应用此旋转到帧矩阵时,却得到了意外的结果。
那么我该如何解决这个问题?

你所说的“frame's matrix”具体是什么意思?我只是在对象模式下将带有所有骨骼的网格绕x轴旋转了-90度,并得到了我期望的结果(包括动画)。 - user7677469
你能给我们更多关于“意外结果”的细节吗?可以提供截图或至少说明一下,出现了什么意料之外的情况吗? - Josh Parnell
1
请注意,操作顺序在这里非常重要。您应该在发生任何其他转换之前应用旋转(即,在将任何平移应用于世界空间等之前)。 - Josh Parnell
1个回答

1

旋转对象:

要手动旋转对象,请确保选择对象(通常通过右键单击对象)。然后只需按下键盘上的“R”键并移动鼠标,您将看到对象相应地旋转。您可能会意识到在旋转方面有一定限制;再次按下“R”键,现在您将看到根据您如何移动鼠标自由旋转对象。

如果要将对象绕x轴旋转90度,则再次选择对象,在键盘上按“R”键(R代表旋转),然后按“X”键(X代表X轴),然后在数字键盘上输入90,最后按“Enter”。您将看到您的对象沿着X轴旋转90度。

旋转整个场景:

  1. 选择所有父对象
  2. 将3D光标移动到0,0,0
  3. 绕光标旋转:全局X轴,-90度
  4. 应用旋转
  5. 继续进行常规导出
正确的处理方法是将旋转作为导出的一部分来处理,因为导出的目的是将正确定位的Blender对象转换为正确定位的Unity对象。您应该在任何其他操作之前执行旋转。在实际帧中,旋转应该在任何平移之前应用。
更多详细信息可以在以下主题中找到:https://blenderartists.org/forum/archive/index.php/t-255246.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接