How to import the raw metahuman curve values into UE4?

Hi,

I converted the exported blendshape .usd file into .usda and get following data:
token custom:mh_curveNames = [“CTRL_expressions_browDownL”, “CTRL_expressions_browDownR”, “CTRL_expressions_browLateralL”, “CTRL_expressions_browLateralR”, “CTRL_expressions_browRaiseInL”, “CTRL_expressions_browRaiseInR”, “CTRL_expressions_browRaiseOuterL”, “CTRL_expressions_browRaiseOuterR”, “CTRL_expressions_eyeBlinkL”, “CTRL_expressions_eyeBlinkR”, “CTRL_expressions_eyeWidenL”, “CTRL_expressions_eyeWidenR”, “CTRL_expressions_eyeSquintInnerL”, “CTRL_expressions_eyeSquintInnerR”, “CTRL_expressions_eyeCheekRaiseL”, “CTRL_expressions_eyeCheekRaiseR”, “CTRL_expressions_eyeLookUpL”, “CTRL_expressions_eyeLookUpR”, “CTRL_expressions_eyeLookDownL”, “CTRL_expressions_eyeLookDownR”, “CTRL_expressions_eyeLookLeftL”, “CTRL_expressions_eyeLookLeftR”, “CTRL_expressions_eyeLookRightL”, “CTRL_expressions_eyeLookRightR”, “CTRL_expressions_noseWrinkleL”, “CTRL_expressions_noseWrinkleR”, “CTRL_expressions_mouthCheekBlowL”, “CTRL_expressions_mouthCheekBlowR”, “CTRL_expressions_mouthLipsBlowL”, “CTRL_expressions_mouthLipsBlowR”, “CTRL_expressions_mouthLeft”, “CTRL_expressions_mouthRight”, “CTRL_expressions_mouthUpperLipRaiseL”, “CTRL_expressions_mouthUpperLipRaiseR”, “CTRL_expressions_mouthLowerLipDepressL”, “CTRL_expressions_mouthLowerLipDepressR”, “CTRL_expressions_mouthCornerPullL”, “CTRL_expressions_mouthCornerPullR”, “CTRL_expressions_mouthStretchL”, “CTRL_expressions_mouthStretchR”, “CTRL_expressions_mouthDimpleL”, “CTRL_expressions_mouthDimpleR”, “CTRL_expressions_mouthCornerDepressL”, “CTRL_expressions_mouthCornerDepressR”, “CTRL_expressions_mouthPressUL”, “CTRL_expressions_mouthPressUR”, “CTRL_expressions_mouthPressDL”, “CTRL_expressions_mouthPressDR”, “CTRL_expressions_mouthLipsPurseUL”, “CTRL_expressions_mouthLipsPurseUR”, “CTRL_expressions_mouthLipsPurseDL”, “CTRL_expressions_mouthLipsPurseDR”, “CTRL_expressions_mouthLipsTowardsUL”, “CTRL_expressions_mouthLipsTowardsUR”, “CTRL_expressions_mouthLipsTowardsDL”, “CTRL_expressions_mouthLipsTowardsDR”, “CTRL_expressions_mouthFunnelUL”, “CTRL_expressions_mouthFunnelUR”, “CTRL_expressions_mouthFunnelDL”, “CTRL_expressions_mouthFunnelDR”, “CTRL_expressions_mouthLipsTogetherUL”, “CTRL_expressions_mouthLipsTogetherUR”, “CTRL_expressions_mouthLipsTogetherDL”, “CTRL_expressions_mouthLipsTogetherDR”, “CTRL_expressions_mouthUpperLipRollInL”, “CTRL_expressions_mouthUpperLipRollInR”, “CTRL_expressions_mouthLowerLipRollInL”, “CTRL_expressions_mouthLowerLipRollInR”, “CTRL_expressions_jawOpen”, “CTRL_expressions_jawLeft”, “CTRL_expressions_jawRight”, “CTRL_expressions_jawFwd”, “CTRL_expressions_jawChinRaiseDL”, “CTRL_expressions_jawChinRaiseDR”]

float custom:mh_curveValues.timeSamples = {
0: [0, 0, 0.64384794, 0.5852724, 0.64384794, 0.5852724, 0.027489401, 0.04500466, 0, 0, 0.78822285, 1, 0, 0, 0, 0, 0, 0, 0.26082858, 0.26082858, 0.08300186, 0.08300186, 0.02926334, 0.02926334, 0, 0, 0, 0, 0, 0, 0, 0.019835854, 0.1779142, 0, 0, 0.37011006, 0.1027426, 0.21641243, 0, 0, 0, 0.144026, 0, 0, 0.76061785, 0.76061785, 0.76061785, 0.76061785, 0.06064373, 0.06064373, 0.06064373, 0.06064373, 0.024863929, 0.024863929, 0.024863929, 0.024863929, 0.24062957, 0.24062957, 0.24062957, 0.24062957, 0.06324068, 0.06324068, 0.06324068, 0.06324068, 0.016814176, 0.016814176, 0.016814176, 0.016814176, 0.08058706, 0, 0.13298735, 0, 0, 0],
1: [0, 0, 0.5927607, 0.55481714, 0.5927607, 0.55481714, 0.07200265, 0.07889689, 0, 0, 0.8643171, 1, 0, 0, 0, 0, 0, 0, 0.24973324, 0.24973324, 0.06040904, 0.06040904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008324214, 0.16102783, 0, 0, 0.6000405, 0.1230108, 0.23839326, 0, 0, 0, 0.22407222, 0, 0.0010182933, 0.55203086, 0.55203086, 0.55203086, 0.55203086, 0.04983052, 0.04983052, 0.04983052, 0.04983052, 0.020430513, 0.020430513, 0.020430513, 0.020430513, 0.19539043, 0.19539043, 0.19539043, 0.19539043, 0.078707576, 0.078707576, 0.078707576, 0.078707576, 0.044687755, 0.044687755, 0.044687755, 0.044687755, 0.10599342, 0, 0.14248186, 0, 0, 0],

I’m importing the mh_curveValues data into UE4 during runtime by using blueprint. However, the mouth looks terrible, it doesn’t open a lot. However, the mouth looks great when I import the exported usd file into UE4. Does the UE4 connector do some value conversions during the importing of blendshape usd? Why can’t I just import the mh_curveValues into UE4 metahuman?

Thank you,
Xiang

Hi, your curve data looks good to me. We didn’t do any value conversion for this curve data in UE4 connect, actually, it has been converted from the blendshape data to match with UE4 MetaHuman Animation Curves at A2F. So is it possible that you used the wrong Blueprint API to import curve data?

1 Like

Thank you JulianCao! We checked our UE4 blueprint, it turned out to be a bug on our end. I really appreciate your response!!

You’re welcome