EpicGames / MetaHuman-DNA-Calibration

https://epicgames.github.io/MetaHuman-DNA-Calibration/
Other
452 stars 118 forks source link

How to adjust the mapping value from expression to joints? #15

Closed Bymeoryou closed 1 year ago

Bymeoryou commented 1 year ago

Hello, I want to change the riglogic node behavior to correct my own head's facial animation. From the DNA BehaviorWriter.h I find the setJointGroupValues/setPSDValues/etc. functions. So can you tell me which one is right? Want to change the behavior between expression node and joints group. Thanks a lot for kind help.

smilicev commented 1 year ago

Hi @Bymeoryou,

changing behavior is super complex, and there are just few people who know how to actually do it. You need to know multiple domains in order to change this. Can you provide me more details what do you want to accomplish?

Bymeoryou commented 1 year ago

Hi, thanks for your quick reply. From my research, I think I get the functions I want. What I want is that when I select an expression, the artist can change the skeleton translation/rotation to have a better expression target shape, and then these joint changes will propagate to the DNA. The right function should be the setJointGroupValues(), also I have some details to share: The getJointGroupInputIndices() can give all the expression control info and getJointGroupOutputIndices() will give all the joint attribute info. Then their mapping values can get from getJointGroupValues() which includes the translate/rotate/scale. What is more complex is the PSD matrix, from my understanding it should be an Identity matrix, the RowIndices is the PSD index, and the ColumnIndices is the control PSD, you can get the relationship between them by checking if the value in the Identity matrix is 1. For example, the first four indices in getPSDRawIndices() are 260,260,261,261. And the first four indices in getPSDColumnIndices are 0,2,1,3. Which means the PSD ‘260' is combine with expression 0 and 2, the PSD '261' is combine with expression 1 and 3.

smilicev commented 1 year ago

Currently, we support only propagating changes from Maya scene to neutral pose to DNA. This example is provided here: https://github.com/EpicGames/MetaHuman-DNA-Calibration/blob/main/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py

I hope this will help.

I will close this issue. If you have any other issue, feel free to create another issue.