electronicarts / dem-bones

An automated algorithm to extract the linear blend skinning (LBS) from a set of example poses
https://seed.ea.com
Other
868 stars 154 forks source link

Question about transAffine and transAffineNorm regularizers #13

Closed pramanc closed 3 years ago

pramanc commented 3 years ago

Hi, I am really confused about the transAffine and transAffineNorm regularizers. I read the original SSDR paper and some following papers like the Robust SSDR in 2014, but can't find the reference for transAffineNorm regularizers.

Would you please tell the reference about the transAffine and transAffineNorm regularizers? Thanks a lot!

binhhuyle commented 3 years ago

Hi @pramanc, transAffine regularizer was come up after these two papers were published so it was not reported anywhere.

The idea of this regularizer is forcing the bone translation following the centroid of the patch influenced by that bone. By doing so, the bones do not "fly around".

Specifically, transAffineNorm is used to compute the position of the centroid by taking the weighted sum of vertex positions, where the weights are (skinning weight)^transAffineNorm. Centroid of bone j at rest pose is: (\sum{j=0}^{nB-1} w{ij}^transAffineNorm * ui) / (\sum{j=0}^{nB-1} w_{ij}^transAffineNorm) (centroid at skinning pose is similar).

Then transAffine is the strength of the regularizer on the translation solver.

pramanc commented 3 years ago

@binhhuyle Sorry for the late response.

Actually I'm try to figure it out. I totally understand about transAffineNorm and the equation of centroid. But for the transAffine term, I'm still confused why it would help forcing the bone translation following the centroid.

The bone translation part is calculated by m.transVec(k, j)=qpT.template topRightCorner<3, 1>() - m.rotMat(k, j)*qpT.template bottomLeftCorner<1, 3>().transpose();

For a rigid body registration problem, the translation is determin by the rotation and center of rotation, so basicly the transAffine affect the center of rotation?

binhhuyle commented 3 years ago

Hi @pramanc,

Yes, that is correct. In other words, transAffine forces the center of rotation to be close to the weighted sum of vertex positions above.

pramanc commented 3 years ago

@binhhuyle hhh, Thank you!

I understand the basic theory now! I think I still to need to do the dirty math myself to truely understand it~