我正在将 3d 坐标序列转换为 bvh 文件。我使用第一帧(不是 T 姿势)制作了 HIERARCHY,我想使用其余的帧来制作 MOTION 部分。
我不知道 bvh 格式中使用的欧拉角的确切含义。例如,当有如下图所示的两个向量 v1 和 v2
v1 = (X1, Y1, Z1) v2 = (X2, Y2, Z2)
这两个向量的长度相同,并且从 v1 旋转到 v2。
如何在 2 个向量之间获得旋转(bvh 格式的欧拉角)?
我正在将 3d 坐标序列转换为 bvh 文件。我使用第一帧(不是 T 姿势)制作了 HIERARCHY,我想使用其余的帧来制作 MOTION 部分。
我不知道 bvh 格式中使用的欧拉角的确切含义。例如,当有如下图所示的两个向量 v1 和 v2
v1 = (X1, Y1, Z1) v2 = (X2, Y2, Z2)
这两个向量的长度相同,并且从 v1 旋转到 v2。
如何在 2 个向量之间获得旋转(bvh 格式的欧拉角)?
我不知道这是否回答了 BVH 格式中欧拉角的“含义”,但在 BVH 中,给定帧中骨骼的欧拉角表示骨骼从基本位置旋转,而不是从前一帧旋转。基本位置是在 HIERARCHY 中定义的偏移量。您应该查看Meredith 和 Maddock解释的运动捕捉文件格式,他们对 BVH 文件格式进行了更深入的讨论。
要找到将向量 v1 旋转到向量 v2 的旋转矩阵,您可以使用 Jur van den Berg 的答案中提供的方程。然后,您可以使用Shoemake 算法恢复欧拉角,注意旋转顺序会改变方程。但是如果你的骨骼的基本位置不在 v1 上,你需要从它的基本位置而不是从 v1 计算旋转。