HumanML3D icon indicating copy to clipboard operation
HumanML3D copied to clipboard

[Bugs] Some problems of kinematic models. (face direction and kinematic chain modeling)

Open IsshikiHugh opened this issue 1 year ago • 3 comments

Thanks for your great work! When studying your wonderful motion representation, I found two small problem which might influence your effects. And they are all in common/skeleton.py.

1. Face Direction

This problem is already mentioned here: #112 #107. The direction of the across vector might be wrong.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/common/skeleton.py#L58-L62

Which is different from your code in motion_representation.ipynb.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/motion_representation.ipynb#L85-L89

This may lead to some errors, but thanks to the redundant 263-dimensional information, this can be recovered to a certain extent

2. Kinematic Chain

This problem may not be as serious as the above.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/common/skeleton.py#L81-L99

Here, each joints' position(except roots') will be converted to the rotation about it's parent along kinematic chain. However, not every chain start from root, which means line 85 is not very suitable especially for the arms' chains.

I thought it will be more suitable if it's like:

R = quat_params[:, chain[0]]

Again, thanks for your great work!

IsshikiHugh avatar Jan 20 '24 13:01 IsshikiHugh

Hi, thanks for pointing this out. Now it would be too late to change the code, since many people have done experiments on the obtained dataset. However, I will highlight your issue, so people will see your comments.

EricGuo5513 avatar Jan 20 '24 18:01 EricGuo5513

Hi, thanks for pointing this out. Now it would be too late to change the code, since many people have done experiments on the obtained dataset. However, I will highlight your issue, so people will see your comments.

Thanks!

IsshikiHugh avatar Jan 21 '24 00:01 IsshikiHugh

Thanks for your great work! When studying your wonderful motion representation, I found two small problem which might influence your effects. And they are all in common/skeleton.py.

1. Face Direction

This problem is already mentioned here: #112 #107. The direction of the across vector might be wrong.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/common/skeleton.py#L58-L62

Which is different from your code in motion_representation.ipynb.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/motion_representation.ipynb#L85-L89

This may lead to some errors, but thanks to the redundant 263-dimensional information, this can be recovered to a certain extent

2. Kinematic Chain

This problem may not be as serious as the above.

https://github.com/EricGuo5513/HumanML3D/blob/6b72fcda6c4fb90be69efd784942bf08be2d51e1/common/skeleton.py#L81-L99

Here, each joints' position(except roots') will be converted to the rotation about it's parent along kinematic chain. However, not every chain start from root, which means line 85 is not very suitable especially for the arms' chains.

I thought it will be more suitable if it's like:

R = quat_params[:, chain[0]]

Again, thanks for your great work!

Hi,

I noticed that some processed motions are really weird when I change R = root_quat to R = quat_params[:, chain[0]] in Line 85 in HumanML3D/common/skeleton.py. I present the motion animation with ID 000004.

https://github.com/user-attachments/assets/48cf1716-fa0f-44ab-8941-704d2ef52ec5

It seems that the left arm and right arm swap after the first frame. But I can not figure out the reason.

Silverster98 avatar Sep 07 '24 06:09 Silverster98