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个根的副本:一个成为左腿链的父对象,一个是右腿链的父对象,一个是脊椎的父对象。对于具有多个孩子的其他父母也是如此。是的,可视化效果很好!