EricGuo5513 / HumanML3D

HumanML3D: A large and diverse 3d human motion-language dataset.
MIT License
804 stars 78 forks source link

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

Open IsshikiHugh opened 9 months ago

IsshikiHugh commented 9 months ago

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!

EricGuo5513 commented 9 months ago

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.

IsshikiHugh commented 9 months ago

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!

Silverster98 commented 2 months ago

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.