268 lines
9.2 KiB
C++
268 lines
9.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Containers/Array.h"
|
|
#include "Containers/Map.h"
|
|
#include "Containers/Set.h"
|
|
|
|
struct RigControlLimits
|
|
{
|
|
float Min;
|
|
float Max;
|
|
};
|
|
|
|
struct RigControlInfo
|
|
{
|
|
FString Name;
|
|
RigControlLimits ModelLimits;
|
|
RigControlLimits RigLimits;
|
|
};
|
|
|
|
static inline const TArray<FString> BlinkRigControlNames = {
|
|
"CTRL_L_eye_blink.ty",
|
|
"CTRL_R_eye_blink.ty"
|
|
};
|
|
|
|
static inline const TArray<FString> RigControlNames = {
|
|
"CTRL_L_brow_down.ty",
|
|
"CTRL_R_brow_down.ty",
|
|
"CTRL_L_brow_lateral.ty",
|
|
"CTRL_R_brow_lateral.ty",
|
|
"CTRL_L_brow_raiseIn.ty",
|
|
"CTRL_R_brow_raiseIn.ty",
|
|
"CTRL_L_brow_raiseOut.ty",
|
|
"CTRL_R_brow_raiseOut.ty",
|
|
"CTRL_L_eye_blink.ty",
|
|
"CTRL_R_eye_blink.ty",
|
|
"CTRL_L_eye_squintInner.ty",
|
|
"CTRL_R_eye_squintInner.ty",
|
|
"CTRL_L_eye_cheekRaise.ty",
|
|
"CTRL_R_eye_cheekRaise.ty",
|
|
"CTRL_L_nose.ty",
|
|
"CTRL_R_nose.ty",
|
|
"CTRL_L_nose.tx",
|
|
"CTRL_R_nose.tx",
|
|
"CTRL_L_nose_nasolabialDeepen.ty",
|
|
"CTRL_R_nose_nasolabialDeepen.ty",
|
|
"CTRL_C_mouth.tx",
|
|
"CTRL_L_mouth_upperLipRaise.ty",
|
|
"CTRL_R_mouth_upperLipRaise.ty",
|
|
"CTRL_L_mouth_lowerLipDepress.ty",
|
|
"CTRL_R_mouth_lowerLipDepress.ty",
|
|
"CTRL_L_mouth_cornerPull.ty",
|
|
"CTRL_R_mouth_cornerPull.ty",
|
|
"CTRL_L_mouth_stretch.ty",
|
|
"CTRL_R_mouth_stretch.ty",
|
|
"CTRL_L_mouth_dimple.ty",
|
|
"CTRL_R_mouth_dimple.ty",
|
|
"CTRL_L_mouth_cornerDepress.ty",
|
|
"CTRL_R_mouth_cornerDepress.ty",
|
|
"CTRL_L_mouth_purseU.ty",
|
|
"CTRL_R_mouth_purseU.ty",
|
|
"CTRL_L_mouth_purseD.ty",
|
|
"CTRL_R_mouth_purseD.ty",
|
|
"CTRL_L_mouth_towardsU.ty",
|
|
"CTRL_R_mouth_towardsU.ty",
|
|
"CTRL_L_mouth_towardsD.ty",
|
|
"CTRL_R_mouth_towardsD.ty",
|
|
"CTRL_L_mouth_funnelU.ty",
|
|
"CTRL_R_mouth_funnelU.ty",
|
|
"CTRL_L_mouth_funnelD.ty",
|
|
"CTRL_R_mouth_funnelD.ty",
|
|
"CTRL_L_mouth_lipsTogetherU.ty",
|
|
"CTRL_R_mouth_lipsTogetherU.ty",
|
|
"CTRL_L_mouth_lipsTogetherD.ty",
|
|
"CTRL_R_mouth_lipsTogetherD.ty",
|
|
"CTRL_L_mouth_lipBiteU.ty",
|
|
"CTRL_R_mouth_lipBiteU.ty",
|
|
"CTRL_L_mouth_lipBiteD.ty",
|
|
"CTRL_R_mouth_lipBiteD.ty",
|
|
"CTRL_L_mouth_sharpCornerPull.ty",
|
|
"CTRL_R_mouth_sharpCornerPull.ty",
|
|
"CTRL_L_mouth_pushPullU.ty",
|
|
"CTRL_R_mouth_pushPullU.ty",
|
|
"CTRL_L_mouth_pushPullD.ty",
|
|
"CTRL_R_mouth_pushPullD.ty",
|
|
"CTRL_L_mouth_cornerSharpnessU.ty",
|
|
"CTRL_R_mouth_cornerSharpnessU.ty",
|
|
"CTRL_L_mouth_cornerSharpnessD.ty",
|
|
"CTRL_R_mouth_cornerSharpnessD.ty",
|
|
"CTRL_L_mouth_lipsRollU.ty",
|
|
"CTRL_R_mouth_lipsRollU.ty",
|
|
"CTRL_L_mouth_lipsRollD.ty",
|
|
"CTRL_R_mouth_lipsRollD.ty",
|
|
"CTRL_C_jaw.ty",
|
|
"CTRL_C_jaw.tx",
|
|
"CTRL_C_jaw_fwdBack.ty",
|
|
"CTRL_L_jaw_ChinRaiseD.ty",
|
|
"CTRL_R_jaw_ChinRaiseD.ty",
|
|
"CTRL_C_tongue_move.ty",
|
|
"CTRL_C_tongue_move.tx",
|
|
"CTRL_C_tongue_inOut.ty",
|
|
"CTRL_C_tongue_tipMove.ty",
|
|
"CTRL_C_tongue_tipMove.tx",
|
|
"CTRL_C_tongue_wideNarrow.ty",
|
|
"CTRL_C_tongue_press.ty",
|
|
"CTRL_C_tongue_roll.ty",
|
|
"CTRL_C_tongue_thickThin.ty"
|
|
};
|
|
|
|
namespace UE::MetaHuman
|
|
{
|
|
static const TMap<FString, FString> HeadControlsGuiToRawLookupTable = []()
|
|
{
|
|
TMap<FString, FString> Table;
|
|
|
|
Table.Add(TEXT("HeadTranslationX"), TEXT("mha_head_ik_ctrl.tx"));
|
|
Table.Add(TEXT("HeadTranslationY"), TEXT("mha_head_ik_ctrl.ty"));
|
|
Table.Add(TEXT("HeadTranslationZ"), TEXT("mha_head_ik_ctrl.tz"));
|
|
|
|
Table.Add(TEXT("HeadRoll"), TEXT("mha_head_ik_ctrl.rx"));
|
|
Table.Add(TEXT("HeadPitch"), TEXT("mha_head_ik_ctrl.ry"));
|
|
Table.Add(TEXT("HeadYaw"), TEXT("mha_head_ik_ctrl.rz"));
|
|
|
|
return Table;
|
|
}();
|
|
|
|
static const TSet<FString> MouthOnlyRawControls = {
|
|
TEXT("CTRL_expressions_jawChinCompressL"),
|
|
TEXT("CTRL_expressions_jawChinCompressR"),
|
|
TEXT("CTRL_expressions_jawChinRaiseDL"),
|
|
TEXT("CTRL_expressions_jawChinRaiseDR"),
|
|
TEXT("CTRL_expressions_jawChinRaiseUL"),
|
|
TEXT("CTRL_expressions_jawChinRaiseUR"),
|
|
TEXT("CTRL_expressions_jawClenchL"),
|
|
TEXT("CTRL_expressions_jawClenchR"),
|
|
TEXT("CTRL_expressions_jawFwd"),
|
|
TEXT("CTRL_expressions_jawLeft"),
|
|
TEXT("CTRL_expressions_jawOpen"),
|
|
TEXT("CTRL_expressions_jawOpenExtreme"),
|
|
TEXT("CTRL_expressions_mouthCheekBlowL"),
|
|
TEXT("CTRL_expressions_mouthCheekBlowR"),
|
|
TEXT("CTRL_expressions_mouthCornerDepressL"),
|
|
TEXT("CTRL_expressions_mouthCornerDepressR"),
|
|
TEXT("CTRL_expressions_mouthCornerPullL"),
|
|
TEXT("CTRL_expressions_mouthCornerPullR"),
|
|
TEXT("CTRL_expressions_mouthCornerSharpenDL"),
|
|
TEXT("CTRL_expressions_mouthCornerSharpenDR"),
|
|
TEXT("CTRL_expressions_mouthCornerSharpenUL"),
|
|
TEXT("CTRL_expressions_mouthCornerSharpenUR"),
|
|
TEXT("CTRL_expressions_mouthCornerUpL"),
|
|
TEXT("CTRL_expressions_mouthCornerUpR"),
|
|
TEXT("CTRL_expressions_mouthCornerWideL"),
|
|
TEXT("CTRL_expressions_mouthCornerWideR"),
|
|
TEXT("CTRL_expressions_mouthDimpleL"),
|
|
TEXT("CTRL_expressions_mouthDimpleR"),
|
|
TEXT("CTRL_expressions_mouthFunnelDL"),
|
|
TEXT("CTRL_expressions_mouthFunnelDR"),
|
|
TEXT("CTRL_expressions_mouthFunnelUL"),
|
|
TEXT("CTRL_expressions_mouthFunnelUR"),
|
|
TEXT("CTRL_expressions_mouthLeft"),
|
|
TEXT("CTRL_expressions_mouthLipsBlowL"),
|
|
TEXT("CTRL_expressions_mouthLipsBlowR"),
|
|
TEXT("CTRL_expressions_mouthLipsPressL"),
|
|
TEXT("CTRL_expressions_mouthLipsPressR"),
|
|
TEXT("CTRL_expressions_mouthLipsPurseDL"),
|
|
TEXT("CTRL_expressions_mouthLipsPurseDR"),
|
|
TEXT("CTRL_expressions_mouthLipsPurseUL"),
|
|
TEXT("CTRL_expressions_mouthLipsPurseUR"),
|
|
TEXT("CTRL_expressions_mouthLipsPushDL"),
|
|
TEXT("CTRL_expressions_mouthLipsPushDR"),
|
|
TEXT("CTRL_expressions_mouthLipsPushUL"),
|
|
TEXT("CTRL_expressions_mouthLipsPushUR"),
|
|
TEXT("CTRL_expressions_mouthLipsStickyLPh1"),
|
|
TEXT("CTRL_expressions_mouthLipsStickyRPh1"),
|
|
TEXT("CTRL_expressions_mouthLipsThinDL"),
|
|
TEXT("CTRL_expressions_mouthLipsThinDR"),
|
|
TEXT("CTRL_expressions_mouthLipsThinInwardDL"),
|
|
TEXT("CTRL_expressions_mouthLipsThinInwardDR"),
|
|
TEXT("CTRL_expressions_mouthLipsThinInwardUL"),
|
|
TEXT("CTRL_expressions_mouthLipsThinInwardUR"),
|
|
TEXT("CTRL_expressions_mouthLipsThinUL"),
|
|
TEXT("CTRL_expressions_mouthLipsThinUR"),
|
|
TEXT("CTRL_expressions_mouthLipsTightenDL"),
|
|
TEXT("CTRL_expressions_mouthLipsTightenDR"),
|
|
TEXT("CTRL_expressions_mouthLipsTightenUL"),
|
|
TEXT("CTRL_expressions_mouthLipsTightenUR"),
|
|
TEXT("CTRL_expressions_mouthLipsTogetherDL"),
|
|
TEXT("CTRL_expressions_mouthLipsTogetherDR"),
|
|
TEXT("CTRL_expressions_mouthLipsTogetherUL"),
|
|
TEXT("CTRL_expressions_mouthLipsTogetherUR"),
|
|
TEXT("CTRL_expressions_mouthLipsTowardsDL"),
|
|
TEXT("CTRL_expressions_mouthLipsTowardsDR"),
|
|
TEXT("CTRL_expressions_mouthLipsTowardsUL"),
|
|
TEXT("CTRL_expressions_mouthLipsTowardsUR"),
|
|
TEXT("CTRL_expressions_mouthLowerLipBiteL"),
|
|
TEXT("CTRL_expressions_mouthLowerLipBiteR"),
|
|
TEXT("CTRL_expressions_mouthLowerLipDepressL"),
|
|
TEXT("CTRL_expressions_mouthLowerLipDepressR"),
|
|
TEXT("CTRL_expressions_mouthLowerLipRollInL"),
|
|
TEXT("CTRL_expressions_mouthLowerLipRollInR"),
|
|
TEXT("CTRL_expressions_mouthLowerLipShiftLeft"),
|
|
TEXT("CTRL_expressions_mouthLowerLipTowardsTeethL"),
|
|
TEXT("CTRL_expressions_mouthLowerLipTowardsTeethR"),
|
|
TEXT("CTRL_expressions_mouthPressDL"),
|
|
TEXT("CTRL_expressions_mouthPressDR"),
|
|
TEXT("CTRL_expressions_mouthPressUL"),
|
|
TEXT("CTRL_expressions_mouthPressUR"),
|
|
TEXT("CTRL_expressions_mouthSharpCornerPullL"),
|
|
TEXT("CTRL_expressions_mouthSharpCornerPullR"),
|
|
TEXT("CTRL_expressions_mouthStickyDC"),
|
|
TEXT("CTRL_expressions_mouthStickyDINL"),
|
|
TEXT("CTRL_expressions_mouthStickyDINR"),
|
|
TEXT("CTRL_expressions_mouthStickyDOUTL"),
|
|
TEXT("CTRL_expressions_mouthStickyDOUTR"),
|
|
TEXT("CTRL_expressions_mouthStickyUC"),
|
|
TEXT("CTRL_expressions_mouthStickyUINL"),
|
|
TEXT("CTRL_expressions_mouthStickyUINR"),
|
|
TEXT("CTRL_expressions_mouthStickyUOUTL"),
|
|
TEXT("CTRL_expressions_mouthStickyUOUTR"),
|
|
TEXT("CTRL_expressions_mouthStretchL"),
|
|
TEXT("CTRL_expressions_mouthStretchLipsCloseL"),
|
|
TEXT("CTRL_expressions_mouthStretchLipsCloseR"),
|
|
TEXT("CTRL_expressions_mouthStretchR"),
|
|
TEXT("CTRL_expressions_mouthUp"),
|
|
TEXT("CTRL_expressions_mouthUpperLipBiteL"),
|
|
TEXT("CTRL_expressions_mouthUpperLipBiteR"),
|
|
TEXT("CTRL_expressions_mouthUpperLipRaiseL"),
|
|
TEXT("CTRL_expressions_mouthUpperLipRaiseR"),
|
|
TEXT("CTRL_expressions_mouthUpperLipRollInL"),
|
|
TEXT("CTRL_expressions_mouthUpperLipRollInR"),
|
|
TEXT("CTRL_expressions_mouthUpperLipShiftLeft"),
|
|
TEXT("CTRL_expressions_mouthUpperLipTowardsTeethL"),
|
|
TEXT("CTRL_expressions_mouthUpperLipTowardsTeethR"),
|
|
TEXT("CTRL_expressions_neckDigastricDown"),
|
|
TEXT("CTRL_expressions_neckMastoidContractL"),
|
|
TEXT("CTRL_expressions_neckMastoidContractR"),
|
|
TEXT("CTRL_expressions_neckStretchL"),
|
|
TEXT("CTRL_expressions_neckStretchR"),
|
|
TEXT("CTRL_expressions_neckSwallowPh1"),
|
|
TEXT("CTRL_expressions_neckThroatDown"),
|
|
TEXT("CTRL_expressions_neckThroatExhale"),
|
|
TEXT("CTRL_expressions_noseNasolabialDeepenL"),
|
|
TEXT("CTRL_expressions_noseNasolabialDeepenR"),
|
|
TEXT("CTRL_expressions_noseNostrilDilateL"),
|
|
TEXT("CTRL_expressions_noseNostrilDilateR"),
|
|
TEXT("CTRL_expressions_noseWrinkleL"),
|
|
TEXT("CTRL_expressions_noseWrinkleR"),
|
|
TEXT("CTRL_expressions_teethBackD"),
|
|
TEXT("CTRL_expressions_teethBackU"),
|
|
TEXT("CTRL_expressions_teethLeftD"),
|
|
TEXT("CTRL_expressions_teethLeftU"),
|
|
TEXT("CTRL_expressions_teethUpD"),
|
|
TEXT("CTRL_expressions_teethUpU"),
|
|
TEXT("CTRL_expressions_tongueBendUp"),
|
|
TEXT("CTRL_expressions_tongueIn"),
|
|
TEXT("CTRL_expressions_tongueLeft"),
|
|
TEXT("CTRL_expressions_tonguePress"),
|
|
TEXT("CTRL_expressions_tongueRoll"),
|
|
TEXT("CTRL_expressions_tongueThick"),
|
|
TEXT("CTRL_expressions_tongueTipLeft"),
|
|
TEXT("CTRL_expressions_tongueTipUp"),
|
|
TEXT("CTRL_expressions_tongueTwistLeft"),
|
|
TEXT("CTRL_expressions_tongueUp"),
|
|
TEXT("CTRL_expressions_tongueWide"),
|
|
};
|
|
} // namespace UE::MetaHuman
|