【问题标题】:Extracting data from BVH file and applying it to my 3d model?从 BVH 文件中提取数据并将其应用于我的 3d 模型?
【发布时间】:2013-11-20 11:21:16
【问题描述】:
我一直在尝试从 bvh 文件中获取运动数据并将其应用到我的 3d 模型中。我研究了 bvh 文件格式,并解析其数据并将数据写入文本文件,让我们给出新的扩展名 ( .motion) 用于文本文件。一切都很好,但是当我尝试将 .motion 数据应用到我的 3d 模型的关节时出现问题。
因为bvh文件的静止姿势不同。我模型的静止姿势是T-Pose,而bvh文件是站立姿势。所以在我的3d模型中应用的整个动画序列的旋转也不同。
我还验证了旋转数据是否应用于正确的关节
所以除了其余的姿势外,一切都很完美。有没有其他方法可以克服这种静止位置差异。我可以使用矩阵乘法来解决这个问题吗?
【问题讨论】:
标签:
python
animation
matrix
blender
【解决方案1】:
回答我自己的问题。我编写了 python 脚本,为每一帧编写骨骼的全局旋转,我只是将旋转应用于其他骨架(具有不同的静止姿势),现在可以轻松地独立复制动画休息姿势。
pose.bone[boneIndex].matrix.decompose()[1] //global rotation of bone in Quaternion
如果我们将一个骨架的全局旋转应用于另一个骨架,那么两个骨架的其余位姿不必相同。但是如果我们尝试将骨骼的局部(相对)旋转应用于其他骨架,那么两个骨架应具有相同的静止姿势。
步骤:
1) 在搅拌机中导入 BVH 文件。
2) 运行 python 脚本,每帧写入每个骨骼的全局旋转(四元数)。
3) 现在将四元数直接应用于 3d 模型的骨骼。