Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Convert Genesis 3 expressions to Genesis 8 (female)
- author : mork
- created : 20.07.2017
- version : 1.00
- license : NOMIL NOGOV, besides that, do with it what you want.
- os : linux - yes
- windows - yes
- mac - yes
- dependencies:
- - none
- challenges:
- + map old morphs to new morphs
- + adjust values of certain morphs
- v1.0
- + initial version. quick&dirty style.
- */
- $g8_morphs = [ "PHMEyeRimRefineHD_div2", "SCLPropagatingHandL", "BaseJointCorrectives", "SCLPropagatingFootL", "PBMNavel", "PHMMouthRealism_HD_div2", "PBMNailsLength", "BaseFlexions", "SCLPropagatingFootR", "SCLPropagatingHandR", "SCLPropagatingHand", "SCLPropagatingFoot", "PBMNipples", "SCLPropagatingChest", "SCLPropagatingHead", "pJCMFlexCalf_R", "pJCMFlexCalf_L", "pJCMFlexTriceps_L", "pJCMFlexQuad_R", "pJCMFlexQuad_L", "pCTRLFlexBiceps_twist_R", "pJCMFlexCollarUpperBack_L", "pJCMFlexTriceps_R", "pJCMFlexBiceps_R", "pJCMFlexBiceps_L", "pJCMFlexGluteClench_R", "pJCMFlexHamstring_R", "pJCMFlexCollarUpperBack_R", "pCTRLFlexBiceps_twist_L", "pJCMFlexGluteClench_L", "pJCMFlexHamstring_L", "alias_lShldrTwist_YRotate2", "alias_lHand_pCTRLlFingersInOut", "alias_rHand_pCTRLrPinkyBend", "alias_lForearmTwist_YRotate2", "pCTRLrHandGrasp", "pCTRLArmsUpLeft", "pCTRLWaistBend", "pCTRLrToesSpread", "alias_rHand_pCTRLrFingersGrasp", "pCTRLBreastsFlatten", "alias_rForearmBend_XRotate2", "pCTRLArmsDownLeft", "alias_lHand_pCTRLlHandChop", "pCTRLrPinkyBend", "pCTRLArmsUpDwn", "alias_lHand_pCTRLlIndexBend", "pCTRLNeckHeadSide-Side", "alias_lHand_pCTRLlThumbGrasp", "alias_rFoot_pCTRLrFootTipToes", "pCTRLlFingersInOut", "pCTRLlMidBend", "pCTRLWaistSide", "pPBMlBreastsHangForward", "alias_lFoot_pCTRLlToesFanDown", "pCTRLlHandChop", "alias_rHand_pCTRLrRingBend", "alias_rHand_pCTRLrHandGrasp", "pCTRLArmsUpDwnRight", "pCTRLKneesUpRight", "pCTRLrFingersInOut", "pCTRLlFootRoll", "alias_lFoot_pCTRLlFootTipToes", "pCTRLrThumbFist", "alias_pelvis_pCTRLKneesUp", "alias_lHand_pCTRLlHandSpread", "pCTRLrRingToeBend", "alias_pelvis_pCTRLLegsSpreadLeft", "alias_lFoot_pCTRLlPinkyToeBend", "alias_lFoot_pCTRLlToesSpread", "alias_rFoot_pCTRLrFootRoll", "pCTRLShldrsFrntBck", "alias_pelvis_pCTRLHipBendBck", "alias_lHand_pCTRLlFingersFist", "alias_rFoot_pCTRLrIndexToeBend", "alias_rHand_pCTRLrThumbGrasp", "alias_rHand_pCTRLrThumbFist", "pCTRLlThumbBend", "alias_rFoot_pCTRLrFootTwist", "pCTRLlPinkyBend", "pCTRLrThumbInOut", "alias_rHand_pCTRLrHandSpread", "alias_pelvis_pCTRLWaistSide", "pCTRLlPinkyToeBend", "alias_rFoot_pCTRLrRingToeBend", "pCTRLlFingersFist", "pPBMrBreastsHangForward", "pCTRLrFingersOut", "pCTRLlThumbGrasp", "pCTRLrBreastSide-Side", "alias_rThighTwist_XRotate2", "alias_lFoot_pCTRLlIndexToeBend", "pCTRLlHandGrasp", "pCTRLlFingersIn", "pCTRLBreastsIn-Out", "alias_pelvis_pCTRLWaistTwist", "pCTRLlHandSpread", "alias_rHand_pCTRLrThumbBend", "pCTRLBreastsSide-Side", "pCTRLlRingBend", "pCTRLlToesFanDown", "pCTRLlIndexBend", "alias_lFoot_pCTRLlBigToeBend", "alias_head_pCTRLNeckHeadSide-Side", "pCTRLlThumbFist", "alias_rShldrBend_XRotate2", "pPBMlBreastsFlatten", "alias_pelvis_pCTRLWaistBend", "alias_lFoot_pCTRLlToesSmallCurl", "pCTRLKneesUpLeft", "pCTRLrToesFanDown", "pCTRLArmsUpRight", "alias_lHand_pCTRLlHandGrasp", "pCTRLArmsFrntBck", "pCTRLKneesUp", "pCTRLlFingersGrasp", "alias_rHand_pCTRLrFingersInOut", "pCTRLrPinkyToeBend", "pCTRLlHandFist", "alias_rFoot_pCTRLrBigToeBend", "alias_rShldrTwist_ZRotate2", "alias_lHand_pCTRLlThumbFist", "pCTRLrMidToeBend", "alias_pelvis_pCTRLKneesUpLeft", "pCTRLShouldersShrug", "pCTRLrFingersFist", "pCTRLrBigToeBend", "alias_rFoot_pCTRLrMidToeBend", "pCTRLrRingBend", "pCTRLWaistTwist", "pCTRLLegsSpread", "pCTRLlToesSmallCurl", "alias_lForearmBend_XRotate2", "pCTRLlMidToeBend", "pCTRLrFootRoll", "pCTRLrMidBend", "alias_lFoot_pCTRLlMidToeBend", "alias_rThighBend_YRotate2", "pPBMrBreastsFlatten", "pCTRLBreastsHangForward", "alias_rShldrTwist_YRotate2", "alias_rFoot_pCTRLrToesFanDown", "alias_pelvis_pCTRLLegsSpreadRight", "alias_rFoot_pCTRLrToesSpread", "pCTRLrFootTipToes", "alias_rHand_pCTRLrFingersFist", "pCTRLlToesSpread", "pCTRLBreastsUp-Down", "alias_rHand_pCTRLrHandFist", "alias_lThighTwist_ZRotate2", "pCTRLArmsFrntBckLeft", "pCTRLrFootTwist", "pCTRLlFootTwist", "pCTRLrIndexBend", "pCTRLlFingersOut", "pCTRLrHandSpread", "pCTRLrFingersIn", "alias_rFoot_pCTRLrToesSmallCurl", "alias_rHand_pCTRLrMidBend", "pCTRLrBreastUp-Down", "pCTRLlBigToeBend", "alias_rFoot_pCTRLrPinkyToeBend", "alias_lHand_pCTRLlThumbBend", "pCTRLrFingersGrasp", "pCTRLHipBendFwd", "alias_lHand_pCTRLlThumbInOut", "alias_lHand_pCTRLlMidBend", "pCTRLLegsSpreadLeft", "pCTRLlFootTipToes", "pCTRLlBreastSide-Side", "alias_rFoot_pCTRLrFootHeeledShoe", "alias_lFoot_pCTRLlFootTwist", "alias_pelvis_pCTRLHipBendFwd", "alias_head_pCTRLNeckHeadTwist", "pCTRLlThumbInOut", "alias_lShldrBend_XRotate2", "alias_lThighTwist_XRotate2", "pCTRLLegsSpreadRight", "alias_lHand_pCTRLlRingBend", "alias_pelvis_pCTRLHipBend", "pCTRLrIndexToeBend", "pCTRLlFootHeeledShoe", "alias_lFoot_pCTRLlFootRoll", "alias_lHand_pCTRLlHandFist", "alias_lShldrTwist_ZRotate2", "pCTRLHipBendBck", "pCTRLlIndexToeBend", "pCTRLArmsDownRight", "pCTRLNeckHeadTwist", "alias_rThighTwist_ZRotate2", "alias_rHand_pCTRLrThumbInOut", "alias_lThighBend_YRotate2", "alias_lFoot_pCTRLlFootHeeledShoe", "pCTRLrThumbGrasp", "alias_pelvis_pCTRLLegsSpread", "alias_lHand_pCTRLlFingersGrasp", "pCTRLrHandFist", "pCTRLArmsUpDwnLeft", "pCTRLrHandChop", "pCTRLrFootHeeledShoe", "alias_rForearmTwist_YRotate2", "pCTRLrToesSmallCurl", "alias_rHand_pCTRLrHandChop", "alias_head_pCTRLNeckHeadBend", "pCTRLNeckHeadBend", "pCTRLTorsoSlump", "alias_rHand_pCTRLrIndexBend", "pCTRLrThumbBend", "pCTRLHipBend", "alias_lHand_pCTRLlPinkyBend", "pCTRLlBreastUp-Down", "alias_pelvis_pCTRLKneesUpRight", "pCTRLlRingToeBend", "alias_lFoot_pCTRLlRingToeBend", "pCTRLArmsFrntBckRight", "PBMThighsTone", "PBMGlutesLowerDepth", "PBMGluteCreaseL", "PBMSacralDimples", "FBMHeight", "SCLFingersWidthR", "PBMWaistWidth", "PBMNavelDepth", "PBMAreolaeDiameter", "PBMBreastsDiameter", "PBMBreastsImplantsR", "SCLFingersLengthR", "PBMGlutesWidth", "PBMCostalAngleArched", "PBMFeetThickness", "PBMScapulaDepth", "PBMRectusOuterDetail", "PBMCalvesSize", "PBMNavelHollow", "SCLPalmScale", "SCLFingersLengthL", "PBMLegsLength", "PBMBreastsCleavage", "PBMNavelVertical", "PBMForearmsSize", "PBMBreastsShape01", "PBMRibcageSize", "SCLArmsLength", "PBMGlutesUpperDepth", "PBMFootLengthR", "PBMHipBoneSize", "PBMWristSize", "PBMBreastsShape02", "PBMNipplesDiameter", "PBMUpperArmsSize", "PBMBreastsDownwardSlope", "PBMShinsSize", "SCLChestWidth", "PBMBreastsPerkSide", "CTRLBreastsNatural", "PBMNipplesDepth", "PBMNipplesLarge", "PBMHipBoneCrest", "CTRLBodybuilder", "PBMThighsSize", "PBMBreastsNaturalR", "PBMBreastsShape03", "FBMThin", "PBMLatsSize", "SCLFingersLength", "PBMNavelHorizontal", "SCLFingersWidth", "FBMHeavy", "CTRLGluteCrease", "SCLNeckLength", "PBMFeetArch", "PBMBreastsShape06", "PBMSternumDepth", "PBMBreastsShape07", "FBMFitnessDetails", "FBMPearFigure", "FBMFitnessSize", "CTRLWeight", "PBMStomachDepth", "PBMBreastsUpwardSlope", "PBMHandsThickness", "FBMVoluptuous", "PBMBreastsImplantsL", "PBMTorsoLength", "PBMFootLengthL", "PBMKneeBonesSize", "PBMSternumWidth", "PBMBreastsShape04", "FBMBodybuilderSize", "PBMBreastsGone", "PBMIliacLine", "PBMShouldersSize", "PBMNeckSize", "PBMBreastsNaturalL", "SCLShldrsWidth", "PBMNavelSize", "SCLPalmScaleR", "PBMStomachLowerDepth", "PBMSternumHeight", "FBMBodybuilderDetails", "PBMNipplesSize", "PBMBreastsShape08", "SCLFingersWidthL", "PBMLoveHandles", "SCLShldrsScale", "PBMGluteCreaseR", "PBMLineaAlbaDepth", "FBMEmaciated", "PBMNavelOut", "PBMTrapsSize", "PBMHipSize", "PBMBreastsShape05", "PBMBreastsSize", "PBMPregnant", "PBMBreastsUnderCurve", "PBMAreolaeDepth", "CTRLBreastsImplants", "SCLChestDepth", "SCLPalmScaleL", "PBMAreolaePerk", "PBMCostalAnglePointed", "PBMBreastsHeavy", "FBMBodyTone", "PBMRectusWidth", "FBMBodySize", "PBMScapulaSize", "PBMCollarboneDetail", "PBMStomachSoften", "CTRLFootLength", "PBMGlutesSize", "CTRLFitness", "PBMBreastsSmall", "pJCMThumb3Bend_90_R", "pJCMNeckLowerSide_40_R", "pJCMChestFwd_35", "pJCMShldrFront_p110_Bend_n90_R", "pJCMThumb2Bend_65_L", "pJCMShldrFront_n110_Bend_n40_L", "pJCMPinky3Dwn_90_L", "pJCMAbdomenFwd_35", "pJCMRing2Dwn_105_L", "pJCMIndex2Dwn_105_R", "pJCMHeadBack_27", "pJCMThighSide_85_L", "pJCMForeArmFwd_135_R", "pJCMNeckFwd_35", "pJCMCollarTwist_p30_L", "pJCMThumb2Bend_65_R", "pJCMThumb1Bend_50_R", "pJCMCollarUp_55_R", "pJCMFootUp_40_L", "pJCMThighSide_85_R", "pJCMShldrUp_90_L", "pJCMHandDwn_70_L", "rShldrBend_CTRLMD_N_ZRotate_n90", "rShldrBend_CTRLMD_N_YRotate_110", "pJCMShinBend_155_L", "pJCMShldrUp_90_R", "pJCMRing1Dwn_95_R", "pJCMAbdomenLowerFwd_Navel", "pJCMShldrFwd_110_L", "pJCMPinky2Dwn_105_L", "pJCMRing3Dwn_90_R", "pJCMThumb1Up_20_L", "pJCMForeArmFwd_135_L", "pJCMThighBack_35_L", "pJCMIndex3Dwn_90_R", "lShldrBend_CTRLMD_N_ZRotate_n40", "pJCMCollarTwist_n30_L", "pJCMHandUp_80_L", "pJCMShinBend_90_R", "pJCMNeckTwist_Reverse", "pJCMToesUp_60_L", "pJCMAbdomen2Side_24_L", "pJCMIndex2Dwn_105_L", "pJCMNeckBack_27", "pJCMMid2Dwn_105_R", "pJCMShldrFwd_110_R", "lShldrBend_CTRLMD_N_YRotate_n110", "pJCMIndex1Dwn_90_L", "pJCMPinky2Dwn_105_R", "pJCMForeArmFwd_75_L", "lShldrBend_CTRLMD_N_ZRotate_90", "pJCMThumb1Bend_50_L", "pJCMIndex3Dwn_90_L", "pJCMThighFwd_57_R", "pJCMMid3Dwn_90_R", "pJCMNeckTwist_22_R", "pJCMShldrFront_n110_Bend_p90_L", "pJCMMid1Dwn_95_R", "pJCMShinBend_155_R", "pJCMChestSide_20_L", "pJCMForeArmFwd_75_R", "pJCMShldrDown_40_R", "pJCMIndex1Dwn_90_R", "pJCMThighFwd_57_L", "pJCMCollarUp_55_L", "pJCMRing3Dwn_90_L", "pJCMThumb1Up_20_R", "pJCMThighBack_35_R", "pJCMHandDwn_70_R", "pJCMHandUp_80_R", "pJCMThighFwd_115_L", "pJCMMid2Dwn_105_L", "pJCMRing2Dwn_105_R", "pJCMShldrDown_40_L", "pJCMHeadFwd_25", "pJCMAbdomen2Side_24_R", "pJCMMid1Dwn_95_L", "pJCMCollarTwist_n30_R", "pJCMAbdomenUpperFwd_Navel", "pJCMMid3Dwn_90_L", "pJCMNeckLowerSide_40_L", "pJCMShinBend_90_L", "pJCMToesUp_60_R", "pJCMChestSide_20_R", "pJCMRing1Dwn_95_L", "pJCMThumb3Bend_90_L", "pJCMFootDwn_75_R", "pJCMFootUp_40_R", "pJCMThighFwd_115_R", "pJCMPelvisFwd_25", "pJCMPinky1Dwn_95_R", "pJCMShldrFront_p110_Bend_p40_R", "pJCMPinky1Dwn_95_L", "rShldrBend_CTRLMD_N_ZRotate_40", "pJCMNeckTwist_22_L", "pJCMFootDwn_75_L", "pJCMPinky3Dwn_90_R", "pJCMBigToeDown_45_L", "pJCMAbdomen2Fwd_40", "pJCMCollarTwist_p30_R", "pJCMBigToeDown_45_R", "PHMLipWidthUpper", "PHMNoseTwist", "PHMEarsDepth", "PHMNostrilWingSize", "PHMLipsThin", "PHMBrowLateralProminenceHD", "PHMTemplesNarrow", "PHMEyesIrisSize_neg", "PHMNoseSize", "PHMChinCleftHD", "PHMForeheadThin", "PHMNoseHeight", "PHMForeheadRound", "PHMMouthWidth", "PHMForeheadWrinkleHDR", "PHMFaceCenterDepth", "PHMBrowWidth", "PHMTeethGap", "PHMBrowSlackHD", "PHMCheeksSlackHD", "PHMNoseBridgeWidth", "PHMNoseFleshSize", "PHMUnderMouthSlackHD", "PHMForeheadFlat", "MCMCheekbonesLarge", "PHMEyesPupilsSlit", "PHMEarlobesLength", "PHMEyelidsUpperHeight", "PHMNoseTipHeight", "PHMNoseRidgeWidth", "PHMEyesAlmondInner", "PHMNoseSkew", "PHMBrowThinHD", "PHMEyelidsLowerCreaseHD", "PHMCheekbonesArchSizeHD", "PHMEyesAlmondOuter", "PHMNoseWidth", "CTRLFaceOlderHD", "PHMLipDepthUpper", "PHMBrowSuperciliaryArchHD", "CTRLEyesIrisSize", "MCMFaceAngleForward", "PHMCrowsFeetHDL", "PHMJawlineDepth", "CTRLFaceAngle", "PHMEyesPuffyLower", "PHMEarsElf", "PHMEyelidsSmooth", "PHMMarionetteLinesHD", "PHMCheeksDepth", "PHMEyesSize", "PHMFaceYoung", "PHMLipUpperCurves", "MCMCheekbonesSmall", "PHMEyesCorneaBulge", "PHMMouthCurves", "PHMMouthHeight", "PHMNoseBridgeDepth", "PHMNoseTipRound", "CTRLCheekbonesSize", "PHMEyesAngledInner", "PHMEyelidsFoldDown", "PHMNoseTipDepth", "PHMEyelidsLowerHeight", "PHMBrowDepth", "PHMEarsHeight", "PHMNoseSeptumHeight", "MCMFaceAngleBack", "PHMEyesAngled", "PHMForeheadWrinkleHDL", "PHMJawSize", "PHMLipWidthLower", "PHMFaceHeart", "PHMCheekbonesDepressionHD", "PHMTeethSizeLower", "PHMEyelidsHeavy", "PHMNoseRidge", "PHMEyelashesLengthUpper", "PHMFaceSquare", "PHMNoseDepth", "PHMTeethIrregular", "PHMEyesIrisSize_pos", "PHMEyelashesHideLayer2", "PHMEyelashesHideLayer1", "PHMPhiltrumWidth", "PHMCheeksSize", "PHMMouthSize", "PHMEyesAngledOuter", "PHMLacrimalsSize", "PHMNoseSide-Side", "PHMJawCornerWidth", "PHMPhiltrumAngle", "PHMEyesHeight", "PHMLipsHeart", "PHMEarlobesSize", "PHMLipLowerSize", "PHMEyesDepth", "PHMJawCurve", "PHMEyesPupilsDilate", "PHMTeethSizeUpper", "PHMCrowsFeetHDR", "PHMCheekbonesThin", "CTRLCrowsFeetHD", "PHMJawDefine", "PHMFaceFlat", "PHMNoseTipWidth", "PHMNoseSeptumWidth", "PHMNoseBridgeSkew", "PHMMouthDepth", "PHMLipsContourHD", "PHMEyelashesTopPoint", "PHMEyesPuffyUpper", "PHMNoseSeptumDepth", "PHMLipUpperSize", "PHMNostrilWingWidth", "PHMLacrimalsPinch", "PHMFaceRound", "PHMChinWidth", "PHMEyesWidth", "PHMNoseBridgeSlope", "PHMChinDepth", "PHMEyelashesLengthLower", "PHMCheeksSink", "PHMNostrilWingHeight", "PHMEarlobesAttached", "PHMPhiltrumDepth", "PHMEyesInnerDepth", "PHMChinCreaseFill", "PHMLipsSquare", "PHMJawAngle", "PHMNoseBump", "PHMLipDepthLower", "CTRLForeheadWrinkleHD", "PHMEyelashesCurl", "PHMChinCreaseHD", "PHMCraniumSlope", "PHMJawHeight", "PHMNosePinch", "PHMJawSlackHD", "PHMNoseBridgeHeight", "PHMEarsElfLong", "PHMEarsSize", "PHMLipTopPeak", "PHMNostrilWingDepth", "CloneGenesis2Male", "CloneGenesis2Female", "CloneGenesis", "CloneGenesis3Female", "CloneGenesis3Male", "eCTRLIncredulous_HD", "eJCMFlirting_HD_div2", "eJCMSmileFullFace_HD_div2", "eCTRLSurprised_HD", "eCTRLDesire_HD", "eJCMBored_HD_div2", "alias_head_eCTRLPleased_HD", "alias_head_eCTRLSuspicious_HD", "alias_head_eCTRLSarcastic_HD", "alias_head_eCTRLDisgust_HD", "eCTRLGlare_HD", "eJCMSurprise_HD_div2", "eJCMDrunk_HD_div2", "eCTRLSnarl_HD", "eJCMIgnore_HD_div2", "eCTRLFrown_HD", "eJCMSilly_HD_div2", "eJCMFierce_HD_div2", "eCTRLSarcastic_HD", "alias_head_eCTRLSurprised_HD", "eJCMShock_HD_div2", "eCTRLIgnore_HD", "eJCMConfused_HD_div2", "eJCMBereft_HD_div2", "eCTRLSuspicious_HD", "eJCMIll_HD_div2", "eCTRLFlirting_HD", "alias_head_eCTRLSmileFullFace_HD", "eCTRLPain_HD", "eCTRLConfused_HD", "alias_head_eCTRLFlirting_HD", "eJCMRage_HD_div2", "eJCMSnarl_HD_div2", "eJCMSad_HD_div2", "alias_head_eCTRLFierce_HD", "eCTRLFierce_HD", "eCTRLRage_HD", "alias_head_eCTRLAngry_HD", "alias_head_eCTRLPain_HD", "eJCMDesire_HD_div2", "eJCMAngry_HD_div2", "eCTRLSmileFullFace_HD", "alias_head_eCTRLFear_HD", "alias_head_eCTRLScream_HD", "alias_head_eCTRLIrritated_HD", "alias_head_eCTRLShock_HD", "eJCMDisgust_HD_div2", "eCTRLTriumph_HD", "eJCMConcentrate_HD_div2", "eJCMFear_HD_div2", "eJCMPain_HD_div2", "eJCMWink_HD_div2", "eJCMSmileOpenFullFace_HD_div2", "eCTRLSerious_HD", "eCTRLDisgust_HD", "eJCMTired_HD_div2", "alias_head_eCTRLWink_HD", "alias_head_eCTRLFrown_HD", "eCTRLIll_HD", "eJCMScream_HD_div2", "eCTRLPleased_HD", "eJCMFrown_HD_div2", "eCTRLShock_HD", "eJCMIncredulous_HD_div2", "eCTRLDrunk_HD", "alias_head_eCTRLSilly_HD", "alias_head_eCTRLRage_HD", "eCTRLAfraid_HD", "alias_head_eCTRLConfused_HD", "eCTRLWink_HD", "alias_head_eCTRLGlare_HD", "eJCMHappy_HD_div2", "eCTRLConcentrate_HD", "eCTRLSad_HD", "alias_head_eCTRLSmileOpenFullFace_HD", "alias_head_eCTRLTired_HD", "eJCMSuspicious_HD_div2", "alias_head_eCTRLSad_HD", "eJCMPleased_HD_div2", "eCTRLTired_HD", "alias_head_eCTRLPouty_HD", "eCTRLContempt_HD", "alias_head_eCTRLHappy_HD", "alias_head_eCTRLIll_HD", "eJCMExcitement_HD_div2", "eCTRLSilly_HD", "eJCMSerious_HD_div2", "eCTRLIrritated_HD", "alias_head_eCTRLAfraid_HD", "alias_head_eCTRLSnarl_HD", "eCTRLHappy_HD", "alias_head_eCTRLBereft_HD", "eCTRLBored_HD", "eJCMContempt_HD_div2", "alias_head_eCTRLConfident_HD", "eCTRLFear_HD", "eCTRLSmileOpenFullFace_HD", "alias_head_eCTRLDrunk_HD", "alias_head_eCTRLTriumph_HD", "eJCMPouty_HD_div2", "eJCMConfident_HD_div2", "eCTRLScream_HD", "eJCMIrritated_HD_div2", "eCTRLAngry_HD", "eCTRLBereft_HD", "alias_head_eCTRLExcitement_HD", "alias_head_eCTRLIgnore_HD", "alias_head_eCTRLConcentrate_HD", "alias_head_eCTRLDesire_HD", "eJCMTriumph_HD_div2", "alias_head_eCTRLIncredulous_HD", "eCTRLPouty_HD", "eJCMAfraid_HD_div2", "alias_head_eCTRLSerious_HD", "eCTRLConfident_HD", "eJCMSarcastic_HD_div2", "eCTRLExcitement_HD", "alias_head_eCTRLBored_HD", "eJCMGlare_HD_div2", "alias_head_eCTRLContempt_HD", "alias_head_eCTRLLipTopUp-DownR", "eCTRLEyesRelaxL", "alias_head_eCTRLvM", "alias_head_eCTRLMouthSmileSimpleL", "eCTRLvER", "alias_head_eCTRLCheekEyeFlex", "alias_head_eCTRLvEE", "alias_head_eCTRLvAA", "alias_head_eCTRLEyesSideSide", "eCTRLMouthSide-Side", "eCTRLLipTopUp-DownL", "alias_head_eCTRLLipBottomOut-In", "eCTRLEyesRelaxR", "eCTRLBrowOuterUp-DownR", "eCTRLTongueCurl", "eCTRLLipsPart", "alias_head_eCTRLMouthCornerUp-DownL", "eCTRLLipBottomUp-Down", "eCTRLBrowOuterUp-Down", "eCTRLvF", "alias_head_PHMCheeksDimpleCreaseR_HD_div2", "eCTRLEyelidsLowerUpDown", "alias_head_eCTRLLipBottomUp-DownR", "eCTRLvIY", "alias_head_eCTRLBrowOuterUp-DownR", "alias_head_CTRLCheeksDimpleCreaseHD", "eCTRLMouthWideL", "eJCMLipsPucker", "eCTRLNoseWrinkle", "alias_head_eCTRLCheeksBalloon-SuckInL", "eCTRLvW", "eCTRLvL", "eCTRLEyelidsUpperUp-DownL", "alias_head_eCTRLEyesClosed", "alias_head_eCTRLvOW", "alias_head_eCTRLLipsClosed-BareTeeth", "eCTRLvT", "alias_head_eCTRLvTH", "alias_head_eCTRLEyesSquint-WidenL", "eCTRLMouthCornerUp-DownR", "eJCMCheeksBalloonR", "eCTRLMouthOpen", "alias_head_eCTRLCheekFlex-SlackL", "eCTRLvUW", "eCTRLLipBottomOut-In", "eCTRLBrowInnerUp-DownL", "alias_head_eCTRLMouthSide-Side", "eCTRLTongueBendTip", "eCTRLLipsPartCenter", "alias_head_eCTRLMouthSmileSimple", "alias_head_eCTRLCheeksBalloonPucker", "alias_head_eCTRLCheekFlex-Slack", "ePHMCheekCreaseR", "alias_head_ePHMCheekCreaseL", "eCTRLLipBottomUp-DownR", "eCTRLMouthSmile", "eCTRLCheeksBalloon-SuckIn", "alias_head_eCTRLMouthWide-NarrowR", "eCTRLLipTopOut-InR", "eCTRLvK", "eCTRLMouthCornerUp-DownL", "eCTRLLipTopUp-DownR", "eJCMMouthBareTeeth", "alias_head_eCTRLLipsPucker-Pressed", "alias_head_PHMCheeksDimpleCreaseL_HD_div2", "alias_head_eCTRLCheeksBalloon-SuckInR", "eCTRLBrowUp-DownL", "eCTRLEyesSideSide", "eCTRLEyelidsLowerUpDownL", "eJCMLipsPressed", "eCTRLEyesClosed", "alias_head_eCTRLLipTopOut-InR", "eCTRLTongueRaise-Lower", "alias_head_eCTRLLipBottomUp-Down", "alias_head_eCTRLCheekEyeFlexR", "eCTRLCheekEyeFlexL", "eCTRLvOW", "alias_head_eCTRLMouthSmile", "eCTRLEyesSquint-Widen", "eCTRLLipBottomOut-InL", "alias_head_eCTRLJawSide-Side", "eCTRLMouthNarrowL", "alias_head_eCTRLNoseWrinkle", "eCTRLMouthCornerForward-BackR", "eCTRLvAA", "eCTRLCheekFlex-SlackR", "PHMCheeksDimpleCreaseL_HD_div2", "alias_head_eCTRLTongueBendTip", "eCTRLNoseScrunch", "ePHMCheekCreaseL", "eCTRLMouthNarrowR", "eCTRLvSH", "eCTRLLipsClosed-BareTeeth", "alias_head_eCTRLvK", "alias_head_eCTRLMouthWide-Narrow", "eCTRLCheekCrease", "alias_head_eCTRLEyelidsLowerUpDownR", "alias_head_eCTRLBrowSqueezeL", "PHMBrowCompression_HD_div2", "eCTRLLipsPucker-Pressed", "alias_head_eCTRLvF", "eCTRLvIH", "alias_head_eCTRLBrowInnerUp-Down", "alias_head_eCTRLMouthCornerUp-Down", "alias_head_eCTRLvIH", "eCTRLEyesSquintR", "eCTRLvTH", "alias_head_eCTRLMouthOpen", "alias_head_eCTRLEyesCrossed", "eCTRLMouthCornerUp-Down", "eCTRLBrowSqueeze", "eCTRLBrowOuterUp-DownL", "alias_head_ePHMCheekCreaseR", "eCTRLEyelidsUpperUp-DownR", "eCTRLCheekSlackR", "eCTRLEyelidsUpperUpL", "eCTRLTongueUp-Down", "eCTRLEyesUpDown", "alias_head_eCTRLMouthCornerUp-DownR", "alias_head_eCTRLEyelidsLowerUpDown", "alias_head_eCTRLTongueCurl", "eCTRLCheekEyeFlexR", "eCTRLJawOut-In", "alias_head_eCTRLNostrilsFlex", "eCTRLTongueSide-Side", "eCTRLLipsPuckerWide", "eCTRLCheekFlex-SlackL", "eCTRLBrowInnerUp-Down", "alias_head_eCTRLTongueRaise-Lower", "eCTRLvEH", "alias_head_eCTRLTongueNarrow-Wide", "alias_head_eCTRLLipBottomOut-InR", "eCTRLMouthSmileOpen", "eCTRLTongueNarrow-Wide", "eCTRLvEE", "eCTRLCheeksSuckInR", "alias_head_eCTRLTongueSide-Side", "eCTRLBrowSqueezeL", "alias_head_eCTRLEyesRelaxR", "eCTRLLipsPucker", "eCTRLMouthSide-SideL", "eCTRLNostrilsFlex", "alias_head_eCTRLvIY", "eCTRLBrowSqueezeR", "alias_head_eCTRLBrowSqueeze", "PHMNoseCompression_HD_div2", "alias_head_eCTRLEyelidsLowerUpDownL", "eCTRLLipBottomUp-DownL", "eCTRLCheeksBalloon-SuckInL", "eCTRLTongueIn-Out", "eCTRLLipTopUp-Down", "eCTRLEyesClosedL", "alias_head_eCTRLEyelidsUpperUp-DownL", "eCTRLMouthWideR", "eCTRLMouthSide-SideR", "eCTRLEyesClosedR", "eCTRLLipTopOut-InL", "alias_head_eCTRLMouthCornerForward-Back", "eCTRLEyesWidenR", "eCTRLMouthFrown", "eCTRLEyesSquintL", "eCTRLvS", "alias_head_eCTRLMouthCornerForward-BackR", "alias_head_PHMBrowCompression_HD_div2", "eCTRLMouthCornerForward-BackL", "alias_head_eCTRLvL", "alias_head_eCTRLLipTopOut-InL", "eCTRLMouthOpenLipsClose", "alias_head_eCTRLvW", "eCTRLMouthWide-NarrowR", "alias_head_eCTRLvT", "eCTRLCheekFlexR", "alias_head_eCTRLvS", "alias_head_eCTRLEyesUpDown", "alias_head_eCTRLMouthWide-NarrowL", "alias_head_eCTRLTongueUp-Down", "eCTRLEyelidsUpperUp-Down", "eCTRLMouthBareTeeth", "alias_head_eCTRLMouthCornerForward-BackL", "eCTRLEyesCrossed", "eCTRLLipTopOut-In", "alias_head_eCTRLCheeksBalloon-SuckIn", "alias_head_eCTRLLipTopOut-In", "alias_head_eCTRLEyelidsUpperUp-DownR", "eCTRLMouthWide-NarrowL", "alias_head_eCTRLvEH", "eCTRLCheekSlackL", "eCTRLvM", "eCTRLCheekEyeFlex", "eCTRLCheekFlexL", "eCTRLEyesSquint-WidenR", "alias_head_eCTRLMouthSmileSimpleR", "alias_head_eCTRLBrowUp-Down", "alias_head_eCTRLBrowOuterUp-DownL", "eCTRLMouthSmileSimple", "alias_head_eCTRLBrowInnerUp-DownL", "eCTRLBrowInnerUp-DownR", "eCTRLLipsPressed", "alias_head_eCTRLLipsPartCenter", "PHMCheeksDimpleCreaseR_HD_div2", "alias_head_eCTRLCheekEyeFlexL", "alias_head_eCTRLvER", "eCTRLJawSide-Side", "alias_head_eCTRLBrowSqueezeR", "CTRLCheeksDimpleCreaseHD", "eCTRLCheeksSuckInL", "eCTRLEyelidsUpperDownL", "eCTRLCheeksBalloonL", "alias_head_eCTRLLipBottomOut-InL", "alias_head_eCTRLEyesRelaxL", "eCTRLBrowUp-DownR", "alias_head_eCTRLEyesRelax", "alias_head_eCTRLCheekFlex-SlackR", "alias_head_eCTRLMouthClosed", "alias_head_eCTRLJawOut-In", "alias_head_eCTRLLipTopUp-Down", "alias_head_eCTRLMouthSmileOpen", "eCTRLCheeksBalloon-SuckInR", "alias_head_eCTRLTongueIn-Out", "alias_head_eCTRLEyesSquint-Widen", "alias_head_PHMNoseCompression_HD_div2", "eCTRLCheekFlex-Slack", "eCTRLCheeksBalloonR", "eCTRLMouthClosed", "eCTRLLipBottomOut-InR", "eCTRLCheeksBalloonPucker", "alias_head_eCTRLLipsPart", "alias_head_eCTRLLipBottomUp-DownL", "alias_head_eCTRLNoseScrunch", "alias_head_eCTRLBrowUp-DownL", "alias_head_eCTRLBrowInnerUp-DownR", "alias_head_eCTRLLipTopUp-DownL", "eCTRLBrowUp-Down", "alias_head_eCTRLEyesClosedR", "alias_head_eCTRLCheekCrease", "alias_head_eCTRLvUW", "alias_head_eCTRLBrowUp-DownR", "eCTRLEyelidsLowerUpDownR", "eCTRLEyesRelax", "alias_head_eCTRLLipsPuckerWide", "eCTRLMouthWide-Narrow", "eCTRLMouthCornerForward-Back", "eCTRLEyesSquint-WidenL", "alias_head_eCTRLBrowOuterUp-Down", "eCTRLMouthSmileSimpleR", "eCTRLMouthSmileSimpleL", "alias_head_eCTRLvSH", "alias_head_eCTRLEyesClosedL", "alias_head_eCTRLEyesSquint-WidenR", "alias_head_eCTRLEyelidsUpperUp-Down", "eJCMCheeksBalloonL", "eCTRLEyesWidenL", "alias_head_eCTRLMouthFrown", "eCTRLEyelidsUpperUpR", "eCTRLEyelidsUpperDownR", "pJCMVictoria8ShoulderBndFwd_90R_HDLv1", "eJCMVictoria8SmileOpenFullFace_HDLv2", "eCTRLVictoria8Excitement_HD", "eJCMVictoria8BrowSqueezeL_HDLv1", "pJCMVictoria8HeadTwistR_HDLv2", "pJCMVictoria8HeadTwistL_HDLv2", "pJCMVictoria8FootBndUpR", "pJCMVictoria8ShinBndBck_90R", "pJCMVictoria8ToeBndUpL", "eJCMVictoria8Wink_HDLv2", "eJCMVictoria8EyelidsSmooth", "eJCMVictoria8EarlobesAttached", "pJCMVictoria8ForeArmBndL_HDLv1", "eJCMVictoria8SmileFullFace_HDLv2", "pJCMVictoria8ShoulderBndUpR_HDLv2", "pJCMVictoria8ThighSideSideR", "eJCMVictoria8Scream_HDLv2", "pJCMVictoria8ShoulderBndUpL_HDLv2", "pJCMVictoria8ThighSideSideL", "eJCMVictoria8BreastsGone", "FBMVictoria8", "CTRLVictoria8", "eJCMVictoria8LipsPuckerWide_HDLv1", "FHMVictoria8", "eJCMVictoria8Fear_HDLv2", "pJCMVictoria8FootBndUpL", "pJCMVictoria8ThighBndFwd_n80L", "eJCMVictoria8Happy_HDLv2", "eJCMVictoria8CheekCreaseL_HDLv1", "eJCMVictoria8EyesClosedL", "eJCMVictoria8BrowSqueezeR_HDLv1", "pJCMVictoria8AbdomenUpperBndFwd", "pJCMVictoria8ShoulderBndFwd_n90L_HDLv1", "eJCMVictoria8BreastsSmall", "eJCMVictoria8Pain_HDLv2", "pJCMVictoria8ToeBndUpR", "eJCMVictoria8Afraid_HDLv2", "pJCMVictoria8ThighBndFwd_n80R", "eJCMVictoria8EyesClosedR", "eJCMVictoria8Angry_HDLv2", "eCTRLVictoria8MouthSmile", "pJCMVictoria8CollarBndUpR", "pJCMVictoria8ShinBndBck_90L", "pJCMVictoria8ForeArmBndR_HDLv1", "pJCMVictoria8ForearmBnd_n110L", "pJCMVictoria8CollarBndUpL", "pJCMVictoria8ChestLowerBndFwd", "eJCMVictoria8CheekCreaseR_HDLv1", "pJCMVictoria8ForearmBnd_110R", "eJCMVictoria8Rage_HDLv2", "eJCMVictoria8NoseWrinkle_HDLv1", "pJCMVictoria8NeckBndFwd_HDLv2" ];
- $ignore = ["/^(Z BE) /isU", // the reset morph references its own morphs
- "/^eCTRLMouthOpenWide$/", // that is a special case
- "/^ePHM-FWSA/isU", // that should not be in the files, but it is
- "/^Z_Heat_/isU", // that should not be in the files, but it is
- ];
- /*---------- Check arguments ----------*/
- if (!isset($argv[1]))
- die("\nUsage: php ".basename(__FILE__)." <path_to_expressions>\n\nPoint it to the folder where the expression .duf files are located.\n\nPLEASE MAKE A BACKUP, JUST IN CASE!!!!!\n\n");
- $_dir_src = $argv[1];
- if (!is_dir($_dir_src)) die("Source folder is not a folder");
- function DAZ_key_getVal($data, $key) {
- if (!$data || !$key) return false;
- $tmp = explode("\n", $data);
- foreach($tmp as $k => $v) {
- if (stripos($v, $key.":") !== false) {
- if (preg_match("/([0-9\.-]+)\s?,\s?([0-9\.-]+)/i", $tmp[$k+1], $match)) {
- return [ $match[1], $match[2] ];
- }
- }
- }
- return 0;
- }
- function DAZ_key_mul(&$data, $key, $mul) {
- if (!$data) return false;
- if (stripos($data, $key) === false) return false;
- $tmp = explode("\n", $data);
- foreach($tmp as $k => $v) {
- if (stripos($v, $key.":") !== false) {
- # echo "___match $v\n";
- if (preg_match("/([0-9\.-]+)\s?,\s?([0-9\.-]+)/i", $tmp[$k+1], $match)) {
- # echo "Modifier $key has these values: ".$match[1].", ".$match[2]."\n";
- $old = $match[2];
- $match[2] *= $mul;
- $tmp[$k+1] = str_replace($match[0], "{$match[1]}, {$match[2]}", $tmp[$k+1]);
- # echo "($old)($mul) ".$tmp[$k+1]."\n";
- }# else echo "No values in ".$tmp[$k+1]."\n";
- }
- }
- $data = implode("\n", $tmp);
- }
- function DAZ_key_add(&$data, $key, $add) {
- if (!$data) return false;
- if (stripos($data, $key) === false) return false;
- $tmp = explode("\n", $data);
- foreach($tmp as $k => $v) {
- if (stripos($v, $key.":") !== false) {
- # echo "___match $v\n";
- if (preg_match("/([0-9\.-]+)\s?,\s?([0-9\.-]+)/i", $tmp[$k+1], $match)) {
- # echo "Modifier $key has these values: ".$match[1].", ".$match[2]."\n";
- $old = $match[2];
- $match[2] += $add;
- $tmp[$k+1] = str_replace($match[0], "{$match[1]}, {$match[2]}", $tmp[$k+1]);
- # echo "($old)($mul) ".$tmp[$k+1]."\n";
- }# else echo "No values in ".$tmp[$k+1]."\n";
- }
- }
- $data = implode("\n", $tmp);
- }
- function DAZ_isValid($data) {
- global $g8_morphs, $ignore;
- $ret = true;
- $tmp = explode("\n", $data);
- foreach ($tmp as $key => $value) {
- if (stripos($value, '"url"') !== false) {
- if (preg_match("/#([^:]+):/isU", $value, $match)) {
- if (!in_array($match[1], $g8_morphs)) {
- foreach ($ignore as $ikey => $ivalue) {
- if (preg_match($ivalue, $match[1], $match2)) {
- #echo "ignore: ".$match[1]."\n";
- #print_r($match2);
- continue(2);
- }
- }
- echo ("unknown morph: ".$match[1]."\n");
- $ret = false;
- }
- } else {
- #echo("Failed to parse morph name: $value\n");
- continue;
- }
- }
- }
- return $ret;
- }
- // read all duf files
- $_files = [];
- $_dir_src = realpath($_dir_src);
- $foo = scandir($_dir_src);
- if (!$foo || sizeof($foo) == 2) die("no files");
- foreach ($foo as $key => $value) {
- if (substr($value, -3) != 'duf') {
- #echo "not a DUF file: ".$value."\n";
- continue;
- }
- // read
- $data = file_get_contents($_dir_src . '/' . $value);
- // renamings
- $data = str_replace("eCTRLLipBottomIn-Out", "eCTRLLipBottomOut-In", $data);
- $data = str_replace("eCTRLLipTopIn-Out", "eCTRLLipTopOut-In", $data);
- $data = str_replace("Genesis%203%20Female", "Genesis%208%20Female", $data);
- $data = str_replace("eCTRLEyelidsUpperDownUp", "eCTRLEyelidsUpperUp-Down", $data);
- $data = str_replace("PHMBrowCompressionHD", "PHMBrowCompression_HD_div2", $data);
- $data = str_replace("eCTRLCheeksBalloon:", "eCTRLCheeksBalloon-SuckIn:", $data);
- $data = str_replace("eCTRLCheekFlex", "eCTRLCheekFlex-Slack", $data);
- $data = str_replace("PHMCheeksDimpleCreaseHDL", "PHMCheeksDimpleCreaseL_HD_div2", $data);
- $data = str_replace("PHMCheeksDimpleCreaseHDR", "PHMCheeksDimpleCreaseR_HD_div2", $data);
- $data = str_replace("eCTRLEyesSquint", "eCTRLEyesSquint-Widen", $data);
- $data = str_replace("eCTRLMouthCornerBack", "eCTRLMouthCornerForward-Back", $data);
- $data = str_replace("eCTRLMouthNarrow", "eCTRLMouthWide-Narrow", $data);
- $data = str_replace("eCTRLTongue%20Curl", "eCTRLTongueCurl", $data);
- $data = str_replace("PHMNoseCompressionHD", "PHMNoseCompression_HD_div2", $data);
- $data = str_replace("eCTRLNostrilsFlare", "eCTRLNostrilsFlex", $data);
- $data = str_replace("eCTRLAngry", "eCTRLAngry_HD", $data);
- $data = str_replace("eCTRLFlirting", "eCTRLFlirting_HD", $data);
- $data = str_replace("eCTRLFrown", "eCTRLFrown_HD", $data);
- $data = str_replace("eCTRLSmile", "eCTRLSmileFullFace_HD", $data);
- $data = str_replace("eCTRLSurprised", "eCTRLSurprised_HD", $data);
- // check if we know about all morphs
- if (!DAZ_isValid($data)) {
- die("\nAborted because we don't know how to handle one or more morphs in file $value.\n");
- }
- // mouth open is somewhat 44% of original
- // mouth open wide no longer exists. add it to mouth open, unchanged
- // yes, that will exceed limits. while mouth open can now open more than g3,
- // in total the mouth cannot be as much opened for G8 as for G3.
- $factor = 0.55;
- if (($val = DAZ_key_getVal($data, 'eCTRLMouthOpenWide'))) {
- echo "MouthOpenWide: ".$val[0].", ".$val[1]."\n";
- $factor += $val[1];
- }
- DAZ_key_mul($data, 'eCTRLMouthOpen', $factor);
- // eyes are different too
- // lower eyelids morph is missing the dash, btw.
- // so close... ;)
- DAZ_key_mul($data, 'eCTRLEyelidsUpperUp-Down', -0.75);
- DAZ_key_mul($data, 'eCTRLEyelidsUpperUp-DownL', -0.75);
- DAZ_key_mul($data, 'eCTRLEyelidsUpperUp-DownR', -0.75);
- // brows too. Brow Up-Down also moves Inner Up-Down on G8, did not on G3
- /*
- DAZ_key_add($data, 'eCTRLBrowInnerUp-Down', DAZ_key_getVal($data, 'eCTRLBrowUp-Down')[1]);
- DAZ_key_add($data, 'eCTRLBrowInnerUp-DownL', DAZ_key_getVal($data, 'eCTRLBrowUp-DownL')[1]);
- DAZ_key_add($data, 'eCTRLBrowInnerUp-DownR', DAZ_key_getVal($data, 'eCTRLBrowUp-DownR')[1]);
- */
- // inverted
- DAZ_key_mul($data, 'eCTRLMouthCornerForward-Back', -1.0);
- DAZ_key_mul($data, 'eCTRLMouthCornerForward-BackR', -1.0);
- DAZ_key_mul($data, 'eCTRLMouthCornerForward-BackL', -1.0);
- DAZ_key_mul($data, 'eCTRLMouthWide-Narrow', -1.0);
- DAZ_key_mul($data, 'eCTRLMouthWide-NarrowR', -1.0);
- DAZ_key_mul($data, 'eCTRLMouthWide-NarrowL', -1.0);
- DAZ_key_mul($data, 'eCTRLLipTopOut-In', -1.0);
- DAZ_key_mul($data, 'eCTRLLipTopOut-InR', -1.0);
- DAZ_key_mul($data, 'eCTRLLipTopOut-InL', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomOut-In', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomOut-InR', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomOut-InL', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomUp-Down', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomUp-DownR', -1.0);
- DAZ_key_mul($data, 'eCTRLLipBottomUp-DownL', -1.0);
- // personal preferences:
- // too much teeth
- DAZ_key_mul($data, 'eCTRLLipTopUp-Down', 0.5);
- // write back
- if (!is_dir(($_dir_src) . '/backup/')) {
- mkdir(($_dir_src) . '/backup/', 0777);
- }
- // make backup
- if (!file_exists(dirname($_dir_src) . '/backup/' . $value))
- if (!copy($_dir_src . '/' . $value,
- ($_dir_src) . '/backup/' . $value)) die("failed to copy");
- //die($data);
- file_put_contents($_dir_src . '/' . $value, $data);
- echo "Wrote file $value\n";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment