问题
我试图通过解析它来从 BVH 文件中获取功能。BVH 文件通过NUICapture导出,这是一款通过 Kinect 捕捉身体运动的软件。
我知道的所有 BVH 示例文件都以ZXY
符号而不是指定欧拉角ZYX
,但是 NUICapture 使用ZYX
符号导出 BVH 文件,因此我无法解析它。
背景
在 BVH 格式中,由于为每个身体部位指定的欧拉角,轴的顺序可能不同。身体部位的旋转由指定轴的矩阵乘法指定,整个身体的运动被视为层次结构中所有连续身体部位的旋转的乘积。由于矩阵乘法不是可交换ZXY
的,因此与 不同ZYX
。
解决方案的尝试
我遇到的所有现有解析器都表示ZXY
为事实上的标准,所有论文也是如此。我发现没有一个解析器能够解析 NUICapture 生成的 BVH 文件,但BVHhacker 除外。但是 BVHhacker 没有可用的源代码,因此即使它似乎能够重放 NUICapture 捕获的动作,也无法访问 BVHhacker 解析器创建的内部表示。
我尝试使用开源 Python BVH 解析器(例如BVHPlay)ZXY
并尝试导入 NUICapture 的 BVH 文件,但出现文件输入错误,其他具有“正确”格式的示例 BVH 文件不会发生这种情况。为了解决这个问题,我需要以某种方式纠正轴序列,但我不确定如何在不影响原始身体运动完整性的情况下做到这一点。对我来说,仅仅手动切换顺序以允许解析 BVH 可能是非常幼稚的。