nv-tlabs / ASE

Other
793 stars 128 forks source link

What is the meanning of function _get_pairwise_average_translation #80

Open Privilger opened 5 months ago

Privilger commented 5 months ago

Hi,

In the retarget_motion process, there is a function called "_get_pairwise_average_translation".

The comment said: re-compute the local rotation to match the original joint position as much as possible。

Can someone explain the math behind this? I don't quite understand it.

 def _get_pairwise_average_translation(self):
    global_transform_inv = transform_inverse(self.global_transformation)
    p1 = global_transform_inv.unsqueeze(-2)
    p2 = self.global_transformation.unsqueeze(-3)

    pairwise_translation = (
        transform_translation(transform_mul(p1, p2))
        .reshape(-1, len(self.skeleton_tree), len(self.skeleton_tree), 3)
        .mean(axis=0)
    )
    return pairwise_translation

Thanks!