动画与骨头

时间:2014-09-10 12:10:32

标签: opengl animation skinning

我正在制作一个简单的骨骼动画库,但我陷入了困境。

我拥有的: 带有动画的少量骨骼的网格。网格皮肤适当。它是3d studio max file。

我的所作所为:

  1. 我用我的插件导出这个蒙皮网格。我采用第一个动画帧并乘以每个顶点,通过这个矩阵(伪代码)

    Matrix invertedBoneMatrix = ZeroMatrix;
    invertedBoneMatrix += bone1WorldTransform * weight1;
    invertedBoneMatrix += bone2WorldTransform * weight2;
    invertedBoneMatrix += bone3WorldTransform * weight3;
    invertedBoneMatrix += bone4WorldTransform * weight4;
    invertedBoneMatrix.Invert();
    
    foreach (vertex)
       vertex = invertedBoneMatrix * vertex;
    
  2. 当我在我的引擎中加载此模型时,我会计算每个动画帧中每个骨骼的世界变换,并将每个顶点乘以相应的骨骼世界变换以及适当的权重。

  3. 问题: 只有第一帧看起来很好,其他帧都会失真。

    也许我的代码中某处有错误,但我想知道,如果我的方法是正确的 - 将所有顶点都带到相应骨骼的局部空间。

0 个答案:

没有答案