如何将 3D 姿势序列转换为 bvh 文件格式?
How to convert 3D pose sequences to the bvh file format?
我对动画和渲染软件还很陌生,所以如果我需要提供更多相关信息,请告诉我。我有一系列人体关节的 3D 位置(基本上是动作捕捉数据),代表不同类型的步行。正如我在本视频中所示,我已设法使用 python 可视化序列。我拥有的每个数据都是一个大小为 TxJx3 的 numpy 数组,其中 T 是帧数,J 是关节数(在我的例子中是 21),3 代表 3 个坐标值。所以我的问题是,如何将这些 3D 位置转换为 BVH 文件,我可以将其加载到搅拌机中?或者将它们转换为任何其他格式以便我可以在搅拌机中加载这些数据?
好的,我自己找到了解决方案。在这里张贴以防其他人发现这有用。请原谅没有 LaTeX 渲染,apparently,stack overflow 不支持它(还),而且我在这里太新无法附上图像。
因此,在 BVH 格式中,关节之间存在以下关系:
$$pos_j = R_{P(j)}offset_j + pos_{P(j)}$$
其中 $pos_j$ 表示关节 $j$ 的 3D 位置,$P(j)$ returns 关节 $j$ 的 parent 在任何 DAG 位置建模于(通常 DAG 从根开始并指向 end-effectors) $offset_j$ 表示关节 $j$ 相对于其 parent $P 的偏移(j)$(又名连接肢体),$R_{P(j)}$ 是 3D 旋转,它确定 $offset_j$ 应该从初始姿势旋转多少(通常是 T-pose).在BVH格式中,对于每个parent$P(j)$,我们需要存储$R_{P(j)}^{-1}R_j$.
当时我遇到的主要问题是处理具有多个 children 的关节,例如,根关节,它与双腿和脊柱都有连接。我最终遇到了 this repo 并在 skeleton.py
中挖掘了它们的函数 forward_kinematics
,意识到该怎么做。基本上,对于具有多个 children 的关节,我必须使用 $offset=0$ 制作副本,并将它们分配为相应链的 parents。因此,我制作了 3 个根副本:一个成为左腿链的 parent,一个成为右腿链,一个成为脊柱。与其他 parent 具有多个 children 的情况类似。是的,可视化效果很好!
我对动画和渲染软件还很陌生,所以如果我需要提供更多相关信息,请告诉我。我有一系列人体关节的 3D 位置(基本上是动作捕捉数据),代表不同类型的步行。正如我在本视频中所示,我已设法使用 python 可视化序列。我拥有的每个数据都是一个大小为 TxJx3 的 numpy 数组,其中 T 是帧数,J 是关节数(在我的例子中是 21),3 代表 3 个坐标值。所以我的问题是,如何将这些 3D 位置转换为 BVH 文件,我可以将其加载到搅拌机中?或者将它们转换为任何其他格式以便我可以在搅拌机中加载这些数据?
好的,我自己找到了解决方案。在这里张贴以防其他人发现这有用。请原谅没有 LaTeX 渲染,apparently,stack overflow 不支持它(还),而且我在这里太新无法附上图像。
因此,在 BVH 格式中,关节之间存在以下关系:
$$pos_j = R_{P(j)}offset_j + pos_{P(j)}$$
其中 $pos_j$ 表示关节 $j$ 的 3D 位置,$P(j)$ returns 关节 $j$ 的 parent 在任何 DAG 位置建模于(通常 DAG 从根开始并指向 end-effectors) $offset_j$ 表示关节 $j$ 相对于其 parent $P 的偏移(j)$(又名连接肢体),$R_{P(j)}$ 是 3D 旋转,它确定 $offset_j$ 应该从初始姿势旋转多少(通常是 T-pose).在BVH格式中,对于每个parent$P(j)$,我们需要存储$R_{P(j)}^{-1}R_j$.
当时我遇到的主要问题是处理具有多个 children 的关节,例如,根关节,它与双腿和脊柱都有连接。我最终遇到了 this repo 并在 skeleton.py
中挖掘了它们的函数 forward_kinematics
,意识到该怎么做。基本上,对于具有多个 children 的关节,我必须使用 $offset=0$ 制作副本,并将它们分配为相应链的 parents。因此,我制作了 3 个根副本:一个成为左腿链的 parent,一个成为右腿链,一个成为脊柱。与其他 parent 具有多个 children 的情况类似。是的,可视化效果很好!