facebookresearch / banmo

BANMo Building Animatable 3D Neural Models from Many Casual Videos
Other
539 stars 58 forks source link

update_delta_rts #48

Open subin6 opened 1 year ago

subin6 commented 1 year ago

Hi, I have a question about the following function, update_delta_rts. https://github.com/facebookresearch/banmo/blob/c4498030aeca9b056e700892788025a80953cb5a/nnutils/banmo.py#L1207

Why do you compute rays['bone_rts'] by multiplying (bone_rts_rst)^(-1) * bone_rts_fw in correct_rest_pose function? Is it right that you intend to multiply bone_rts_fw first and then multiply the inverse of bone rest transformation?

What I understand is that you first transform bones using bone_rts_rst, which results in restpose bones. (restpose_bones = bones_rts_rst * bones)

Then, you make time t transformation using bone_rts_fw and bone_rts_rst in correct_rest_pose_function. (bone_rts_fw = (bone_rts_rst)^(-1) * (bone_rts_fw) )

As shown in the rendering code, bones_dfm is computed using those two values. (bone_dfm = bone_rts_fw bones_rest = (bone_rts_rst)^(-1) bone_rts_fw bones_rts_rst bones

What I'm curious about is that why you multiply the inverse of bone_rts_rst and bone_rts_rst on before and after of bone_rts_fw matrix? What's the meaning of this multiplication?

Hope to hear from you soon. Thank you.