// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- // UI Procs // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /* * cMuscleWeightDefaultUI() - UI For default weight stuff */ global proc cMuscleWeightDefaultUI() { global int $gCMusclePaint_wtCnt ; global string $gCMusclePaint_wtLabels[] ; if (!`pluginInfo -q -loaded "MayaMuscle"`) error (uiRes("m_cMuscleWeightDefaultUI.kMustLoadMusclePlugin")); if (`window -q -ex cMuscleWeightDefaultUIWin`) { showWindow cMuscleWeightDefaultUIWin ; return ; } window -w 370 -h 260 -t (uiRes("m_cMuscleWeightDefaultUI.kWindowTitleDefaultWeights")) cMuscleWeightDefaultUIWin ; scrollLayout mainMuscleWeightDefaultUIScrollLayout; formLayout -parent mainMuscleWeightDefaultUIScrollLayout mainWtForm ; optionMenu -l (uiRes("m_cMuscleWeightDefaultUI.kWeights")) omWts ; int $i ; for ($i=0; $i < $gCMusclePaint_wtCnt; ++$i) menuItem -l ($gCMusclePaint_wtLabels[ $i ]) ; // menuItem -l "Sticky A" ; // menuItem -l "Sticky B" ; // menuItem -l "Sticky C" ; // menuItem -l "Sliding" ; // menuItem -l "Direction" ; // menuItem -l "Force" ; // menuItem -l "Jiggle" ; // menuItem -l "Cycle" ; // menuItem -l "Rest" ; // menuItem -l "Relax" ; // menuItem -l "Wrinkle" ; // menuItem -l "Smooth" ; optionMenu -e -sl 1 -cc ("cMuscle_updateWeightDefaultUI();") omWts ; intSliderGrp -label (uiRes("m_cMuscleWeightDefaultUI.kSmooth")) -field true -min 0 -max 20 -fmn 0 -fmx 100 -v 3 -cw3 50 60 80 -adj 3 isgSmooth ; popupMenu -p isgSmooth ; menuItem -l "0" -c ("intSliderGrp -e -v 0 isgSmooth ;") ; menuItem -l "1" -c ("intSliderGrp -e -v 1 isgSmooth ;") ; menuItem -l "2" -c ("intSliderGrp -e -v 2 isgSmooth ;") ; menuItem -l "3" -c ("intSliderGrp -e -v 3 isgSmooth ;") ; menuItem -l "4" -c ("intSliderGrp -e -v 4 isgSmooth ;") ; menuItem -l "5" -c ("intSliderGrp -e -v 5 isgSmooth ;") ; menuItem -l "10" -c ("intSliderGrp -e -v 10 isgSmooth ;") ; menuItem -l "20" -c ("intSliderGrp -e -v 20 isgSmooth ;") ; floatSliderGrp -label (uiRes("m_cMuscleWeightDefaultUI.kFalloff")) -en 0 -field true -min 0.0 -max 200 -fmn 0.0 -fmx 1000.0 -v 10.0 -cw3 50 60 80 -adj 3 fsgFalloff ; popupMenu -p fsgFalloff ; menuItem -l "0" -c ("floatSliderGrp -e -v 0 fsgFalloff ;") ; menuItem -l "10" -c ("floatSliderGrp -e -v 10 fsgFalloff ;") ; menuItem -l "20" -c ("floatSliderGrp -e -v 20 fsgFalloff ;") ; menuItem -l "30" -c ("floatSliderGrp -e -v 30 fsgFalloff ;") ; menuItem -l "40" -c ("floatSliderGrp -e -v 40 fsgFalloff ;") ; menuItem -l "50" -c ("floatSliderGrp -e -v 50 fsgFalloff ;") ; menuItem -l "60" -c ("floatSliderGrp -e -v 60 fsgFalloff ;") ; menuItem -l "70" -c ("floatSliderGrp -e -v 70 fsgFalloff ;") ; menuItem -l "80" -c ("floatSliderGrp -e -v 80 fsgFalloff ;") ; menuItem -l "90" -c ("floatSliderGrp -e -v 90 fsgFalloff ;") ; menuItem -l "100" -c ("floatSliderGrp -e -v 100 fsgFalloff ;") ; menuItem -l "150" -c ("floatSliderGrp -e -v 150 fsgFalloff ;") ; menuItem -l "200" -c ("floatSliderGrp -e -v 200 fsgFalloff ;") ; checkBox -l (uiRes("m_cMuscleWeightDefaultUI.kByDirection")) -v 1 -en 0 -cc ("cMuscle_updateWeightDefaultUI();") cbByDir ; floatFieldGrp -numberOfFields 3 -en 0 -l (uiRes("m_cMuscleWeightDefaultUI.kDirection")) -v1 0.0 -v2 -1.0 -v3 0.0 -cw4 80 60 60 60 ffDir ; popupMenu -p ffDir ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirX")) -c ("floatFieldGrp -e -v1 1.0 -v2 0.0 -v3 0.0 ffDir ;") ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirY")) -c ("floatFieldGrp -e -v1 0.0 -v2 1.0 -v3 0.0 ffDir ;") ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirZ")) -c ("floatFieldGrp -e -v1 0.0 -v2 0.0 -v3 1.0 ffDir ;") ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirNegX")) -c ("floatFieldGrp -e -v1 -1.0 -v2 0.0 -v3 0.0 ffDir ;") ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirNegY")) -c ("floatFieldGrp -e -v1 0.0 -v2 -1.0 -v3 0.0 ffDir ;") ; menuItem -l (uiRes("m_cMuscleWeightDefaultUI.kDirNegZ")) -c ("floatFieldGrp -e -v1 0.0 -v2 0.0 -v3 -1.0 ffDir ;") ; floatSliderGrp -label (uiRes("m_cMuscleWeightDefaultUI.kAngle")) -en 0 -field true -min 0.0 -max 180.0 -fmn 0.0 -fmx 180.0 -v 45.0 -cw3 64 60 80 -adj 3 fsgAngle ; popupMenu -p fsgAngle ; menuItem -l "0" -c ("floatSliderGrp -e -v 0.0 fsgAngle ;") ; menuItem -l "5" -c ("floatSliderGrp -e -v 5.0 fsgAngle ;") ; menuItem -l "10" -c ("floatSliderGrp -e -v 10.0 fsgAngle ;") ; menuItem -l "15" -c ("floatSliderGrp -e -v 15.0 fsgAngle ;") ; menuItem -l "20" -c ("floatSliderGrp -e -v 20.0 fsgAngle ;") ; menuItem -l "45" -c ("floatSliderGrp -e -v 45.0 fsgAngle ;") ; menuItem -l "90" -c ("floatSliderGrp -e -v 90.0 fsgAngle ;") ; menuItem -l "120" -c ("floatSliderGrp -e -v 120.0 fsgAngle ;") ; menuItem -l "135" -c ("floatSliderGrp -e -v 135.0 fsgAngle ;") ; menuItem -l "180" -c ("floatSliderGrp -e -v 180.0 fsgAngle ;") ; checkBox -l (uiRes("m_cMuscleWeightDefaultUI.kByCurvature")) -v 0 -en 0 -cc ("cMuscle_updateWeightDefaultUI();") cbByCurve ; floatSliderGrp -label (uiRes("m_cMuscleWeightDefaultUI.kCurve")) -en 0 -field true -min 0.0 -max 180.0 -fmn 0.0 -fmx 180.0 -v 5.0 -cw3 60 60 80 -adj 3 fsgCurve ; popupMenu -p fsgCurve ; menuItem -l "0" -c ("floatSliderGrp -e -v 0.0 fsgCurve ;") ; menuItem -l "5" -c ("floatSliderGrp -e -v 5.0 fsgCurve ;") ; menuItem -l "10" -c ("floatSliderGrp -e -v 10.0 fsgCurve ;") ; menuItem -l "15" -c ("floatSliderGrp -e -v 15.0 fsgCurve ;") ; menuItem -l "20" -c ("floatSliderGrp -e -v 20.0 fsgCurve ;") ; menuItem -l "45" -c ("floatSliderGrp -e -v 45.0 fsgCurve ;") ; menuItem -l "90" -c ("floatSliderGrp -e -v 90.0 fsgCurve ;") ; menuItem -l "120" -c ("floatSliderGrp -e -v 120.0 fsgCurve ;") ; menuItem -l "135" -c ("floatSliderGrp -e -v 135.0 fsgCurve ;") ; menuItem -l "180" -c ("floatSliderGrp -e -v 180.0 fsgCurve ;") ; checkBox -l (uiRes("m_cMuscleWeightDefaultUI.kReverseCurvature")) -v 0 -en 0 cbReverse ; separator -h 3 sep1 ; checkBox -l (uiRes("m_cMuscleWeightDefaultUI.kPruneWeightsTo")) -v 1 -cc ("cMuscle_updateWeightDefaultUI();") cbPruneWD ; intField -v 3 -min 1 -max 12 -w 40 ifPruneWD ; text -l (uiRes("m_cMuscleWeightDefaultUI.kPruneWeightsTo2")) txPruneWD ; popupMenu -p ifPruneWD ; menuItem -l "1" -c ("intField -e -v 1 ifPruneWD ;") ; menuItem -l "2" -c ("intField -e -v 2 ifPruneWD ;") ; menuItem -l "3" -c ("intField -e -v 3 ifPruneWD ;") ; menuItem -l "4" -c ("intField -e -v 4 ifPruneWD ;") ; menuItem -l "5" -c ("intField -e -v 5 ifPruneWD ;") ; button -l (uiRes("m_cMuscleWeightDefaultUI.kApplyDefaultWeights")) -w 300 -c ("cMuscleWeightDefaultUICB();") -ann (uiRes("m_cMuscleWeightDefaultUI.kApplyDefaultWeightsAnnot")) btnDefaultWeight ; formLayout -e -af omWts "top" 5 -an omWts "bottom" -af omWts "left" 5 -an omWts "right" -af isgSmooth "top" 5 -an isgSmooth "bottom" -ac isgSmooth "left" 5 omWts -af isgSmooth "right" 5 -ac fsgFalloff "top" 5 isgSmooth -an fsgFalloff "bottom" -ac fsgFalloff "left" 5 omWts -af fsgFalloff "right" 5 -ac cbByDir "top" 8 fsgFalloff -an cbByDir "bottom" -af cbByDir "left" 5 -an cbByDir "right" -ac ffDir "top" 5 fsgFalloff -an ffDir "bottom" -ac ffDir "left" 5 cbByDir -af ffDir "right" 5 -ac fsgAngle "top" 5 ffDir -an fsgAngle "bottom" -ac fsgAngle "left" 5 cbByDir -af fsgAngle "right" 5 -ac cbByCurve "top" 8 fsgAngle -an cbByCurve "bottom" -af cbByCurve "left" 5 -an cbByCurve "right" -ac fsgCurve "top" 5 fsgAngle -an fsgCurve "bottom" -ac fsgCurve "left" 5 cbByCurve -af fsgCurve "right" 5 -ac cbReverse "top" 5 fsgCurve -an cbReverse "bottom" -ac cbReverse "left" 25 cbByCurve -an cbReverse "right" -ac sep1 "top" 5 cbReverse -an sep1 "bottom" -af sep1 "left" 5 -af sep1 "right" 5 -ac cbPruneWD "top" 8 sep1 -an cbPruneWD "bottom" -af cbPruneWD "left" 5 -an cbPruneWD "right" -ac ifPruneWD "top" 5 sep1 -an ifPruneWD "bottom" -ac ifPruneWD "left" 0 cbPruneWD -an ifPruneWD "right" -ac txPruneWD "top" 8 sep1 -an txPruneWD "bottom" -ac txPruneWD "left" 5 ifPruneWD -an txPruneWD "right" -ac btnDefaultWeight "top" 8 ifPruneWD -an btnDefaultWeight "bottom" -af btnDefaultWeight "left" 5 -af btnDefaultWeight "right" 5 mainWtForm ; showWindow cMuscleWeightDefaultUIWin ; } // -------------------------------------------------------------------------- /* * cMuscle_fixStickyBindUI() - Wrapper in case decide to use ui later or such... */ global proc cMuscle_fixStickyBindUI() { string $mSs[] = cMuscle_getSelectedDeformers("cMuscleSystem") ; string $mS ; string $objs[] = `ls -sl -l`; // Now call real command.... // for ($mS in $mSs) { string $comps[] = cMuscle_getSelComps($mS, true) ; select -r $comps ; cMuscleWeightDefault -system $mS -fixsticky ; // This command also has the auto fix sticky function in it } if (size($objs) > 0) // reselect select $objs ; } // -------------------------------------------------------------------------- /* * cMuscle_updateWeightDefaultUI() - Called when ui settings change to enable * or disable other parts of the UI. */ global proc cMuscle_updateWeightDefaultUI() { int $bPrune = `checkBox -q -v cbPruneWD` ; if ($bPrune) intField -e -en true ifPruneWD ; else intField -e -en false ifPruneWD ; int $idxWt = `optionMenu -q -sl omWts` - 1; string $strWt = `optionMenu -q -v omWts` ; if ($strWt == uiRes("m_cMusclePaint.kSliding")) floatSliderGrp -e -en true fsgFalloff ; else floatSliderGrp -e -en false fsgFalloff ; if ($idxWt <= 15 ) // all the basic real wts and smartCollide that take nodes... { checkBox -e -en 0 cbByDir ; floatFieldGrp -e -en 0 ffDir ; floatSliderGrp -e -en 0 fsgAngle ; checkBox -e -en 0 cbByCurve ; floatSliderGrp -e -en 0 fsgCurve ; checkBox -e -en 0 cbReverse ; } else { checkBox -e -en 1 cbByDir ; int $bByDir = `checkBox -q -v cbByDir` ; floatFieldGrp -e -en $bByDir ffDir ; floatSliderGrp -e -en $bByDir fsgAngle ; checkBox -e -en 1 cbByCurve ; int $bByCurve = `checkBox -q -v cbByCurve` ; floatSliderGrp -e -en $bByCurve fsgCurve ; checkBox -e -en $bByCurve cbReverse ; } } // -------------------------------------------------------------------------- /* * cMuscleWeightDefaultUICB() - UI Wrapper */ global proc cMuscleWeightDefaultUICB() { global int $gCMusclePaint_wtCnt ; global string $gCMusclePaint_wtNames[] ; global string $gCMusclePaint_wtLabels[] ; global int $gCMusclePaint_wtNormalize[] ; int $idxWt = `optionMenu -q -sl omWts` - 1; string $strWt = `optionMenu -q -v omWts` ; int $bPrune = `checkBox -q -v cbPruneWD` ; int $nPrune = 0 ; if ($bPrune) $nPrune = `intField -q -v ifPruneWD` ; float $falloff = `floatSliderGrp -q -v fsgFalloff` / 100.0 ; int $smooth = `intSliderGrp -q -v isgSmooth` ; int $bByDir = `checkBox -q -v cbByDir` ; float $dirX = `floatFieldGrp -q -v1 ffDir` ; float $dirY = `floatFieldGrp -q -v2 ffDir` ; float $dirZ = `floatFieldGrp -q -v3 ffDir` ; float $angle = `floatSliderGrp -q -v fsgAngle` ; int $bByCurve = `checkBox -q -v cbByCurve` ; float $curve = `floatSliderGrp -q -v fsgCurve` ; int $bReverse = `checkBox -q -v cbReverse` ; int $bNormalize = $gCMusclePaint_wtNormalize[$idxWt] ; string $strWtName = $gCMusclePaint_wtNames[$idxWt] ; string $mSs[] = cMuscle_getSelectedDeformers("cMuscleSystem") ; string $mS ; string $objs[] = `ls -sl -l`; // Now call real command.... // for ($mS in $mSs) { cMuscle_fixDisconnected($mS) ; string $comps[] = cMuscle_getSelComps($mS, true) ; select -r $comps ; string $cmd = "" ; $cmd += ("cMuscleWeightDefault -system "+$mS+" -default -weight "+$strWtName+" -normalize "+$bNormalize+" -prune "+$nPrune+" -falloff "+$falloff+" -smooth "+$smooth+" ") ; if ($bByDir) $cmd += ("-bydirection -direction "+$dirX+" "+$dirY+" "+$dirZ+" -angle "+$angle+" ") ; if ($bByCurve) $cmd += ("-bycurve -curve "+$curve+" ") ; if ($bReverse) $cmd += ("-reverse ") ; $cmd += ";" ; eval($cmd) ; } if (size($objs) > 0) // reselect select $objs ; } // -------------------------------------------------------------------------- /* * cMuscle_fixDisconnectedUI() - Checks to see if a disconnected muscle exits and removes multiInstance if needed. */ global proc cMuscle_fixDisconnectedUI() { string $mSs[] = cMuscle_getSelectedDeformers("cMuscleSystem") ; string $mS ; for ($mS in $mSs) { cMuscle_fixDisconnected( $mS ) ; } } // -------------------------------------------------------------------------- /* * cMuscle_fixDisconnected() - Checks to see if a disconnected muscle exits and removes multiInstance if needed. */ global proc cMuscle_fixDisconnected(string $mS) { int $ids[] = `cMuscleQuery -mus -idx -sys $mS` ; string $mOs[]= `cMuscleQuery -mus -sys $mS` ; if (size($ids) != size($mOs)) { warning -sl 0 (uiRes("m_cMuscleWeightDefaultUI.kDeletedMuscleDetected")) ; int $c ; for ($c=0; $c < size($ids); ++$c) { int $idx = $ids[$c] ; string $cons[] = `listConnections -s 1 -d 0 -p 0 -scn 1 ($mS+".muscleData["+$idx+"]")` ; if (size($cons) <= 0) { string $msg = (uiRes("m_cMuscleWeightDefaultUI.kDetectedMissingMuscle")); $msg = `format -stringArg $idx $msg`; print ($msg) ; removeMultiInstance -b true ($mS+".muscleData["+$idx+"]") ; } } print (uiRes("m_cMuscleWeightDefaultUI.kDeletedMuscleCorrectionComplete")) ; } $ids = `cMuscleQuery -dir -idx -sys $mS` ; $mOs = `cMuscleQuery -dir -sys $mS` ; if (size($ids) != size($mOs)) { warning -sl 0 (uiRes("m_cMuscleWeightDefaultUI.kDeletedDirectionDetected")) ; int $c ; for ($c=0; $c < size($ids); ++$c) { int $idx = $ids[$c] ; string $cons[] = `listConnections -s 1 -d 0 -p 0 -scn 1 ($mS+".dirData["+$idx+"]")` ; if (size($cons) <= 0) { string $msg = (uiRes("m_cMuscleWeightDefaultUI.kDetectedMissingDirection")); $msg = `format -stringArg $idx $msg`; print ($msg) ; removeMultiInstance -b true ($mS+".dirData["+$idx+"]") ; } } print (uiRes("m_cMuscleWeightDefaultUI.kDeletedDirectionCorrectionComplete")) ; } $ids = `cMuscleQuery -smr -idx -sys $mS` ; $mOs = `cMuscleQuery -smr -sys $mS` ; if (size($ids) != size($mOs)) { warning -sl 0 (uiRes("m_cMuscleWeightDefaultUI.kDeletedSmartcollideDetected")) ; int $c ; for ($c=0; $c < size($ids); ++$c) { int $idx = $ids[$c] ; string $cons[] = `listConnections -s 1 -d 0 -p 0 -scn 1 ($mS+".smartCollideData["+$idx+"]")` ; if (size($cons) <= 0) { string $msg = (uiRes("m_cMuscleWeightDefaultUI.kDetectedMissingSmartCollide")); $msg = `format -stringArg $idx $msg`; print ($msg) ; removeMultiInstance -b true ($mS+".smartCollideData["+$idx+"]") ; } } print (uiRes("m_cMuscleWeightDefaultUI.kDeletedSmartCollideCorrectionComplete")) ; } string $msg = (uiRes("m_cMuscleWeightDefaultUI.kFixDisconnectedMuscleSystemComplete")); $msg = `format -stringArg $mS $msg`; print ($msg) ; } // --------------------------------------------------------------------------