// =========================================================================== // 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. // =========================================================================== // // // Creation Date: Jan. 8, 1997 // // Description: defines behaviour and layout of jointContext // tool property sheet // global proc adjustJointRadiusValue (string $scaleCommandArg, string $whichCtx) { int $useVariableSettings = `checkBoxGrp -q -v1 variableBoneSettings`; float $newValue = ( $useVariableSettings == false ) ? 1.0 : `floatSliderGrp -query -value ($scaleCommandArg+"Slider")`; jointCtx -edit ("-"+$scaleCommandArg) $newValue $whichCtx; optionVar -floatValue $scaleCommandArg $newValue; } global proc jointToolPropCallback (string $parent, string $whichCallback) // // Procedure Name: // jointToolPropCallback // // Description: // // Input Arguments: // parent name, and // current callback name. // // Return Value: // None. // { setParent $parent; string $whichCtx = `currentCtx`; string $dofOption; string $symetryAxis; string $axes[] = {}; switch ($whichCallback) { case "dofOption": if (`checkBoxGrp -q -v1 jpDofCheckBoxGrp`) { $dofOption += "x"; } if (`checkBoxGrp -q -v2 jpDofCheckBoxGrp`) { $dofOption += "y"; } if (`checkBoxGrp -q -v3 jpDofCheckBoxGrp`) { $dofOption += "z"; } if ("" == $dofOption) { $dofOption = "none"; } jointCtx -e -dJ $dofOption $whichCtx; break; case "worldAxis": jointOrientWorldSelected $parent; jointOrientGetOrientAxes $parent $axes; jointCtx -e -ajo $axes[0] -sao $axes[1] $whichCtx; break; case "primaryAxis": jointOrientPrimarySelected $parent; jointOrientGetOrientAxes $parent $axes; jointCtx -e -ajo $axes[0] -sao $axes[1] $whichCtx; break; case "secondaryAxis": jointOrientSecondarySelected $parent; // Note: fall-through intentional case "secondaryOrientDir": case "secondaryOrientSgn": jointOrientGetOrientAxes $parent $axes; jointCtx -e -ajo $axes[0] -sao $axes[1] $whichCtx; break; case "scaleCompensateOn": jointCtx -e -scJ true $whichCtx; break; case "scaleCompensateOff": jointCtx -e -scJ false $whichCtx; break; case "autoLimitsOn": jointCtx -e -jal true $whichCtx; break; case "autoLimitsOff": jointCtx -e -jal false $whichCtx; break; case "jointSymmetrySettings": int $axis = `optionMenuGrp -q -sl jointSymmetrySettings`; if($axis == 1) { jointCtx -e -sym 0 $whichCtx; } else { if($axis == 2) { jointCtx -e -sym 1 -sa "x" $whichCtx; } else if($axis == 3) { jointCtx -e -sym 1 -sa "y" $whichCtx; } else if($axis == 4) { jointCtx -e -sym 1 -sa "z" $whichCtx; } } break; case "createIKHandleOn": frameLayout -e -en true -cl false ikHandleFrame; jointCtx -e -ikh true $whichCtx; break; case "createIKHandleOff": frameLayout -e -en false -cl true ikHandleFrame; jointCtx -e -ikh false $whichCtx; case "smallBoneLength": adjustJointRadiusValue smallBoneLength $whichCtx; break; case "smallBoneRadius": adjustJointRadiusValue smallBoneRadius $whichCtx; break; case "largeBoneLength": adjustJointRadiusValue largeBoneLength $whichCtx; break; case "largeBoneRadius": adjustJointRadiusValue largeBoneRadius $whichCtx; break; case "variableBoneSizeOn": frameLayout -e -enable 1 -cl 0 boneRadiusFrame; jointCtx -e -vbs 1 $whichCtx; break; case "variableBoneSizeOff": frameLayout -e -enable 0 -cl 1 boneRadiusFrame; jointCtx -e -vbs 0 $whichCtx; break; case "projectedCenteringOn": snapMode -meshCenter 1; break; case "projectedCenteringOff": snapMode -meshCenter 0; break; default: break; } } global proc jointToolSetCallbacks (string $parent) // // Procedure Name: // jointToolSetCallbacks // // Description: // // Input Arguments: // parent name. // // Return Value: // None. // { setParent $parent; string $whichCtx = `currentCtx`; checkBoxGrp -e -cc `CBG "jointToolProp" $parent "dofOption"` jpDofCheckBoxGrp; checkBoxGrp -e -cc `CBG "jointToolProp" $parent "worldAxis"` ojWorldAxisGrp ; radioButtonGrp -e -cc `CBG "jointToolProp" $parent "primaryAxis"` ojPrimaryAxisGrp; radioButtonGrp -e -cc `CBG "jointToolProp" $parent "secondaryAxis"` ojSecondaryAxisGrp; radioButtonGrp -e -cc `CBG "jointToolProp" $parent "secondaryOrientDir"` ojSecondaryOrientGrp; optionMenu -e -cc `CBG "jointToolProp" $parent "secondaryOrientSgn"` ojSecondaryOrientSignGrp; checkBoxGrp -e -onc `CBG "jointToolProp" $parent "scaleCompensateOn"` -ofc `CBG "jointToolProp" $parent "scaleCompensateOff"` scaleCompensate; checkBoxGrp -e -onc `CBG "jointToolProp" $parent "autoLimitsOn"` -ofc `CBG "jointToolProp" $parent "autoLimitsOff"` autoLimits; optionMenuGrp -e -cc `CBG "jointToolProp" $parent "jointSymmetrySettings"` jointSymmetrySettings; checkBoxGrp -e -onc `CBG "jointToolProp" $parent "createIKHandleOn"` -ofc `CBG "jointToolProp" $parent "createIKHandleOff"` createIKHandle; checkBoxGrp -e -onc `CBG "jointToolProp" $parent "variableBoneSizeOn"` -ofc `CBG "jointToolProp" $parent "variableBoneSizeOff"` variableBoneSettings; checkBoxGrp -e -onc `CBG "jointToolProp" $parent "projectedCenteringOn"` -ofc `CBG "jointToolProp" $parent "projectedCenteringOff"` projectedCenteringSettings; } /* global */ proc boneRadiusCallbacks (string $parent) { floatSliderGrp -edit -cc `CBG "jointToolProp" $parent "smallBoneLength"` -dc `CBG "jointToolProp" $parent "smallBoneLength"` smallBoneLengthSlider; floatSliderGrp -edit -cc `CBG "jointToolProp" $parent "smallBoneRadius"` -dc `CBG "jointToolProp" $parent "smallBoneRadius"` smallBoneRadiusSlider; floatSliderGrp -edit -cc `CBG "jointToolProp" $parent "largeBoneLength"` -dc `CBG "jointToolProp" $parent "largeBoneLength"` largeBoneLengthSlider; floatSliderGrp -edit -cc `CBG "jointToolProp" $parent "largeBoneRadius"` -dc `CBG "jointToolProp" $parent "largeBoneRadius"` largeBoneRadiusSlider; } global proc updateProjectedCentering() { if(`checkBoxGrp -q -v1 projectedCenteringSettings` != `snapMode -q -meshCenter`) { checkBoxGrp -e -v1 `snapMode -q -meshCenter` projectedCenteringSettings; } } global proc jointToolProperties () // // Procedure Name: // jointToolProperties // // Description: // // Input Arguments: // None. // // Return Value: // None. // { jointOrientUtils; setUITemplate -pushTemplate OptionsTemplate; string $parent = `toolPropertyWindow -q -location`; string $curctx = `currentCtx`; setParent $parent; columnLayout -adj true jointTool; frameLayout -collapsable true -collapse false -label (uiRes("m_jointToolProperties.kJointSettings")) jointFrame; columnLayout jointOptions; $parent = `setParent -query`; string $x = (uiRes("m_jointToolProperties.kX")); string $y = (uiRes("m_jointToolProperties.kY")); string $z = (uiRes("m_jointToolProperties.kZ")); string $off = (uiRes("m_jointToolProperties.kOff")); checkBoxGrp -label (uiRes("m_jointToolProperties.kDegreesOfFreedom")) -ncb 3 -labelArray3 $x $y $z jpDofCheckBoxGrp; optionMenuGrp -label (uiRes("m_jointToolProperties.kSymmetry")) jointSymmetrySettings; menuItem -label $off; menuItem -label $x; menuItem -label $y; menuItem -label $z; checkBoxGrp -label "" -label1 (uiRes("m_jointToolProperties.kScaleCompensate")) -ncb 1 scaleCompensate; checkBoxGrp -label "" -label1 (uiRes("m_jointToolProperties.kAutoJointLimits")) -ncb 1 autoLimits; checkBoxGrp -label "" -label1 (uiRes("m_jointToolProperties.kCreateIKHandle")) -ncb 1 createIKHandle; checkBoxGrp -label "" -label1 (uiRes("m_jointToolProperties.kViewDependentScaling")) -ncb 1 variableBoneSettings; checkBoxGrp -label "" -label1 (uiRes("m_jointToolProperties.kProjectedCentering")) -ncb 1 projectedCenteringSettings; //with this job we will keep both option in sync in the UI scriptJob -permanent -parent $parent -event "snapModeChanged" updateProjectedCentering; setParent ..; // jointOptions setParent ..; // jointFrame // context options for ikHandle: default is collapsed. // $parent = `setParent -query`; jointOrientOptionsSetup $parent; jointToolSetCallbacks $parent; ikHandleOptionLayout( $parent, true ); setParent $parent; frameLayout -collapsable true -collapse false -label (uiRes("m_jointToolProperties.kBoneRadiusSettings")) boneRadiusFrame; columnLayout boneRadiusOptions; floatSliderGrp -field true -label (uiRes("m_jointToolProperties.kShortBoneLength")) -min 0 -max 50 -v 2 smallBoneLengthSlider; floatSliderGrp -field true -label (uiRes("m_jointToolProperties.kShortBoneRadius")) -min 0 -max 2 -v 0.25 smallBoneRadiusSlider; floatSliderGrp -field true -label (uiRes("m_jointToolProperties.kLongBoneLength")) -min 0 -max 50 -v 2 largeBoneLengthSlider; floatSliderGrp -field true -label (uiRes("m_jointToolProperties.kLongBoneRadius")) -min 0 -max 2 -v 0.25 -fmn 0.0 -fmx 999999 largeBoneRadiusSlider; boneRadiusCallbacks $parent; setParent ..; //boneRadiusOptions setParent ..; // boneRadiusFrame setParent ..; // joint setUITemplate -popTemplate; }