从BVH文件中提取数据并将其应用到我的3D模型中?

时间:2013-11-08 12:34:23

标签: python animation matrix blender

我一直试图从bvh文件中获取运动数据并将其应用到我的3d模型中。我研究了bvh文件格式,并解析了它的数据并将数据写入文本文件,让我们给出新的扩展名( .motion)为文本文件。一切都很好,但是当我尝试将.motion数据应用到我的3d模型的关节时出现问题。

因为bvh文件的静止姿势不同。我的模型的静止姿势是T-Pose,但是bvh文件是站姿。所以在我的3d模型中应用的整个动画序列的旋转也不同。

我还验证了旋转数据是否应用于正确的关节

所以除了休息姿势外,一切都很完美。有没有其他方法来克服这个休息位置差异。我可以使用矩阵乘法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。我编写了python脚本,为每个帧写入了骨骼的全局旋转,我只是将旋转应用到其他骨架(具有不同的静止姿势),现在动画可以很容易地独立复制休息姿势。

pose.bone[boneIndex].matrix.decompose()[1] //global rotation of bone in Quaternion

如果我们将一个电枢的全局旋转应用到另一个电枢,则两个电枢的其余姿势不必相同。但是如果我们尝试将骨骼的局部(相对)旋转应用于其他电枢,那么这两个骨架应该有相同的休息姿势。

步骤:

1)在blender中导入BVH文件。

2)运行python脚本,每帧写入每个骨骼的全局旋转(以四元数为单位)。

3)现在将四元数直接应用于3d模型的骨骼。