【问题标题】:How to get rotation(Euler angle) between two 3D vectors? (to make bvh format)如何获得两个 3D 向量之间的旋转(欧拉角)? (制作 bvh 格式)
【发布时间】:2020-11-24 08:19:42
【问题描述】:

我正在将 3d 坐标序列转换为 bvh 文件。 我使用第一帧(不是 T 姿势)制作了 HIERARCHY,我想使用其余帧制作 MOTION 部分。

我不知道 bvh 格式中使用的欧拉角的确切含义。 比如下图有两个向量v1和v2时

v1 = (X1, Y1, Z1) v2 = (X2, Y2, Z2)

这两个向量长度相同,并且从 v1 旋转到 v2。

如何获得两个向量之间的旋转(bvh 格式的欧拉角)?

【问题讨论】:

  • 我投票结束这个问题,因为它是一道数学题,而不是帮助中心定义的编程题。

标签: euler-angles mo-cap


【解决方案1】:

我不知道这是否回答了 BVH 格式中欧拉角的“含义”,但在 BVH 中,给定框架中骨骼的欧拉角表示骨骼从基本位置旋转,而不是从上一帧。基本位置是在 HIERARCHY 中定义的偏移量。您应该查看 Meredith 和 Maddock 的 Motion Capture File Formats Explained,他们对 BVH 文件格式进行了更深入的讨论。

要找到将向量 v1 旋转到向量 v2 的旋转矩阵,您可以使用 Jur van den Berg 的回答 here 中提供的方程。然后,您可以使用Shoemake's algorithm 恢复欧拉角,注意旋转顺序会改变方程。但是,如果您的骨骼的基本位置不在 v1 上,则需要从其基本位置而不是从 v1 计算旋转。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2011-02-25
    相关资源
    最近更新 更多