KevinLTT / video2bvh

Extracts human motion in video and save it as bvh mocap file.
MIT License
569 stars 89 forks source link

what is the coordinated system? #16

Closed guker closed 3 years ago

guker commented 4 years ago

https://github.com/KevinLTT/video2bvh/blob/87f61358c26bd395bf7311765a0f2d11f4d0a56f/bvh_skeleton/h36m_skeleton.py#L75

z axis up, x axis right, y axis towards the screen?

KevinLTT commented 4 years ago

Yes, you are right.

Kismetzc commented 3 years ago

It's right? 微信图片_20210817115124

summer-wind-hi commented 3 years ago

Hi @KevinLTT , I have same question, could you please help to confirm T-pose coordinate? The following picture is what I thought the T-pose is , is it right?

image

Expect your reply and advice , thanks!

regards, summer Gao

Kismetzc commented 3 years ago

Hi @KevinLTT , I have same question, could you please help to confirm T-pose coordinate? The following picture is what I thought the T-pose is , is it right?

image

Expect your reply and advice , thanks!

regards, summer Gao

I guess it's right.

summer-wind-hi commented 3 years ago

Hi @Kismetzc , Thanks for your reply , by the way, have you noticed the local axis for each joint in T-pose? Just like following visualization in blender: image

I try to figure out how these local axis are generated but I am not able to find the code and explanation, if you understand the process , your sharing is sincerely expected, I'm dealing with motion retargeting using this generated bvh file, and it's important to me , thanks!

regards, summer Gao

Kismetzc commented 3 years ago

@summer-wind-hi, 咱们用中文就行 你打开Blender 把我图中的静置位置-》视图显示 名称轴向打开就行 微信图片_20210818161518

summer-wind-hi commented 3 years ago

Hi @Kismetzc , 谢谢,您上面讲的是怎样在blender中显示每个关节点的局部坐标系是吧?我是这样可视化出来的,我上面可能没表达清楚,我想知道这些局部坐标系跟什么有关?也就是说是怎么确定这个关节点的局部坐标系是朝这个方向而不是其他方向? 之所以想知道这些,是因为我在用pose2bvh生成的bvh文件作为输入进行motion retargeting , 输入bvh可视化动作是正常的,但是retargeting输出结果很不理想,我用mixamo数据进行retargeting结果就很好,我把我的bvh和mixamo的bvh对比了一下,二者在每个关节点的局部坐标系上存在差异,我的如上图所示,mixamo的如下图所示: image

对比一下可以发现,二者的区别是2手臂上的关节点的局部坐标系不一致,所以我想把我的改成和mixamo一致进行测试,但是现在不知道要怎么改,如果有什么建议请分享给我,这个困扰我有段时间了,谢谢!

regards summer

Kismetzc commented 3 years ago

@summer-wind-hi , 哦哦好的,是这样啊。我也是个新手,在啃他的代码,之前没接触过这块。请问您的问题是mixamo两个手臂上的关节点的坐标系朝向完全一样,而pose2bvh的朝向有差异吗?

summer-wind-hi commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题;

还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

Kismetzc commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题;

还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

这个我目前不太懂,还需要啃完代码多了解一些东西或许能明白为什么

Kismetzc commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题;

还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

您好,请问方便加个联系方式交流一下吗?我主页有我邮箱

Kismetzc commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题;

还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

我想我可能知道为什么了。请您对应一下这里的代码看看是不是以ZXY为旋转顺序的结点是与mixamo一致的,然而其它并不是

summer-wind-hi commented 3 years ago

Hi @Kismetzc, 刚开完会,我看下您说的这个代码,然后我们邮件联系

summer-wind-hi commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题; 还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

我想我可能知道为什么了。请您对应一下这里的代码看看是不是以ZXY为旋转顺序的结点是与mixamo一致的,然而其它并不是

是的,代码里以ZYX为旋转顺序的结点,它的局部坐标和mixamo一致,其他不一致,但是我尝试过修改其他节点的顺序和dir,发现这些结点局部坐标轴不会改变,貌似修改init_direction(比如从Y-up, Z-forward改为Z-up, Y-forward)会影响结点的坐标轴。

Kismetzc commented 3 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题; 还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

我想我可能知道为什么了。请您对应一下这里的代码看看是不是以ZXY为旋转顺序的结点是与mixamo一致的,然而其它并不是

是的,代码里以ZYX为旋转顺序的结点,它的局部坐标和mixamo一致,其他不一致,但是我尝试过修改其他节点的顺序和dir,发现这些结点局部坐标轴不会改变,貌似修改init_direction(比如从Y-up, Z-forward改为Z-up, Y-forward)会影响结点的坐标轴。

我猜应该是需要修改那些非ZXY旋转方向为ZXY,但这处代码我并没读懂。x_dir,y_dir,z_dir的逻辑,以及旋转方向都不懂!

summer-wind-hi commented 3 years ago

@Kismetzc ,可以看下这里的解释,写的比较清楚: https://github.com/KevinLTT/video2bvh/issues/4

Kismetzc commented 3 years ago

@Kismetzc ,可以看下这里的解释,写的比较清楚: #4

非常感谢,之前没有留意这个问题。我想按照作者提供的思路,将所有的order改成zxy或许能解决您的问题,我尝试一下。还有一个小问题,请问Endsite它的初始方向都定在Y轴上就是为了表示End的吗?例如,在cmu_skeleton中,LeftHandEndSite是[1,0,0],和LeftHand[1,0,0]是同一个方向,然而LeftFootEndSite[0,-1,0]却和LeftFoot[0,0,-1]方向不一样。此外,在keypoint2index,后面将RightHipJoint等也设置为-1的用意是?我只能猜由于输入的是human3.6m的数据,在映射到cmu_skeleton的过程中,human3.6有部分骨骼节点如RightHip是cmu_skeleton没有的,所以设置为-1,但是这个-1的含义我没有理解透彻,我想是为了保持cmu_skeleton的统一定义所以不给予keypoint? 实际在生成.bvh文件中,这些如RightHip的数据是有用到的?

Kismetzc commented 3 years ago

@Kismetzc ,可以看下这里的解释,写的比较清楚: #4

发现还有一个没有完全明白的地方,骨骼节点之间的父子关系的依据是什么...暂时理解依据真实骨骼来定义的,然后root节点分出的每个分支都以Endsite来结束

Kismetzc commented 3 years ago

@summer-wind-hi 我修改完了,你可以自己尝试一下或者看一下我的MocapToFbx项目的cxk_new.bvh,看一下有没有问题。

baojunshan commented 2 years ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题;

还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

@summer-wind-hi 请问这个问题解决了吗?我也遇到retargeting时,自旋的问题

kyuusaku commented 5 months ago

@Kismetzc , 对2手臂,pose2bvh的坐标轴朝向和mixamo不一致,拿左臂来说,pose2bvh的坐标系是x-forward, y-right, z-up, 而mixamo的坐标系是z-forward, y-right, x-down, 现在想让pose2bvh和mixamo一致,但是我不知道怎么改,这是一个问题; 还有一个问题,我用来生成bvh的输入(也就是 3d pose: xyz)是y-up,pose2bvh中用的是z-up,所以我的3d pose是否需要进行坐标系变换?不知道您怎么看,谢谢。

@summer-wind-hi 请问这个问题解决了吗?我也遇到retargeting时,自旋的问题

@baojunshan 请问问题是怎么解决的哇?我也遇到了同样的问题。