banmo icon indicating copy to clipboard operation
banmo copied to clipboard

Bone reinitialization

Open Subinn-Jeon opened this issue 1 year ago • 1 comments

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!

Subinn-Jeon avatar Feb 08 '23 14:02 Subinn-Jeon

Hi, the first line you referred to

https://github.com/facebookresearch/banmo/blob/c4498030aeca9b056e700892788025a80953cb5a/nnutils/geom_utils.py#L698

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.

gengshan-y avatar Feb 09 '23 03:02 gengshan-y