// 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 BlinkRigControlNames = { "CTRL_L_eye_blink.ty", "CTRL_R_eye_blink.ty" }; static inline const TArray 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 HeadControlsGuiToRawLookupTable = []() { TMap 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 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