2

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

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

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

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

4

1 回答 1

2

回答我自己的问题。我编写了 python 脚本,为每一帧编写了骨骼的全局旋转,我只是将旋转应用于其他骨架(具有不同的静止姿势),现在可以轻松地复制动画而不受静止姿势的影响.

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

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

脚步 :

1)在blender中导入BVH文件。

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

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

于 2013-11-26T07:35:29.190 回答