0

我从文件加载 collada 网格动画时遇到问题。骨架 startpose 是这样定义的

<translate sid="translate">-0.01199548 0.1422831 -0.009544329</translate>
<rotate sid="jointOrientZ">0 0 1 0</rotate>
<rotate sid="jointOrientY">0 1 0 0</rotate>
<rotate sid="jointOrientX">1 0 0 0</rotate>
<rotate sid="rotateZ">0 0 1 -6.883375</rotate>
<rotate sid="rotateY">0 1 0 -10.62618</rotate>
<rotate sid="rotateX">1 0 0 8.255196</rotate>

我认为轮换应该按照他们在这里订购的顺序进行,还是我错过了什么?我发现了旋转是如何工作的,前三个值定义了要旋转的轴,最后一个值定义了多少度。但由于某种原因,我得到了一个非常奇怪的结果。我的系统适用于 collada 网格,该网格具有代表相同类型值的矩阵。

4

1 回答 1

0

就像你说的,伪命令的顺序:

translateObject()
orientZObject()
orientYObject()
orientXObject()
rotateZObject()
rotateYObject()
rotateXObject() 

不可能有其他组合。矩阵乘法不可交换。

在将 collada 解析为 webgl 渲染器时,这对我有用。对于矩阵运算,我使用 gl-matrix javascript 库。

于 2013-04-04T10:45:23.747 回答