欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

How can I convert a 3D pose sequence into the bvh file format?

最编程 2024-08-14 12:05:46
...

好吧,我自己找到了解决方案。在这里发帖,以防其他人觉得有用。请原谅没有LaTeX渲染,显然,堆栈溢出还不支持它,而且我在这里太新了,不能附加图像。

因此,在BVH格式中,关节之间存在以下关系:

$$pos

_

J=R

_

{P(J)}偏移量

_

J+位置

_

{P(j)}$$

where $pos

_

j$表示关节$j$的3D位置,$P(j)$返回关节$j$的父级

DAG

在$offset中对位置进行建模(通常,DAG从根部开始并指向末端效应器)

_

j$表示关节$j$相对于其父$P(j)$ (也称为连接肢体)的偏移,以及$R

_

{P(j)}$是3D旋转,它决定了应该$offset多少

_

j$从初始姿势(通常是T形姿势)旋转。在BVH格式中,对于每个父$P(j)$,我们需要存储$R

_

{P(j)}^{-1}R

_

j$。

我当时遇到的主要问题是处理有多个子关节的关节,例如,根关节,它既连接到两条腿,也连接到脊椎。我最终遇到了

此存储库

并深入研究它们的功能

内部

,认识到要做什么。基本上,对于有多个子节点的关节,我必须使用$offset=0$制作副本,并将这些副本指定为相应链的父节点。因此,我制作了3个根的副本:一个成为左腿链的父对象,一个是右腿链的父对象,一个是脊椎的父对象。对于具有多个孩子的其他父母也是如此。是的,可视化效果很好!