Open subin6 opened 1 year ago
Hi, the first line you referred to
transforms control points in the rest configuration (corresponding to \omega* in the paper, aligned with the rest shape) to a zero configuration.
First of all, this separate modeling of zero configuration is not an integral part of the method, the method worked without it.
The motivation of adding a zero configuration was to ensure all pose codes (rest code \omega^* and time code \omega^t) can be mapped to transforms J with the same definition:
J(\omega) = MLP_b(\omega) # J is the zero-to-any transformation
Instead defining J as the rest-to-any transformation and enforcing J(\omega^*)=Identity
, we define J as zero-to-any transformation, where any
can include both t and rest.
Hope this makes sense.
Hi, thank you for sharing your code.
I have a question on the following line, correct_bones in the process of bone reinitialization. https://github.com/facebookresearch/banmo/blob/c4498030aeca9b056e700892788025a80953cb5a/nnutils/geom_utils.py#L698
Why do you correct bones using the inverse of rest pose transformation? Then, are the bones in the rest pose or another state?
As far as I know, you transform bones again into the rest pose bones using the rest pose transformation afterwards. (https://github.com/facebookresearch/banmo/blob/c4498030aeca9b056e700892788025a80953cb5a/nnutils/banmo.py#L1212)
I’m wondering what is the purpose of rest pose? Also, why did not you use the default bones(before multiplying the inverse of rest pose transformation) as rest pose?
Thank you. Hope to hear from you soon!