import maya.cmds as cmds from functools import partial import os, cPickle, math import maya.mel as mel import maya.utils class AnimationUI(): def __init__(self): #check to see if there are any rigs in the scene, if not return characters = self.getCharacters() print characters if len(characters) == 0: result = cmds.confirmDialog(title = "Error", message = "No Characters found in scene. Would you like to add a character now?", button = ["Yes", "No"], defaultButton = "Yes", cancelButton = "No", dismissString = "No") if result == "Yes": import ART_addCharacter_UI reload(ART_addCharacter_UI) UI = ART_addCharacter_UI.AddCharacter_UI() return else: return #get access to our maya tools toolsPath = cmds.internalVar(usd = True) + "mayaTools.txt" if os.path.exists(toolsPath): f = open(toolsPath, 'r') self.mayaToolsDir = f.readline() f.close() #figure out which project the rigs are from references = cmds.ls(type = "reference") self.project = "" for ref in references: try: projects = os.listdir(self.mayaToolsDir + "/General/Icons/ART/Thumbnails/") proj = cmds.referenceQuery(ref, filename = True, unresolvedName = True).rpartition("Projects/")[2].partition("/")[0] if proj in projects: self.project = proj resolved = cmds.referenceQuery(ref, filename = True).rpartition("Projects/")[2].partition("/")[0] if resolved in projects: if resolved != self.project: refPath = cmds.referenceQuery(ref, filename = True) cmds.confirmDialog(title = "Reference", icon = "warning", message = "This file is currently referencing a rig file that is not located in the MayaTools directory.\nCurrent Reference path: " + refPath + ".") except: pass path = self.mayaToolsDir + "/General/ART/Projects/" + self.project + "/banner.jpg" if os.path.exists(path): projectBanner = path else: projectBanner = self.mayaToolsDir + "/General/Icons/ART/banner.jpg" #create class vars self.widgets = {} self.formsToHide = [] self.assetEntries = [] self.mats = [] #check to see if the skeleton builder UI exists with channel box #check to see if window exists. if so, delete if cmds.dockControl("skeletonBuilder_dock", exists = True): channelBox = cmds.formLayout("SkelBuilder_channelBoxFormLayout", q = True, childArray = True) if channelBox != None: channelBox = channelBox[0] #reparent the channelBox Layout back to maya's window cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout") channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm') channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm') #edit the channel box pane's attachment to the formLayout cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm)) cmds.deleteUI("skeletonBuilder_dock") #check to see if window exists. if so, delete if cmds.dockControl("artAnimUIDock", exists = True): channelBox = cmds.formLayout("ART_cbFormLayout", q = True, childArray = True) if channelBox != None: channelBox = channelBox[0] #reparent the channelBox Layout back to maya's window cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout") channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm') channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm') #edit the channel box pane's attachment to the formLayout cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm)) cmds.deleteUI("artAnimUIDock") if cmds.window("artAnimUI", exists = True): cmds.deleteUI("artAnimUI") #build window self.widgets["window"] = cmds.window("artAnimUI", w = 400, h = 700, title = "Animation UI", sizeable = True) #create the main layout self.widgets["topLevelLayout"] = cmds.columnLayout() #create the menu bar self.widgets["menuBarLayout"] = cmds.menuBarLayout(w = 400, h =20, parent = self.widgets["topLevelLayout"] ) self.widgets["menuBar_settings"] = cmds.menu(label = "Settings", parent = self.widgets["menuBarLayout"]) self.widgets["menuBar_settings_channelBox"] = cmds.menuItem(label = "Show Channel Box", checkBox = False, parent = self.widgets["menuBar_settings"], c = self.showChannelBox) self.widgets["menuBar_settings_matching"] = cmds.menuItem(label = "Match On Switch", checkBox = True, parent = self.widgets["menuBar_settings"]) #add match options cmds.menuItem(parent = self.widgets["menuBar_settings"], divider = True) cmds.menuItem(parent = self.widgets["menuBar_settings"], label = "Space Switch Settings", enable = False) cmds.menuItem(parent = self.widgets["menuBar_settings"], divider = True) self.widgets["spaceSwitch_MatchToggleCB"] = cmds.menuItem(parent = self.widgets["menuBar_settings"], label = "Match?", cb = True, c = self.saveUISettings) self.widgets["spaceSwitch_MatchMethodCB"] = cmds.menuItem(parent = self.widgets["menuBar_settings"], label = "Match To Control?", cb = True, c = self.saveUISettings) #Add animation menu self.widgets["menuBar_animation"] = cmds.menu(label = "Animation", parent = self.widgets["menuBarLayout"]) self.widgets["menuBar_animation_eulerAll"] = cmds.menuItem(label = "Run Euler Filter On All", c = self.eulerFilterAll, parent = self.widgets["menuBar_animation"]) self.widgets["menuBar_animation_eulerSel"] = cmds.menuItem(label = "Run Euler Filter On Selected", c = self.eulerFilterSelected, parent = self.widgets["menuBar_animation"]) self.widgets["menuBar_animation_bakeDyn"] = cmds.menuItem(label = "Bake Dynamics to FK", c = self.bakeDynToFK, parent = self.widgets["menuBar_animation"]) #create the area for the active character controls self.widgets["activeCharacterLayout"] = cmds.formLayout(w = 400, h = 60, parent = self.widgets["topLevelLayout"]) self.widgets["projectBanner"] = cmds.image(w = 400, h = 60, bgc = [.5, .5, .5], parent = self.widgets["activeCharacterLayout"], image = projectBanner ) self.widgets["activeCharacterThumb"] = cmds.symbolButton('activeCharacterThumb', w = 50, h = 50, parent = self.widgets["activeCharacterLayout"]) cmds.formLayout(self.widgets["activeCharacterLayout"], edit = True, af = [(self.widgets["activeCharacterThumb"], "right", 5), (self.widgets["activeCharacterThumb"], "top", 6)]) #create the character list pop-up menu self.widgets["characterRigList"] = cmds.popupMenu(parent = self.widgets["activeCharacterThumb"], b = 1) self.populateCharacterRigList() #create the row column layout where the left column will contain pretty much everything, and the right column is optional for channel box display self.widgets["rowColLayout"] = cmds.rowColumnLayout(nc = 3, cw = [(1, 400), (2, 50), (3, 1)], parent = self.widgets["topLevelLayout"]) #create the main tab Layout self.widgets["mainLayout"] = cmds.tabLayout(w = 400, h = 700, parent = self.widgets["rowColLayout"]) #create the formLayout that will contain each character's picker self.widgets["pickerLayout"] = cmds.formLayout(w = 400, h = 700, parent = self.widgets["mainLayout"]) self.widgets["pickerScroll"] = cmds.scrollLayout(w = 400, h = 700, hst = 0, parent = self.widgets["pickerLayout"]) #create the tools layout(50 pixel column on the screen right) self.widgets["pickerTools"] = cmds.columnLayout(w = 50, h = 700, parent = self.widgets["rowColLayout"], rowSpacing = 10) cmds.text(label = "") self.widgets["pickerSelectTool"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/pickerSelect.bmp", parent = self.widgets["pickerTools"], ann = "Selection Tools") self.widgets["pickerResetTool"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/zero.bmp", parent = self.widgets["pickerTools"], ann = "Reset Rig to the Defaults") self.widgets["pickerImportMotionTool"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/importMotion.bmp", parent = self.widgets["pickerTools"], c = self.importMotion, ann = "Import Motion") self.widgets["pickerExportMotionTool"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/exportMotion.bmp", parent = self.widgets["pickerTools"], c = self.exportMotion, ann = "Export Motion") self.widgets["pickerSpaceSwitchTool"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/picker_spaceSwitch.bmp", parent = self.widgets["pickerTools"], c = self.spaceSwitcher, ann = "Space Switching") self.widgets["pickerPoseTools"] = cmds.symbolButton(c = self.poseEditor, w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/poseTools.bmp", parent = self.widgets["pickerTools"], ann = "Pose Tools and Utilities") self.widgets["pickerMatchOverRange"] = cmds.symbolButton(c = self.match_frameRange_UI, w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/spaceSwitchMatch_on.bmp", parent = self.widgets["pickerTools"], ann = "Match Over Frame Range") self.widgets["pickerControlScaleTool"] = cmds.symbolButton(c = self.control_scale_init, w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/controlScale.bmp", parent = self.widgets["pickerTools"], ann = "Scale selected controls' size. Use to make controls larger or smaller for selecting.") self.widgets["pickerControlVisibility"] = cmds.iconTextCheckBox(w = 50, h = 50, style='iconOnly', value = True, selectionImage = self.mayaToolsDir + "/General/Icons/ART/pickerVisible.bmp", image = self.mayaToolsDir + "/General/Icons/ART/pickerInvisible.bmp", parent = self.widgets["pickerTools"], onc = partial(self.toggleControlVis, True), ofc = partial(self.toggleControlVis, False), ann = "Toggle Current Rig's Control Visibility" ) self.widgets["pickerSelectionSets"] = cmds.symbolButton(c = self.control_scale_init, w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/selectionSets.bmp", parent = self.widgets["pickerTools"], ann = "Selection Sets that are created are stored here.") self.widgets["pickerHelpMenu"] = cmds.symbolButton(w = 50, h = 50, image = self.mayaToolsDir + "/General/Icons/ART/helpicon.bmp", parent = self.widgets["pickerTools"], c = self.animHelp, ann = "Help") #create popup menu for space switcher menu = cmds.popupMenu(parent = self.widgets["pickerSpaceSwitchTool"], b = 3) cmds.menuItem(label = "Create Space", parent = menu, c = self.createSpace) #create radial menu for pose button for copy, paste, and paste opposite self.widgets["pickerPoseToolsRadial"] = cmds.popupMenu(b = 3, parent = self.widgets["pickerPoseTools"], mm = True) self.widgets["pickerPoseToolsRadial_copy"] = cmds.menuItem(label = "Copy", parent = self.widgets["pickerPoseToolsRadial"], rp = "N", c = self.copyPose) self.widgets["pickerPoseToolsRadial_paste"] = cmds.menuItem(label = "Paste", parent = self.widgets["pickerPoseToolsRadial"], rp = "W", c = self.pastePose) self.widgets["pickerPoseToolsRadial_pasteOpposite"] = cmds.menuItem(label = "Paste Opposite", parent = self.widgets["pickerPoseToolsRadial"], rp = "S", c = self.pastePoseOpposite) self.widgets["pickerPoseToolsRadial_pastePreview"] = cmds.menuItem(label = "Show Paste Controls", parent = self.widgets["pickerPoseToolsRadial"], rp = "NW", c = self.pastePreview) self.widgets["pickerPoseToolsRadial_pastePreviewOpp"] = cmds.menuItem(label = "Show Paste Opposite Controls", parent = self.widgets["pickerPoseToolsRadial"], rp = "SW", c = self.pasteOppositePreview) #create radial menu for iso select tools self.widgets["isoSelectRadial"] = cmds.popupMenu(b = 3, parent = self.widgets["pickerControlVisibility"]) self.widgets["isoSelect_Generate"] = cmds.menuItem(label = "Generate Iso Selection Sets", parent = self.widgets["isoSelectRadial"], c = self.getIsoSelectionPolygons, enable = True) cmds.menuItem(divider = True, parent = self.widgets["isoSelectRadial"] ) self.widgets["isoSelect_Torso"] = cmds.menuItem(label = "Torso", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_LeftArm"] = cmds.menuItem(label = "Left Arm", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_RightArm"] = cmds.menuItem(label = "Right Arm", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_LeftLeg"] = cmds.menuItem(label = "Left Leg", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_RightLeg"] = cmds.menuItem(label = "Right Leg", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_Head"] = cmds.menuItem(label = "Head", parent = self.widgets["isoSelectRadial"], c = self.isoSelect, cb = True, enable = False) self.widgets["isoSelect_ShowAll"] = cmds.menuItem(label = "Show All", parent = self.widgets["isoSelectRadial"], c = self.exitIso, enable = False) cmds.menuItem(divider = True, parent = self.widgets["isoSelectRadial"] ) cmds.menuItem(label = "Isolation Method:", parent = self.widgets["isoSelectRadial"], enable = False) isoMethodCollection = cmds.radioMenuItemCollection(parent = self.widgets["isoSelectRadial"]) self.widgets["isoMethodClassic"] = cmds.menuItem(label = "Classic", rb = True, cl = isoMethodCollection, parent = self.widgets["isoSelectRadial"], ann = "Use Maya's isolate selection, where everything except selection is hidden", c = self.exitIso) self.widgets["isoMethodMaterial"] = cmds.menuItem(label = "Material", rb = False, cl = isoMethodCollection, parent = self.widgets["isoSelectRadial"], c = self.exitIso, ann = "Use custom isolate selection function where any unselected parts are invisible, but the rest of the scene does not get hidden.") #selection sets menu self.widgets["selectionSetMenuPopUp"] = cmds.popupMenu(b = 1, parent = self.widgets["pickerSelectionSets"]) #create the selection popupMenu self.widgets["pickerSelectionToolPopup"] = cmds.popupMenu(b = 1, parent = self.widgets["pickerSelectTool"]) self.widgets["pickerSelectionToolPopup_Controls"] = cmds.menuItem(label = "Select All Controls", parent = self.widgets["pickerSelectionToolPopup"], c = self.selectAll) self.widgets["pickerSelectionToolPopup_All"] = cmds.menuItem(label = "Select All (Controls + Spaces)", parent = self.widgets["pickerSelectionToolPopup"], c = self.selectEverything) self.widgets["pickerSelectionToolPopup_Settings"] = cmds.menuItem(label = "Select Rig Settings", parent = self.widgets["pickerSelectionToolPopup"], c = self.selectRigSettings) self.widgets["pickerSelectionToolPopup_Custom"] = cmds.menuItem(label = "Create Selection Set", parent = self.widgets["pickerSelectionToolPopup"], c = self.createSelectionSet) self.widgets["selectionSetsCustom"] = cmds.menuItem(label = "Selection Sets", parent = self.widgets["pickerSelectionToolPopup"], subMenu = True, tearOff = True) #create the reset popupMenu self.widgets["pickerResetToolPopup"] = cmds.popupMenu(b = 1, parent = self.widgets["pickerResetTool"]) self.widgets["pickerResetToolPopup_All"] = cmds.menuItem(label = "Zero out All", parent = self.widgets["pickerResetToolPopup"], c = self.resetAll) self.widgets["pickerResetToolPopup_Selected"] = cmds.menuItem(label = "Zero out Selected", parent = self.widgets["pickerResetToolPopup"], c = self.resetSelection) #create the character picker for each character found in the scene characters = self.getCharacters() for character in characters: self.createCharacterPicker(character, self.widgets["pickerScroll"]) #create the list view picker for each character found in the scene self.widgets["listViewLayout"] = cmds.formLayout(w = 400, h = 700, parent = self.widgets["mainLayout"]) for character in characters: self.createListView(character, self.widgets["listViewLayout"]) #create channel box layout self.widgets["cbFormLayout"] = cmds.formLayout("ART_cbFormLayout", w = 200, h = 700, parent = self.widgets["rowColLayout"]) #create the rig settings tab self.widgets["rigSettingsLayout"] = cmds.formLayout(w = 400, h = 700, parent = self.widgets["mainLayout"]) self.widgets["rigSettingsScroll"] = cmds.scrollLayout(w = 400, h = 700, hst = 0, parent = self.widgets["rigSettingsLayout"]) for character in characters: self.createRigSettings(character, self.widgets["rigSettingsScroll"]) #name the tabs cmds.tabLayout(self.widgets["mainLayout"], edit = True, tabLabel = [(self.widgets["pickerLayout"], "Picker"), (self.widgets["listViewLayout"], "List View"), (self.widgets["rigSettingsLayout"], "Rig Settings")]) #show window self.widgets["dock"] = cmds.dockControl("artAnimUIDock", label = "Animation Interface", content = self.widgets["window"], area = "right", allowedArea = "right", visibleChangeCommand = self.interfaceScriptJob) #add attributes to controls self.setupButtonAttrsOnControls() #setup selection scriptJob self.scriptJob = cmds.scriptJob(parent = self.widgets["window"], event = ["SelectionChanged", self.selectionScriptJob], kws = True) #set the current selected character and change the thumbnail selected = characters[len(characters)-1] self.setThumbnail(selected, self.project) self.switchActiveCharacter(selected) #get all controls self.controls = [] for control in ["head_fk_anim", "neck_01_fk_anim", "neck_02_fk_anim", "neck_03_fk_anim", "spine_01_anim", "spine_02_anim", "spine_03_anim", "spine_04_anim", "spine_05_anim", "mid_ik_anim", "chest_ik_anim", "body_anim", "hip_anim", "clavicle_l_anim", "clavicle_r_anim", "fk_arm_l_anim", "fk_arm_r_anim", "fk_elbow_l_anim", "fk_elbow_r_anim", "fk_wrist_l_anim", "fk_wrist_r_anim", "ik_elbow_l_anim", "ik_elbow_r_anim", "ik_wrist_l_anim", "ik_wrist_r_anim", "fk_thigh_l_anim", "fk_thigh_r_anim", "fk_calf_l_anim", "fk_calf_r_anim", "fk_foot_l_anim", "fk_foot_r_anim", "fk_ball_l_anim", "fk_ball_r_anim", "ik_foot_anim_l", "ik_foot_anim_r", "heel_ctrl_l", "heel_ctrl_r", "toe_wiggle_ctrl_l", "toe_wiggle_ctrl_r", "toe_tip_ctrl_l", "toe_tip_ctrl_r", "master_anim", "offset_anim", "root_anim", "upperarm_l_twist_anim", "upperarm_l_twist_2_anim", "upperarm_l_twist_3_anim", "upperarm_r_twist_anim", "upperarm_r_twist_2_anim", "upperarm_r_twist_3_anim", "l_thigh_twist_01_anim", "r_thigh_twist_01_anim", "pinky_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_r", "pinky_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_r", "ring_metacarpal_ctrl_l", "ring_metacarpal_ctrl_r", "ring_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_r", "middle_metacarpal_ctrl_l", "middle_metacarpal_ctrl_r", "middle_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_r", "index_metacarpal_ctrl_l", "index_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_l", "index_finger_fk_ctrl_3_r", "thumb_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_3_l", "thumb_finger_fk_ctrl_3_r", "index_l_ik_anim", "index_r_ik_anim", "middle_l_ik_anim", "middle_r_ik_anim", "ring_l_ik_anim", "ring_r_ik_anim", "pinky_l_ik_anim", "pinky_r_ik_anim", "thumb_l_ik_anim", "thumb_r_ik_anim", "index_l_poleVector", "index_r_poleVector", "middle_l_poleVector", "middle_r_poleVector", "ring_l_poleVector", "ring_r_poleVector", "pinky_l_poleVector", "pinky_r_poleVector", "thumb_l_poleVector", "thumb_r_poleVector", "l_global_ik_anim", "r_global_ik_anim", "lowerarm_l_twist_anim", "lowerarm_l_twist2_anim", "lowerarm_l_twist3_anim", "lowerarm_r_twist_anim", "lowerarm_r_twist2_anim", "lowerarm_r_twist3_anim", "calf_r_twist_anim", "calf_r_twist2_anim", "calf_r_twist3_anim", "calf_l_twist_anim", "calf_l_twist2_anim", "calf_l_twist3_anim", "thigh_l_twist_2_anim", "thigh_l_twist_3_anim", "thigh_r_twist_2_anim", "thigh_r_twist_3_anim"]: self.controls.append(control) #hack character = selected for obj in ["fk_clavicle_l_anim", "fk_clavicle_r_anim"]: if cmds.objExists(character + ":" + obj): self.controls.append(obj) #find custom joints character = selected customJoints = [] attrs = cmds.listAttr(character + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) for joint in customJoints: attribute = cmds.getAttr(character + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "leaf": label = label.partition(" (")[0] control = label + "_anim" self.controls.append(control) if jointType == "jiggle": control = label + "_anim" self.controls.append(control) if jointType == "chain" or jointType == "dynamic": numJointsInChain = label.partition("(")[2].partition(")")[0] label = label.partition(" (")[0] self.controls.append(label + "_dyn_anim") cmds.select("*:" + label + "_ik_*_anim") selection = cmds.ls(sl = True) for each in selection: niceName = each.partition(":")[2] self.controls.append(niceName) for i in range(int(numJointsInChain)): self.controls.append("fk_" + label + "_0" + str(i + 1) + "_anim") self.controls.append(label + "_cv_" + str(i) + "_anim") #load UI settings self.loadUISettings() self.findCustomSelectionSets() #create script job for updating ui self.updateUI_scriptJob() #setup the scriptJob cmds.scriptJob(event = ["readingFile", self.killUIScriptJob], runOnce = True, kws = True) cmds.scriptJob(event = ["SceneSaved", self.exitIsoOnSave], parent = self.widgets["window"], kws = True, runOnce = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def bakeDynToFK(self, *args): #find all of the dynamic controls character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) cmds.select(character + ":" + "*dyn_anim") dynControls = cmds.ls(sl = True) if len(dynControls) > 0: #list the controls in a UI if cmds.window("bakeDynToFKControls_UI", exists = True): cmds.deleteUI("bakeDynToFKControls_UI") window = cmds.window("bakeDynToFKControls_UI", title = "Bake Dynamics", w = 300, h = 400, sizeable = True, mnb = False, mxb = False) mainLayout = cmds.formLayout(w = 300, h = 400) #textScrollList self.widgets["bakeDynToFK_List"] = cmds.textScrollList(w = 200, h = 300, allowMultiSelection = True, parent = mainLayout) for control in dynControls: cmds.textScrollList(self.widgets["bakeDynToFK_List"], edit = True, append = control) cmds.formLayout(mainLayout, edit = True, af = [(self.widgets["bakeDynToFK_List"], "top", 50), (self.widgets["bakeDynToFK_List"], "left", 5)] ) #process button button = cmds.button(w = 80, h = 40, label = "Bake", c = self.bakeDynToFK_Process) cmds.formLayout(mainLayout, edit = True, af = [(button, "bottom", 50),(button, "right", 5)]) cmds.showWindow(window) else: cmds.warning("No Dynamic controls found on the current character.") return # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def bakeDynToFK_Process(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) #get the selected controls in the list controlsToBake = cmds.textScrollList(self.widgets["bakeDynToFK_List"], q = True, si = True) if controlsToBake != None: #find the corresponding fk controls for control in controlsToBake: name = control.partition(":")[2].partition("_dyn_anim")[0] masterGrp = character + ":" + name + "_master_ctrl_grp" cmds.select(masterGrp, hi = True) nodes = cmds.ls(sl = True) fkControls = [] for node in nodes: if node.find(":fk_") != -1: if node.find("_anim") != -1: if cmds.nodeType(node) == "transform": fkControls.append(node) #constrain the fk controls to the dny joints #Husk_Base:fk_hood_01_anim constraints = [] for control in fkControls: niceName = control.partition("fk_")[2].partition("_anim")[0] joint = character + ":" + "rig_dyn_" + niceName constraint = cmds.orientConstraint(joint, control)[0] constraints.append(constraint) #select the FK controls and bake start = cmds.playbackOptions(q = True, min = True) end = cmds.playbackOptions(q = True, max = True) cmds.select(clear = True) for control in fkControls: cmds.select(control, add = True) cmds.bakeResults(simulation = True, time = (start, end)) cmds.delete(constraints) #set to FK cmds.setAttr(character + ":" + "Rig_Settings." + name + "_fk", 1) cmds.setAttr(character + ":" + "Rig_Settings." + name + "_ik", 0) cmds.setAttr(character + ":" + "Rig_Settings." + name + "_dynamic", 0) #delete the UI cmds.deleteUI("bakeDynToFKControls_UI") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def getIsoSelectionPolygons(self, *args): cmds.progressWindow(title='Animation UI', progress=0, status='Building Iso Selection Sets', isInterruptable=True ) character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) #create the list of iso selection polygons self.torsoFaces = [] self.leftArmFaces = [] self.rightArmFaces = [] self.leftLegFaces = [] self.rightLegFaces = [] self.headFaces = [] #lists of what joints belong to which "part" torso = ["pelvis", "spine_01", "spine_02", "spine_03", "spine_04", "spine_05", "clavicle_l", "clavicle_r"] leftArm = ["upperarm_l", "lowerarm_l", "hand_l", "index_metacarpal_l", "index_01_l", "index_02_l", "index_03_l", "middle_metacarpal_l", "middle_01_l", "middle_02_l", "middle_03_l", "ring_metacarpal_l", "ring_01_l", "ring_02_l", "ring_03_l", "pinky_metacarpal_l", "pinky_01_l", "pinky_02_l", "pinky_03_l", "thumb_01_l", "thumb_02_l", "thumb_03_l", "lowerarm_twist_01_l", "lowerarm_twist_02_l", "lowerarm_twist_03_l", "upperarm_twist_01_l", "upperarm_twist_02_l", "upperarm_twist_03_l" ] rightArm = ["upperarm_r", "lowerarm_r", "hand_r", "index_metacarpal_r", "index_01_r", "index_02_r", "index_03_r", "middle_metacarpal_r", "middle_01_r", "middle_02_r", "middle_03_r", "ring_metacarpal_r", "ring_01_r", "ring_02_r", "ring_03_r", "pinky_metacarpal_r", "pinky_01_r", "pinky_02_r", "pinky_03_r", "thumb_01_r", "thumb_02_r", "thumb_03_r", "lowerarm_twist_01_r", "lowerarm_twist_02_r", "lowerarm_twist_03_r", "upperarm_twist_01_r", "upperarm_twist_02_r", "upperarm_twist_03_r" ] leftLeg = ["thigh_l", "calf_l", "foot_l", "ball_l", "thigh_twist_01_l", "thigh_twist_02_l", "thigh_twist_03_l", "calf_twist_01_l", "calf_twist_02_l", "calf_twist_03_l"] rightLeg = ["thigh_r", "calf_r", "foot_r", "ball_r", "thigh_twist_01_r", "thigh_twist_02_r", "thigh_twist_03_r", "calf_twist_01_r", "calf_twist_02_r", "calf_twist_03_r"] head = ["neck_01", "neck_02", "neck_03", "head"] characterGeo = [] #find all of the skin clusters. In each one, find the weighted joints and the geometry weighted to those joints skinClusters = cmds.ls(type = 'skinCluster') for skin in skinClusters: weightedJoints = cmds.skinCluster(skin, q = True, weightedInfluence = True) for joint in weightedJoints: #add faces to the iso selection lists if joint.partition(character + ":")[2] in torso: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "Torso", skin]) if joint.partition(character + ":")[2] in leftArm: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "LeftArm", skin]) if joint.partition(character + ":")[2] in rightArm: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "RightArm", skin]) if joint.partition(character + ":")[2] in leftLeg: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "LeftLeg", skin]) if joint.partition(character + ":")[2] in rightLeg: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "RightLeg", skin]) if joint.partition(character + ":")[2] in head: geometryShape = cmds.skinCluster(skin, q = True, geometry = True) geometry = cmds.listRelatives(geometryShape, parent = True)[0] characterGeo.append([geometry, "Head", skin]) progress = 100/len(characterGeo) originalProgress = 100/len(characterGeo) for geo in characterGeo: geom = geo[0] part = geo[1] skin = geo[2] polys = cmds.polyEvaluate(geom, face = True) cmds.progressWindow(edit = True, progress = progress, status='Building Iso Selection Sets') progress = progress + originalProgress for i in range(int(polys)): transforms = cmds.skinPercent( skin, geom + ".f[" + str(i) + "]", ib = .25, query=True, t= None) if transforms != None: if part == "Torso": for transform in transforms: if transform.partition(character + ":")[2] in torso: self.torsoFaces.append(geom + ".f[" + str(i) + "]") if part == "LeftArm": for transform in transforms: if transform.partition(character + ":")[2] in leftArm: self.leftArmFaces.append(geom + ".f[" + str(i) + "]") if part == "RightArm": for transform in transforms: if transform.partition(character + ":")[2] in rightArm: self.rightArmFaces.append(geom + ".f[" + str(i) + "]") if part == "LeftLeg": for transform in transforms: if transform.partition(character + ":")[2] in leftLeg: self.leftLegFaces.append(geom + ".f[" + str(i) + "]") if part == "RightLeg": for transform in transforms: if transform.partition(character + ":")[2] in rightLeg: self.rightLegFaces.append(geom + ".f[" + str(i) + "]") if part == "Head": for transform in transforms: if transform.partition(character + ":")[2] in head: self.headFaces.append(geom + ".f[" + str(i) + "]") cmds.progressWindow(endProgress=1) #enable menu items cmds.menuItem(self.widgets["isoSelect_Torso"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_LeftArm"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_RightArm"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_LeftLeg"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_RightLeg"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_Head"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_ShowAll"], edit = True, enable = True) cmds.menuItem(self.widgets["isoSelect_Generate"], edit = True, enable = False) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def exitIsoOnSave(self, *args): #unIsolate if self.mats != []: for mat in self.mats: face = mat[0] sg = mat[1] cmds.sets(face, forceElement = sg) if cmds.objExists("isoSelect_M"): cmds.delete("isoSelect_M") if cmds.objExists("isoSelect_Set"): cmds.delete("isoSelect_Set") for checkbox in [[self.widgets["isoSelect_Torso"], "Torso"], [self.widgets["isoSelect_LeftArm"], "LeftArm"], [self.widgets["isoSelect_RightArm"], "RightArm"], [self.widgets["isoSelect_LeftLeg"], "LeftLeg"], [self.widgets["isoSelect_RightLeg"], "RightLeg"], [self.widgets["isoSelect_Head"], "Head"]]: cb = checkbox[0] cmds.menuItem(cb, edit = True, cb = True) #ReSave Scene filename = cmds.file(q = True, sceneName = True) filetype = filename.rpartition(".")[2] if filetype == "mb": filetype = "mayaBinary" if filetype == "ma": filetype = "mayaAscii" cmds.file(save = True, force = True, type = filetype) cmds.scriptJob(event = ["SceneSaved", self.exitIsoOnSave], parent = self.widgets["window"], kws = True, runOnce = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def exitIso(self, *args): #unIsolate isoPnl = cmds.getPanel(wf=True) try: isoCrnt = cmds.isolateSelect(isoPnl, q=True, s=True) if isoCrnt != False: mel.eval('enableIsolateSelect %s %d' % (isoPnl,not isoCrnt) ) except: cmds.warning("Invalid viewport for isolate select command") if self.mats != []: for mat in self.mats: face = mat[0] sg = mat[1] cmds.sets(face, forceElement = sg) if cmds.objExists("isoSelect_M"): cmds.delete("isoSelect_M") if cmds.objExists("isoSelect_Set"): cmds.delete("isoSelect_Set") for checkbox in [[self.widgets["isoSelect_Torso"], "Torso"], [self.widgets["isoSelect_LeftArm"], "LeftArm"], [self.widgets["isoSelect_RightArm"], "RightArm"], [self.widgets["isoSelect_LeftLeg"], "LeftLeg"], [self.widgets["isoSelect_RightLeg"], "RightLeg"], [self.widgets["isoSelect_Head"], "Head"]]: cb = checkbox[0] cmds.menuItem(cb, edit = True, cb = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def isoSelect(self, *args): #unIsolate isoPnl = cmds.getPanel(wf=True) try: isoCrnt = cmds.isolateSelect(isoPnl, q=True, s=True) if isoCrnt != False: mel.eval('enableIsolateSelect %s %d' % (isoPnl,not isoCrnt) ) except: cmds.warning("Invalid viewport for isolate select command") if self.mats != []: for mat in self.mats: face = mat[0] sg = mat[1] cmds.sets(face, forceElement = sg) if cmds.objExists("isoSelect_M"): cmds.delete("isoSelect_M") if cmds.objExists("isoSelect_Set"): cmds.delete("isoSelect_Set") #find isolation method classic = cmds.menuItem(self.widgets["isoMethodClassic"], q = True, rb = True) material = cmds.menuItem(self.widgets["isoMethodMaterial"], q = True, rb = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # if material: #find checkbox values isolatedItems = [] for checkbox in [[self.widgets["isoSelect_Torso"], "Torso"], [self.widgets["isoSelect_LeftArm"], "LeftArm"], [self.widgets["isoSelect_RightArm"], "RightArm"], [self.widgets["isoSelect_LeftLeg"], "LeftLeg"], [self.widgets["isoSelect_RightLeg"], "RightLeg"], [self.widgets["isoSelect_Head"], "Head"]]: cb = checkbox[0] part = checkbox[1] value = cmds.menuItem(cb, q = True, cb = True) if value == False: if part == "Torso": cmds.select(self.torsoFaces) isolatedItems.append(self.torsoFaces) if part == "LeftArm": isolatedItems.append(self.leftArmFaces) if part == "RightArm": isolatedItems.append(self.rightArmFaces) if part == "LeftLeg": isolatedItems.append(self.leftLegFaces) if part == "RightLeg": isolatedItems.append(self.rightLegFaces) if part == "Head": isolatedItems.append(self.headFaces) #create your iso selection cmds.select(clear = True) for each in [self.torsoFaces, self.leftArmFaces, self.rightArmFaces, self.leftLegFaces, self.rightLegFaces, self.headFaces]: if each in isolatedItems: cmds.select(each, add = True) #grab the current selection selection = cmds.ls(sl = True) self.mats = [] #get assinged material faces = cmds.ls(sl = True) for face in faces: shaders = cmds.ls(type = "shadingEngine") for each in shaders: connectedFaces = cmds.sets(each, q = True) if connectedFaces != None: for obj in connectedFaces: if obj.find(face.rpartition(".")[0]) != -1: self.mats.append([face, each]) newMat = cmds.shadingNode("lambert", asShader = True, name = "isoSelect_M") cmds.setAttr(newMat + ".transparency", 1, 1, 1, type = "double3") shadingGroup = cmds.sets(name = "isoSelect_Set", renderable = True, noSurfaceShader = True, empty = True) cmds.connectAttr(newMat + ".outColor", shadingGroup + ".surfaceShader") if selection: cmds.select(selection) for each in selection: cmds.sets(each, forceElement = shadingGroup) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # if classic: #find checkbox values isolatedItems = [] cmds.select(clear = True) for checkbox in [[self.widgets["isoSelect_Torso"], "Torso"], [self.widgets["isoSelect_LeftArm"], "LeftArm"], [self.widgets["isoSelect_RightArm"], "RightArm"], [self.widgets["isoSelect_LeftLeg"], "LeftLeg"], [self.widgets["isoSelect_RightLeg"], "RightLeg"], [self.widgets["isoSelect_Head"], "Head"]]: cb = checkbox[0] part = checkbox[1] value = cmds.menuItem(cb, q = True, cb = True) if value == True: if part == "Torso": cmds.select(self.torsoFaces, add = True) if part == "LeftArm": cmds.select(self.leftArmFaces, add = True) if part == "RightArm": cmds.select(self.rightArmFaces, add = True) if part == "LeftLeg": cmds.select(self.leftLegFaces, add = True) if part == "RightLeg": cmds.select(self.rightLegFaces, add = True) if part == "Head": cmds.select(self.headFaces, add = True) #isolate the selection isoPnl = cmds.getPanel(wf=True) try: isoCrnt = cmds.isolateSelect(isoPnl, q=True, s=True) mel.eval('enableIsolateSelect %s %d' % (isoPnl,not isoCrnt) ) except: cmds.warning("Invalid viewport for isolate select command") cmds.select(clear = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def killUIScriptJob(self): #delete script job cmds.scriptJob(kill = self.mainScriptJob) if cmds.dockControl("artAnimUIDock", exists = True): channelBox = cmds.formLayout("ART_cbFormLayout", q = True, childArray = True) if channelBox != None: channelBox = channelBox[0] #reparent the channelBox Layout back to maya's window cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout") channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm') channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm') #edit the channel box pane's attachment to the formLayout cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm)) cmds.deleteUI("artAnimUIDock") if cmds.window("artAnimUI", exists = True): cmds.deleteUI("artAnimUI") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def interfaceScriptJob(self, *args): #unisolate any isolated parts self.exitIso() if cmds.dockControl(self.widgets["dock"], q = True, visible = True) == False: #re-sort out the channel box channelBox = cmds.formLayout("ART_cbFormLayout", q = True, childArray = True) if channelBox != None: channelBox = channelBox[0] #reparent the channelBox Layout back to maya's window cmds.control(channelBox, e = True, p = "MainChannelsLayersLayout") channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm') channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm') #edit the channel box pane's attachment to the formLayout cmds.formLayout(channelBoxLayout, edit = True, af = [(channelBox, "left", 0),(channelBox, "right", 0), (channelBox, "bottom", 0)], attachControl = (channelBox, "top", 0, channelBoxForm)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def loadUISettings(self, *args): settingsLocation = self.mayaToolsDir + "/General/Scripts/settings.txt" if os.path.exists(settingsLocation): f = open(settingsLocation, 'r') settings = cPickle.load(f) #set the UI settings based on file channelBox = settings.get("ChannelBox") if channelBox == True: cmds.menuItem(self.widgets["menuBar_settings_channelBox"], edit = True, checkBox = True) self.showChannelBox() if channelBox == False: cmds.menuItem(self.widgets["menuBar_settings_channelBox"], edit = True, checkBox = False) self.showChannelBox() #space switch settings match = settings.get("Match") if match == True: cmds.menuItem(self.widgets["spaceSwitch_MatchToggleCB"], edit = True, checkBox = True) if match == False: cmds.menuItem(self.widgets["spaceSwitch_MatchToggleCB"], edit = True, checkBox = False) f.close() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def saveUISettings(self, *args): #this function will save out the user's preferences they have set in the UI to disk settingsLocation = self.mayaToolsDir + "/General/Scripts/settings.txt" f = open(settingsLocation, 'w') #Channel Box display settings value = cmds.menuItem(self.widgets["menuBar_settings_channelBox"], q = True, checkBox = True) #Space switch settings match = cmds.menuItem(self.widgets["spaceSwitch_MatchToggleCB"], q = True, cb = True) method = cmds.menuItem(self.widgets["spaceSwitch_MatchMethodCB"], q = True, cb = True) #create a dictionary with these values settings = {} settings["ChannelBox"] = value settings["Match"] = match settings["MatchMethod"] = method #write our dictionary to file cPickle.dump(settings, f) f.close() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def showChannelBox(self, *args): #get the value of the checkbox in the menu Item value = cmds.menuItem(self.widgets["menuBar_settings_channelBox"], q = True, checkBox = True) self.channelBoxLayout = mel.eval('$temp1=$gChannelsLayersForm') self.channelBoxForm = mel.eval('$temp1 = $gChannelButtonForm') if value == True: self.channelBox = mel.eval('$temp1=$gChannelsLayersPane;') #unhide the column that will house the channel box cmds.rowColumnLayout(self.widgets["rowColLayout"], edit = True, cw = [(1, 400), (2, 50), (3, 220)]) #parent the channel box to our anim UI cmds.control(self.channelBox, e = True, p = self.widgets["cbFormLayout"]) cmds.formLayout(self.widgets["cbFormLayout"], edit = True, af = [(self.channelBox, "left", 0),(self.channelBox, "right", 0), (self.channelBox, "bottom", 0), (self.channelBox, "top", 0)]) channelBox = cmds.formLayout(self.widgets["cbFormLayout"], q = True, childArray = True)[0] self.channelBox = channelBox if value == False: #hide the column for the channel box in our anim UI cmds.rowColumnLayout(self.widgets["rowColLayout"], edit = True, cw = [(1, 400), (2, 50), (3, 1)]) try: #reparent the channelBox Layout back to maya's window cmds.control(self.channelBox, e = True, p = "MainChannelsLayersLayout") #edit the channel box pane's attachment to the formLayout cmds.formLayout(self.channelBoxLayout, edit = True, af = [(self.channelBox, "left", 0),(self.channelBox, "right", 0), (self.channelBox, "bottom", 0)], attachControl = (self.channelBox, "top", 0, self.channelBoxForm)) except AttributeError: print "channel box restored" self.saveUISettings() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def setThumbnail(self, characterName, project): projects = os.listdir(self.mayaToolsDir + "/General/Icons/ART/Thumbnails/") thumbnailPath = self.mayaToolsDir + "/General/Icons/ART/Thumbnails/" + self.project + "/" thumbs = os.listdir(thumbnailPath) found = False for thumb in thumbs: if thumb.find("_small") != -1: thumbName = thumb.rpartition(".")[0] thumbName = thumbName.partition("_small")[0] if thumbName.find(characterName[0:-1]) == 0: cmds.symbolButton(self.widgets["activeCharacterThumb"], edit = True, image = thumbnailPath + thumb, ann = characterName) found = True #if our character wasn't in the self.project, but possibly another project, check now if found == False: for project in projects: thumbnailPath = self.mayaToolsDir + "/General/Icons/ART/Thumbnails/" + project + "/" thumbs = os.listdir(thumbnailPath) for thumb in thumbs: if thumb.find("_small") != -1: thumbName = thumb.rpartition(".")[0] thumbName = thumbName.partition("_small")[0] if thumbName.find(characterName[0:-1]) == 0: cmds.symbolButton(self.widgets["activeCharacterThumb"], edit = True, image = thumbnailPath + thumb, ann = characterName) #lstly, repopulate self.controls self.controls = [] for control in ["head_fk_anim", "neck_01_fk_anim", "neck_02_fk_anim", "neck_03_fk_anim", "spine_01_anim", "spine_02_anim", "spine_03_anim", "spine_04_anim", "spine_05_anim", "mid_ik_anim", "chest_ik_anim", "body_anim", "hip_anim", "clavicle_l_anim", "clavicle_r_anim", "fk_arm_l_anim", "fk_arm_r_anim", "fk_elbow_l_anim", "fk_elbow_r_anim", "fk_wrist_l_anim", "fk_wrist_r_anim", "ik_elbow_l_anim", "ik_elbow_r_anim", "ik_wrist_l_anim", "ik_wrist_r_anim", "fk_thigh_l_anim", "fk_thigh_r_anim", "fk_calf_l_anim", "fk_calf_r_anim", "fk_foot_l_anim", "fk_foot_r_anim", "fk_ball_l_anim", "fk_ball_r_anim", "ik_foot_anim_l", "ik_foot_anim_r", "heel_ctrl_l", "heel_ctrl_r", "toe_wiggle_ctrl_l", "toe_wiggle_ctrl_r", "toe_tip_ctrl_l", "toe_tip_ctrl_r", "master_anim", "offset_anim", "root_anim", "upperarm_l_twist_anim", "upperarm_l_twist_2_anim", "upperarm_l_twist_3_anim", "upperarm_r_twist_anim", "upperarm_r_twist_2_anim", "upperarm_r_twist_3_anim", "l_thigh_twist_01_anim", "r_thigh_twist_01_anim", "pinky_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_r", "pinky_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_r", "ring_metacarpal_ctrl_l", "ring_metacarpal_ctrl_r", "ring_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_r", "middle_metacarpal_ctrl_l", "middle_metacarpal_ctrl_r", "middle_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_r", "index_metacarpal_ctrl_l", "index_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_l", "index_finger_fk_ctrl_3_r", "thumb_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_3_l", "thumb_finger_fk_ctrl_3_r", "index_l_ik_anim", "index_r_ik_anim", "middle_l_ik_anim", "middle_r_ik_anim", "ring_l_ik_anim", "ring_r_ik_anim", "pinky_l_ik_anim", "pinky_r_ik_anim", "thumb_l_ik_anim", "thumb_r_ik_anim", "index_l_poleVector", "index_r_poleVector", "middle_l_poleVector", "middle_r_poleVector", "ring_l_poleVector", "ring_r_poleVector", "pinky_l_poleVector", "pinky_r_poleVector", "thumb_l_poleVector", "thumb_r_poleVector", "l_global_ik_anim", "r_global_ik_anim", "lowerarm_l_twist_anim", "lowerarm_l_twist2_anim", "lowerarm_l_twist3_anim", "lowerarm_r_twist_anim", "lowerarm_r_twist2_anim", "lowerarm_r_twist3_anim", "calf_r_twist_anim", "calf_r_twist2_anim", "calf_r_twist3_anim", "calf_l_twist_anim", "calf_l_twist2_anim", "calf_l_twist3_anim", "thigh_l_twist_2_anim", "thigh_l_twist_3_anim", "thigh_r_twist_2_anim", "thigh_r_twist_3_anim"]: self.controls.append(control) #hack character = characterName for obj in ["fk_clavicle_l_anim", "fk_clavicle_r_anim"]: if cmds.objExists(character + ":" + obj): self.controls.append(obj) #find custom joints character = characterName customJoints = [] attrs = cmds.listAttr(character + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) for joint in customJoints: attribute = cmds.getAttr(character + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "leaf": label = label.partition(" (")[0] control = label + "_anim" self.controls.append(control) if jointType == "jiggle": control = label + "_anim" self.controls.append(control) if jointType == "chain" or jointType == "dynamic": numJointsInChain = label.partition("(")[2].partition(")")[0] label = label.partition(" (")[0] self.controls.append(label + "_dyn_anim") cmds.select("*:" + label + "_ik_*_anim") selection = cmds.ls(sl = True) for each in selection: niceName = each.partition(":")[2] self.controls.append(niceName) for i in range(int(numJointsInChain)): self.controls.append("fk_" + label + "_0" + str(i + 1) + "_anim") self.controls.append(label + "_cv_" + str(i) + "_anim") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def populateCharacterRigList(self, *args): characters = self.getCharacters() for character in characters: cmds.menuItem(label = character, parent = self.widgets["characterRigList"], c = partial(self.switchActiveCharacter, character)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchActiveCharacter(self, character, *args): #change the thumbnail self.setThumbnail(character, self.project) #change the visibility of the character pickers and show the correct one characters = self.getCharacters() for char in characters: cmds.columnLayout(self.widgets[char + "_characterPickerLayout"], edit = True, visible = False) cmds.columnLayout(self.widgets[char + "_rigSettingsMainColumn"], edit = True, visible = False) cmds.scrollLayout(self.widgets[char + "_listViewMainLayout"], edit = True, visible = False) cmds.columnLayout(self.widgets[character + "_characterPickerLayout"], edit = True, visible = True) cmds.columnLayout(self.widgets[character + "_rigSettingsMainColumn"], edit = True, visible = True) cmds.scrollLayout(self.widgets[character + "_listViewMainLayout"], edit = True, visible = True) #set the visibility toggle iconTextCheckBox to represent the current character's control visibility shape = cmds.listRelatives(character + ":" + "body_anim", shapes = True)[0] visible = cmds.getAttr(shape + ".v") if visible == False: cmds.iconTextCheckBox(self.widgets["pickerControlVisibility"], edit = True, value = False) if visible == True: cmds.iconTextCheckBox(self.widgets["pickerControlVisibility"], edit = True, value = True) #check to see if space switch window is open if cmds.window("spaceSwitcherUI", exists = True): title = cmds.window("spaceSwitcherUI", q = True, title = True) if character != title: if cmds.button("spaceSwitchSyncStatusButton", q = True, exists = True): cmds.button("spaceSwitchSyncStatusButton", edit = True, visible = True) else: cmds.deleteUI("spaceSwitcherUI") #check to see if pose editor is open if cmds.window("poseEditorUI", exists = True): peTitle = cmds.window("poseEditorUI", q = True, title = True) if character != peTitle: if cmds.button("poseEditor_syncStatusButton", q = True, exists = True): cmds.button("poseEditor_syncStatusButton", edit = True, visible = True) else: cmds.deleteUI("poseEditorUI") #enable menu items cmds.menuItem(self.widgets["isoSelect_Torso"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_LeftArm"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_RightArm"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_LeftLeg"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_RightLeg"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_Head"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_ShowAll"], edit = True, enable = False) cmds.menuItem(self.widgets["isoSelect_Generate"], edit = True, enable = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def getCharacters(self): referenceNodes = [] references = cmds.ls(type = "reference") print references for reference in references: niceName = reference.rpartition("RN")[0] print niceName suffix = reference.rpartition("RN")[2] print suffix if suffix != "": if cmds.objExists(niceName + suffix + ":" + "Skeleton_Settings"): referenceNodes.append(niceName + suffix) else: if cmds.objExists(niceName + ":" + "Skeleton_Settings"): referenceNodes.append(niceName) print referenceNodes return referenceNodes # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createCharacterPicker(self, name, layout): #fist thing to do is create the form layout that needs to be parented to the passed in layout self.widgets[name + "_characterPickerLayout"] = cmds.columnLayout(w = 470, h = 700, parent = layout, visible = False) self.formsToHide.append(self.widgets[name + "_characterPickerLayout"]) #setup button color variables self.blue = [.09, .75, .96] self.white = [1, 1, 1] self.orange = [1, .68, 0] self.purple = [.5, .09, .96] self.green = [0, 1, .16] #create the body frame Layout self.widgets[name + "_bodyFrame"] = cmds.frameLayout(label = "Body", collapse = False, collapsable = True, borderStyle = "in", w = 370, h = 470, parent = self.widgets[name + "_characterPickerLayout"], cc = partial(self.collapseCommand, name, "Body"), ec = partial(self.expandCommand, name, "Body")) self.widgets[name + "_bodyPickerForm"] = cmds.formLayout(w = 370, h = 470, parent = self.widgets[name + "_bodyFrame"]) #background image for body picker image = self.mayaToolsDir + "/General/Icons/ART/picker.jpg" self.widgets[name + "_cpBackground"] = cmds.image(w = 370, h = 450, image = image, parent = self.widgets[name + "_bodyPickerForm"]) #create the body picker controls self.createBodyPicker(name, self.widgets[name + "_bodyPickerForm"]) #create the fingers frame Layout self.widgets[name + "_fingersFrame"] = cmds.frameLayout(label = "Fingers", collapse = False, collapsable = True, borderStyle = "in", w = 370, h = 205, parent = self.widgets[name + "_characterPickerLayout"], cc = partial(self.collapseCommand, name, "Fingers"), ec = partial(self.expandCommand, name, "Fingers")) self.widgets[name + "_fingerPickerForm"] = cmds.formLayout(w = 370, h = 205, parent = self.widgets[name + "_fingersFrame"]) #background image for finger picker image = self.mayaToolsDir + "/General/Icons/ART/fingerPicker.jpg" self.widgets[name + "_fingerPickerBackground"] = cmds.image(w = 370, h = 205, image = image, parent = self.widgets[name + "_fingerPickerForm"]) #create the finger picker controls self.createFingersPicker(name, self.widgets[name + "_fingerPickerForm"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createBodyPicker(self, name, layout, *args): #get settings off of skeleton settings node to know what it is we need to create numNeckBones = cmds.getAttr(name + ":" + "Skeleton_Settings.numNeckBones") numSpineBones = cmds.getAttr(name + ":" + "Skeleton_Settings.numSpineBones") leftArmTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.leftUpperArmTwist") leftArmForeTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.leftLowerArmTwist") rightArmTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.rightUpperArmTwist") rightArmForeTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.rightLowerArmTwist") leftThighTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.leftUpperLegTwist") leftCalfTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.leftLowerLegTwist") rightThighTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.rightUpperLegTwist") rightCalfTwist = cmds.getAttr(name + ":" + "Skeleton_Settings.rightLowerLegTwist") leftBall = cmds.getAttr(name + ":" + "Skeleton_Settings.leftball") rightBall = cmds.getAttr(name + ":" + "Skeleton_Settings.rightball") numLeftToes = cmds.getAttr(name + ":" + "Skeleton_Settings.numLeftToes", asString = True) numRightToes = cmds.getAttr(name + ":" + "Skeleton_Settings.numRightToes", asString = True) #create and place each body part's buttons # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #head self.widgets[name + "_headPickerButton"] = cmds.button(w = 50, h = 50, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "head_fk_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_headPickerButton"], "top", 23), (self.widgets[name + "_headPickerButton"], "left", 159)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #neck buttonHeight = int(40/numNeckBones) if int(numNeckBones) == 3: basePosition = 103 if int(numNeckBones) == 2: basePosition = 94 if int(numNeckBones) == 1: basePosition = 76 for i in range(int(numNeckBones)): self.widgets[name + "_neck" + str(i + 1) + "_PickerButton"] = cmds.button(w = 32, h = buttonHeight, label = "", bgc = self.blue, c = partial(self.buttonSelectCommand, name, "neck_0" + str(i + 1) + "_fk_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_neck" + str(i + 1) + "_PickerButton"], "top", basePosition), (self.widgets[name + "_neck" + str(i + 1) + "_PickerButton"], "left", 170)]) basePosition = basePosition - buttonHeight # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik spine if int(numSpineBones) == 5: midPos = 158 topPos = 118 buttonHeight = 15 if int(numSpineBones) == 4: midPos = 168 topPos = 116 buttonHeight = 19 if int(numSpineBones) == 3: midPos = 154 topPos = 120 buttonHeight = 25 if int(numSpineBones) > 2: self.widgets[name + "_ikSpineMidPickerButton"] = cmds.button(w = 120, h = buttonHeight, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "mid_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_ikSpineMidPickerButton"], "top", midPos), (self.widgets[name + "_ikSpineMidPickerButton"], "left", 126)]) self.widgets[name + "_ikSpineTopPickerButton"] = cmds.button(w = 120, h = buttonHeight, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "chest_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_ikSpineTopPickerButton"], "top", topPos), (self.widgets[name + "_ikSpineTopPickerButton"], "left", 126)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk spine buttonHeight = int(75/numSpineBones) if int(numSpineBones) == 5: basePosition = 198 space = 5 if int(numSpineBones) == 4: basePosition = 194 space = 7 if int(numSpineBones) == 3: basePosition = 188 space = 9 if int(numSpineBones) == 2: basePosition = 175 space = 17 for i in range(int(numSpineBones)): self.widgets[name + "_spine" + str(i + 1) + "_PickerButton"] = cmds.button(w = 80, h = buttonHeight, label = "", bgc = self.blue, c = partial(self.buttonSelectCommand, name, "spine_0" + str(i + 1) + "_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_spine" + str(i + 1) + "_PickerButton"], "top", basePosition), (self.widgets[name + "_spine" + str(i + 1) + "_PickerButton"], "left", 144)]) basePosition = (basePosition - buttonHeight) - space # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #body and pelvis self.widgets[name + "_bodyPickerButton"] = cmds.button(w = 100, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "body_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_bodyPickerButton"], "top", 218), (self.widgets[name + "_bodyPickerButton"], "left", 134)]) self.widgets[name + "_pelvisPickerButton"] = cmds.button(w = 80, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "hip_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_pelvisPickerButton"], "top", 240), (self.widgets[name + "_pelvisPickerButton"], "left", 144)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #clavicles self.widgets[name + "_leftClavPickerButton"] = cmds.button(w = 50, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.clavSelectCommand, name, "fk_clavicle_l_anim", "clavicle_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftClavPickerButton"], "top", 94), (self.widgets[name + "_leftClavPickerButton"], "right", 116)]) self.widgets[name + "_rightClavPickerButton"] = cmds.button(w = 50, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.clavSelectCommand, name, "fk_clavicle_r_anim", "clavicle_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightClavPickerButton"], "top", 94), (self.widgets[name + "_rightClavPickerButton"], "left", 116)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk upper arms self.widgets[name + "_leftShoulderPickerButton"] = cmds.button(w = 78, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_arm_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftShoulderPickerButton"], "top", 94), (self.widgets[name + "_leftShoulderPickerButton"], "right", 36)]) self.widgets[name + "_rightShoulderPickerButton"] = cmds.button(w = 78, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_arm_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightShoulderPickerButton"], "top", 94), (self.widgets[name + "_rightShoulderPickerButton"], "left", 36)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk lower arms self.widgets[name + "_leftElbowPickerButton"] = cmds.button(w = 20, h = 78, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_elbow_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftElbowPickerButton"], "top", 142), (self.widgets[name + "_leftElbowPickerButton"], "right", 35)]) self.widgets[name + "_rightElbowPickerButton"] = cmds.button(w = 20, h = 78, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_elbow_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightElbowPickerButton"], "top", 142), (self.widgets[name + "_rightElbowPickerButton"], "left", 35)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk hands self.widgets[name + "_leftHandPickerButton"] = cmds.button(w = 40, h = 40, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_wrist_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftHandPickerButton"], "top", 247), (self.widgets[name + "_leftHandPickerButton"], "right", 24)]) self.widgets[name + "_rightHandPickerButton"] = cmds.button(w = 40, h = 40, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_wrist_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightHandPickerButton"], "top", 247), (self.widgets[name + "_rightHandPickerButton"], "left", 24)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik elbows self.widgets[name + "_leftIkElbowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_elbow_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkElbowPickerButton"], "top", 118), (self.widgets[name + "_leftIkElbowPickerButton"], "right", 35)]) self.widgets[name + "_rightIkElbowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_elbow_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkElbowPickerButton"], "top", 118), (self.widgets[name + "_rightIkElbowPickerButton"], "left", 35)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik hands self.widgets[name + "_leftIkHandPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_wrist_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkHandPickerButton"], "top", 222), (self.widgets[name + "_leftIkHandPickerButton"], "right", 35)]) self.widgets[name + "_rightIkHandPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_wrist_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkHandPickerButton"], "top", 222), (self.widgets[name + "_rightIkHandPickerButton"], "left", 35)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk thighs self.widgets[name + "_leftThighPickerButton"] = cmds.button(w = 20, h = 80, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_thigh_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThighPickerButton"], "top", 240), (self.widgets[name + "_leftThighPickerButton"], "right", 124)]) self.widgets[name + "_rightThighPickerButton"] = cmds.button(w = 20, h = 80, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_thigh_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThighPickerButton"], "top", 240), (self.widgets[name + "_rightThighPickerButton"], "left", 124)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk knees self.widgets[name + "_leftFkKneePickerButton"] = cmds.button(w = 20, h = 80, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_calf_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftFkKneePickerButton"], "top", 343), (self.widgets[name + "_leftFkKneePickerButton"], "right", 124)]) self.widgets[name + "_rightFkKneePickerButton"] = cmds.button(w = 20, h = 80, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_calf_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightFkKneePickerButton"], "top", 343), (self.widgets[name + "_rightFkKneePickerButton"], "left", 124)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk ankle self.widgets[name + "_leftFkAnklePickerButton"] = cmds.button(w = 40, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_foot_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftFkAnklePickerButton"], "top", 422), (self.widgets[name + "_leftFkAnklePickerButton"], "right", 82)]) self.widgets[name + "_rightFkAnklePickerButton"] = cmds.button(w = 40, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_foot_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightFkAnklePickerButton"], "top", 422), (self.widgets[name + "_rightFkAnklePickerButton"], "left", 82)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #fk ball if leftBall: self.widgets[name + "_leftFkBallPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_ball_l_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftFkBallPickerButton"], "top", 422), (self.widgets[name + "_leftFkBallPickerButton"], "right", 59)]) if rightBall: self.widgets[name + "_rightFkBallPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "fk_ball_r_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightFkBallPickerButton"], "top", 422), (self.widgets[name + "_rightFkBallPickerButton"], "left", 59)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik knees self.widgets[name + "_leftIkKneePickerButton"] = cmds.floatField(w = 40, h = 20, parent = layout, step = 1, minValue = -360, maxValue = 360, precision = 1, ann = "Ctrl + MMB to drag invisible slider") cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkKneePickerButton"], "top", 321), (self.widgets[name + "_leftIkKneePickerButton"], "right", 114)]) self.widgets[name + "_rightIkKneePickerButton"] = cmds.floatField(w = 40, h = 20, parent = layout, step = 1, minValue = -360, maxValue = 360, precision = 1, ann = "Ctrl + MMB to drag invisible slider") cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkKneePickerButton"], "top", 321), (self.widgets[name + "_rightIkKneePickerButton"], "left", 114)]) cmds.connectControl(self.widgets[name + "_leftIkKneePickerButton"] , name + ":ik_foot_anim_l.knee_twist") cmds.connectControl(self.widgets[name + "_rightIkKneePickerButton"] , name + ":ik_foot_anim_r.knee_twist") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik feet self.widgets[name + "_leftIkFootPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_foot_anim_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkFootPickerButton"], "top", 422), (self.widgets[name + "_leftIkFootPickerButton"], "right", 124)]) self.widgets[name + "_rightIkFootPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ik_foot_anim_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkFootPickerButton"], "top", 422), (self.widgets[name + "_rightIkFootPickerButton"], "left", 124)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik heels self.widgets[name + "_leftIkHeelPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "heel_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkHeelPickerButton"], "top", 428), (self.widgets[name + "_leftIkHeelPickerButton"], "right", 149)]) self.widgets[name + "_rightIkHeelPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "heel_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkHeelPickerButton"], "top", 428), (self.widgets[name + "_rightIkHeelPickerButton"], "left", 149)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik toe wiggles self.widgets[name + "_leftIkToeWigglePickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "toe_wiggle_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkToeWigglePickerButton"], "top", 402), (self.widgets[name + "_leftIkToeWigglePickerButton"], "right", 74)]) self.widgets[name + "_rightIkToeWigglePickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "toe_wiggle_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkToeWigglePickerButton"], "top", 402), (self.widgets[name + "_rightIkToeWigglePickerButton"], "left", 74)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #ik toes self.widgets[name + "_leftIkToePickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "toe_tip_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkToePickerButton"], "top", 428), (self.widgets[name + "_leftIkToePickerButton"], "right", 40)]) self.widgets[name + "_rightIkToePickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "toe_tip_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkToePickerButton"], "top", 428), (self.widgets[name + "_rightIkToePickerButton"], "left", 40)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #master, offset, and root self.widgets[name + "_masterPickerButton"] = cmds.button(w = 20, h = 20, label = "M", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "master_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_masterPickerButton"], "top", 401), (self.widgets[name + "_masterPickerButton"], "right", 175)]) self.widgets[name + "_offsetPickerButton"] = cmds.button(w = 20, h = 20, label = "O", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "offset_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_offsetPickerButton"], "top", 375), (self.widgets[name + "_offsetPickerButton"], "right", 175)]) self.widgets[name + "_rootPickerButton"] = cmds.button(w = 20, h = 20, label = "R", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "root_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rootPickerButton"], "top", 350), (self.widgets[name + "_rootPickerButton"], "right", 175)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select head group self.widgets[name + "_headGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["head_fk_anim", "neck_01_fk_anim", "neck_02_fk_anim", "neck_03_fk_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_headGroupPickerButton"], "top", 2), (self.widgets[name + "_headGroupPickerButton"], "right", 178)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select spine group self.widgets[name + "_spineGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["hip_anim", "body_anim", "spine_01_anim", "spine_02_anim", "spine_03_anim", "spine_04_anim", "spine_05_anim", "mid_ik_anim", "chest_ik_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_spineGroupPickerButton"], "top", 264), (self.widgets[name + "_spineGroupPickerButton"], "right", 178)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select left arm group self.widgets[name + "_leftArmGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ik_wrist_l_anim", "ik_elbow_l_anim", "fk_arm_l_anim", "fk_elbow_l_anim", "fk_wrist_l_anim", "clavicle_l_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftArmGroupPickerButton"], "top", 75), (self.widgets[name + "_leftArmGroupPickerButton"], "right", 117)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select right arm group self.widgets[name + "_rightArmGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ik_wrist_r_anim", "ik_elbow_r_anim", "fk_arm_r_anim", "fk_elbow_r_anim", "fk_wrist_r_anim", "clavicle_r_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightArmGroupPickerButton"], "top", 75), (self.widgets[name + "_rightArmGroupPickerButton"], "left", 117)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select left leg group self.widgets[name + "_leftLegGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["fk_thigh_l_anim", "fk_calf_l_anim", "fk_foot_l_anim", "fk_ball_l_anim", "ik_foot_anim_l", "heel_ctrl_l", "toe_wiggle_ctrl_l", "toe_tip_ctrl_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftLegGroupPickerButton"], "top", 222), (self.widgets[name + "_leftLegGroupPickerButton"], "right", 114)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select left leg ik ctrls self.widgets[name + "_leftLegIKGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ik_foot_anim_l", "heel_ctrl_l", "toe_wiggle_ctrl_l", "toe_tip_ctrl_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftLegIKGroupPickerButton"], "top", 408), (self.widgets[name + "_leftLegIKGroupPickerButton"], "right", 40)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select right leg group self.widgets[name + "_rightLegGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["fk_thigh_r_anim", "fk_calf_r_anim", "fk_foot_r_anim", "fk_ball_r_anim", "ik_foot_anim_r", "heel_ctrl_r", "toe_wiggle_ctrl_r", "toe_tip_ctrl_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightLegGroupPickerButton"], "top", 222), (self.widgets[name + "_rightLegGroupPickerButton"], "left", 114)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #select right leg ik ctrls self.widgets[name + "_rightLegIKGroupPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ik_foot_anim_r", "heel_ctrl_r", "toe_wiggle_ctrl_r", "toe_tip_ctrl_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightLegIKGroupPickerButton"], "top", 408), (self.widgets[name + "_rightLegIKGroupPickerButton"], "left", 40)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #arm rolls if leftArmTwist > 0: self.widgets[name + "_leftArmRollPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_l_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftArmRollPickerButton"], "top", 75), (self.widgets[name + "_leftArmRollPickerButton"], "right", 76)]) if leftArmTwist > 1: self.widgets[name + "_leftArmRoll2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_l_twist_2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftArmRoll2PickerButton"], "top", 75), (self.widgets[name + "_leftArmRoll2PickerButton"], "right", 56)]) if leftArmTwist > 2: self.widgets[name + "_leftArmRoll3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_l_twist_3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftArmRoll3PickerButton"], "top", 75), (self.widgets[name + "_leftArmRoll3PickerButton"], "right", 36)]) if rightArmTwist > 0: self.widgets[name + "_rightArmRollPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_r_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightArmRollPickerButton"], "top", 75), (self.widgets[name + "_rightArmRollPickerButton"], "left", 76)]) if rightArmTwist > 1: self.widgets[name + "_rightArmRoll2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_r_twist_2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightArmRoll2PickerButton"], "top", 75), (self.widgets[name + "_rightArmRoll2PickerButton"], "left", 56)]) if rightArmTwist > 2: self.widgets[name + "_rightArmRoll3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "upperarm_r_twist_3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightArmRoll3PickerButton"], "top", 75), (self.widgets[name + "_rightArmRoll3PickerButton"], "left", 36)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #forearm twists if leftArmForeTwist > 0: self.widgets[name + "_leftForeTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_l_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftForeTwistPickerButton"], "top", 190), (self.widgets[name + "_leftForeTwistPickerButton"], "right", 15)]) if leftArmForeTwist > 1: self.widgets[name + "_leftForeTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_l_twist2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftForeTwist2PickerButton"], "top", 170), (self.widgets[name + "_leftForeTwist2PickerButton"], "right", 15)]) if leftArmForeTwist > 2: self.widgets[name + "_leftForeTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_l_twist3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftForeTwist3PickerButton"], "top", 150), (self.widgets[name + "_leftForeTwist3PickerButton"], "right", 15)]) if rightArmForeTwist > 0: self.widgets[name + "_rightForeTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_r_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightForeTwistPickerButton"], "top", 190), (self.widgets[name + "_rightForeTwistPickerButton"], "left", 15)]) if rightArmForeTwist > 1: self.widgets[name + "_rightForeTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_r_twist2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightForeTwist2PickerButton"], "top", 170), (self.widgets[name + "_rightForeTwist2PickerButton"], "left", 15)]) if rightArmForeTwist > 2: self.widgets[name + "_rightForeTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "lowerarm_r_twist3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightForeTwist3PickerButton"], "top", 150), (self.widgets[name + "_rightForeTwist3PickerButton"], "left", 15)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #thigh twists if leftThighTwist > 0: self.widgets[name + "_leftThighTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "l_thigh_twist_01_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThighTwistPickerButton"], "top", 241), (self.widgets[name + "_leftThighTwistPickerButton"], "right", 106)]) if leftThighTwist > 1: self.widgets[name + "_leftThighTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "l_thigh_twist_02_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThighTwist2PickerButton"], "top", 261), (self.widgets[name + "_leftThighTwist2PickerButton"], "right", 106)]) if leftThighTwist > 2: self.widgets[name + "_leftThighTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "l_thigh_twist_03_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThighTwist3PickerButton"], "top", 281), (self.widgets[name + "_leftThighTwist3PickerButton"], "right", 106)]) if rightThighTwist > 0: self.widgets[name + "_rightThighTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "r_thigh_twist_01_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThighTwistPickerButton"], "top", 241), (self.widgets[name + "_rightThighTwistPickerButton"], "left", 106)]) if rightThighTwist > 1: self.widgets[name + "_rightThighTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "r_thigh_twist_02_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThighTwist2PickerButton"], "top", 261), (self.widgets[name + "_rightThighTwist2PickerButton"], "left", 106)]) if rightThighTwist > 2: self.widgets[name + "_rightThighTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "r_thigh_twist_03_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThighTwist3PickerButton"], "top", 281), (self.widgets[name + "_rightThighTwist3PickerButton"], "left", 106)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #calf twists if leftCalfTwist > 0: self.widgets[name + "_leftCalfTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_l_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftCalfTwistPickerButton"], "top", 400), (self.widgets[name + "_leftCalfTwistPickerButton"], "right", 106)]) if leftCalfTwist > 1: self.widgets[name + "_leftCalfTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_l_twist2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftCalfTwist2PickerButton"], "top", 380), (self.widgets[name + "_leftCalfTwist2PickerButton"], "right", 106)]) if leftCalfTwist > 2: self.widgets[name + "_leftCalfTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_l_twist3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftCalfTwist3PickerButton"], "top", 360), (self.widgets[name + "_leftCalfTwist3PickerButton"], "right", 106)]) if rightCalfTwist > 0: self.widgets[name + "_rightCalfTwistPickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_r_twist_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightCalfTwistPickerButton"], "top", 400), (self.widgets[name + "_rightCalfTwistPickerButton"], "left", 106)]) if rightCalfTwist > 1: self.widgets[name + "_rightCalfTwist2PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_r_twist2_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightCalfTwist2PickerButton"], "top", 380), (self.widgets[name + "_rightCalfTwist2PickerButton"], "left", 106)]) if rightCalfTwist > 2: self.widgets[name + "_rightCalfTwist3PickerButton"] = cmds.button(w = 15, h = 15, label = "", parent = layout, bgc = self.purple, c = partial(self.buttonSelectCommand, name, "calf_r_twist3_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightCalfTwist3PickerButton"], "top", 360), (self.widgets[name + "_rightCalfTwist3PickerButton"], "left", 106)]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #Setup right click menus for each of the limbs that can switch modes #spine for i in range(int(numSpineBones)): buttonName = name + "_spine" + str(i + 1) + "_PickerButton" menu = cmds.popupMenu(b = 3, parent = self.widgets[buttonName]) cmds.menuItem(label = "Spine FK Mode", parent = menu, c = partial(self.switchSpineMode, name, "FK")) cmds.menuItem(label = "Spine IK Mode", parent = menu, c = partial(self.switchSpineMode, name, "IK")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "IK", "FK")) if i == 0: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_spine1_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_spine1_RadioCollection"] , "spine_01_space_switcher")) if int(numSpineBones) > 2: menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_ikSpineMidPickerButton"]) cmds.menuItem(label = "Spine FK Mode", parent = menu, c = partial(self.switchSpineMode, name, "FK")) cmds.menuItem(label = "Spine IK Mode", parent = menu, c = partial(self.switchSpineMode, name, "IK")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "IK", "FK")) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_ikSpineTopPickerButton"]) cmds.menuItem(label = "Spine FK Mode", parent = menu, c = partial(self.switchSpineMode, name, "FK")) cmds.menuItem(label = "Spine IK Mode", parent = menu, c = partial(self.switchSpineMode, name, "IK")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "spine", None, "IK", "FK")) spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_chestIkSpine_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_chestIkSpine_RadioCollection"] , "chest_ik_anim_space_switcher")) #Arms for button in[self.widgets[name + "_leftClavPickerButton"], self.widgets[name + "_leftShoulderPickerButton"], self.widgets[name + "_leftElbowPickerButton"], self.widgets[name + "_leftHandPickerButton"], self.widgets[name + "_leftIkElbowPickerButton"], self.widgets[name + "_leftIkHandPickerButton"]]: menu = cmds.popupMenu(b = 3, parent = button) cmds.menuItem(label = "Arm FK Mode", parent = menu, c = partial(self.switchArmMode, name, "FK", "l")) cmds.menuItem(label = "Arm IK Mode", parent = menu, c = partial(self.switchArmMode, name, "IK", "l")) #hack to get new fk clav rig matching functionality. will eventually be replaced with something more graceful when I change it over to a modular system if button == self.widgets[name + "_leftClavPickerButton"]: if cmds.objExists(name + ":fk_clavicle_l_anim"): cmds.menuItem(label = "Clavicle FK Mode", parent = menu, c = partial(self.switchClavMode, name, "FK", "l")) cmds.menuItem(label = "Clavicle IK Mode", parent = menu, c = partial(self.switchClavMode, name, "IK", "l")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "arm", "l", "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "arm", "l", "IK", "FK")) subMenu = cmds.menuItem(label = "Arm FK Orientation Space", parent = menu, subMenu = True) mode = cmds.getAttr(name + ":Rig_Settings.lFkArmOrient") if mode == 0: clavVal = True bodyVal = False worldVal = False if mode == 1: clavVal = False bodyVal = True worldVal = False if mode == 2: clavVal = False bodyVal = False worldVal = True self.widgets[name + "_" + button + "_leftArm_RadioCollection"] = cmds.radioMenuItemCollection(parent = subMenu) self.widgets[name + "_" + button + "_leftArm_ClavSpace"] = cmds.menuItem(label = "Clavicle Space(default fk behavior)", parent = subMenu, cl = self.widgets[name + "_" + button + "_leftArm_RadioCollection"], rb =clavVal, c = partial(self.switchArmOrientMode, name, 0, "l")) self.widgets[name + "_" + button + "_leftArm_BodySpace"] = cmds.menuItem(label = "Body Space", parent = subMenu, cl = self.widgets[name + "_" + button + "_leftArm_RadioCollection"], rb =bodyVal, c = partial(self.switchArmOrientMode, name, 1, "l")) self.widgets[name + "_" + button + "_leftArm_WrldSpace"] = cmds.menuItem(label = "World Space", parent = subMenu, cl = self.widgets[name + "_" + button + "_leftArm_RadioCollection"], rb =worldVal, c = partial(self.switchArmOrientMode, name, 2, "l")) if button == self.widgets[name + "_leftIkHandPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_leftIkHnad_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_leftIkHnad_RadioCollection"] , "ik_wrist_l_anim_space_switcher")) if button == self.widgets[name + "_leftIkElbowPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_leftIkElbow_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_leftIkElbow_RadioCollection"] , "ik_elbow_l_anim_space_switcher")) for button in[self.widgets[name + "_rightClavPickerButton"], self.widgets[name + "_rightShoulderPickerButton"], self.widgets[name + "_rightElbowPickerButton"], self.widgets[name + "_rightHandPickerButton"], self.widgets[name + "_rightIkElbowPickerButton"], self.widgets[name + "_rightIkHandPickerButton"]]: menu = cmds.popupMenu(b = 3, parent = button) cmds.menuItem(label = "Arm FK Mode", parent = menu, c = partial(self.switchArmMode, name, "FK", "r")) cmds.menuItem(label = "Arm IK Mode", parent = menu, c = partial(self.switchArmMode, name, "IK", "r")) if button == self.widgets[name + "_rightClavPickerButton"]: if cmds.objExists(name + ":fk_clavicle_r_anim"): cmds.menuItem(label = "Clavicle FK Mode", parent = menu, c = partial(self.switchClavMode, name, "FK", "r")) cmds.menuItem(label = "Clavicle IK Mode", parent = menu, c = partial(self.switchClavMode, name, "IK", "r")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "arm", "r", "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "arm", "r", "IK", "FK")) subMenu = cmds.menuItem(label = "Arm FK Orientation Space", parent = menu, subMenu = True) mode = cmds.getAttr(name + ":Rig_Settings.rFkArmOrient") if mode == 0: clavVal = True bodyVal = False worldVal = False if mode == 1: clavVal = False bodyVal = True worldVal = False if mode == 2: clavVal = False bodyVal = False worldVal = True self.widgets[name + "_" + button + "_rightArm_RadioCollection"] = cmds.radioMenuItemCollection(parent = subMenu) self.widgets[name + "_" + button + "_rightArm_ClavSpace"] = cmds.menuItem(label = "Clavicle Space(default fk behavior)", parent = subMenu, cl = self.widgets[name + "_" + button + "_rightArm_RadioCollection"], rb =clavVal, c = partial(self.switchArmOrientMode, name, 0, "r")) self.widgets[name + "_" + button + "_rightArm_BodySpace"] = cmds.menuItem(label = "Body Space", parent = subMenu, cl = self.widgets[name + "_" + button + "_rightArm_RadioCollection"], rb =bodyVal, c = partial(self.switchArmOrientMode, name, 1, "r")) self.widgets[name + "_" + button + "_rightArm_WrldSpace"] = cmds.menuItem(label = "World Space", parent = subMenu, cl = self.widgets[name + "_" + button + "_rightArm_RadioCollection"], rb =worldVal, c = partial(self.switchArmOrientMode, name, 2, "r")) if button == self.widgets[name + "_rightIkHandPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_rightIkHnad_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_rightIkHnad_RadioCollection"] , "ik_wrist_r_anim_space_switcher")) if button == self.widgets[name + "_rightIkElbowPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_rightIkElbow_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_rightIkElbow_RadioCollection"] , "ik_elbow_r_anim_space_switcher")) #Legs for button in[self.widgets[name + "_leftThighPickerButton"], self.widgets[name + "_leftFkKneePickerButton"], self.widgets[name + "_leftFkAnklePickerButton"], self.widgets[name + "_leftIkFootPickerButton"]]: menu = cmds.popupMenu(b = 3, parent = button) cmds.menuItem(label = "Leg FK Mode", parent = menu, c = partial(self.switchLegMode, name, "FK", "l")) cmds.menuItem(label = "Leg IK Mode", parent = menu, c = partial(self.switchLegMode, name, "IK", "l")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "leg", "l", "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "leg", "l", "IK", "FK")) if button == self.widgets[name + "_leftIkFootPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_leftIkFoot_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_leftIkFoot_RadioCollection"] , "ik_foot_anim_l_space_switcher")) for button in[self.widgets[name + "_rightThighPickerButton"], self.widgets[name + "_rightFkKneePickerButton"], self.widgets[name + "_rightFkAnklePickerButton"], self.widgets[name + "_rightIkFootPickerButton"]]: menu = cmds.popupMenu(b = 3, parent = button) cmds.menuItem(label = "Leg FK Mode", parent = menu, c = partial(self.switchLegMode, name, "FK", "r")) cmds.menuItem(label = "Leg IK Mode", parent = menu, c = partial(self.switchLegMode, name, "IK", "r")) matchMenu = cmds.menuItem(label = "Matching", parent = menu, subMenu = True) cmds.menuItem(label = "Match FK Rig to current IK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "leg", "r", "FK", "IK")) cmds.menuItem(label = "Match IK Rig to current FK Pose", parent = matchMenu, c = partial(self.match_singleFrame, "leg", "r", "IK", "FK")) if button == self.widgets[name + "_rightIkFootPickerButton"]: spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_rightIkFoot_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_rightIkFoot_RadioCollection"] , "ik_foot_anim_r_space_switcher")) #Head menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_headPickerButton"], postMenuCommand = self.getHeadSpace) subMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) collection = cmds.radioMenuItemCollection(parent = subMenu) self.widgets["neckSpaceRB"] = cmds.menuItem(label = "Neck", parent = subMenu, cl = collection, rb = True, c = partial(self.switchHeadOrientMode, name, 0)) self.widgets["shoulderSpaceRB"] = cmds.menuItem(label = "Shoulder", parent = subMenu, cl = collection, rb = False, c = partial(self.switchHeadOrientMode, name, 1)) self.widgets["bodySpaceRB"] = cmds.menuItem(label = "Body", parent = subMenu, cl = collection, rb = False, c = partial(self.switchHeadOrientMode, name, 2)) self.widgets["worldSpaceRB"] = cmds.menuItem(label = "World", parent = subMenu, cl = collection, rb = False, c = partial(self.switchHeadOrientMode, name, 3)) #Neck if cmds.objExists(name + ":neck_01_fk_anim.fkOrientation"): menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_neck1_PickerButton"], postMenuCommand = self.getNeckSpace) subMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) collection = cmds.radioMenuItemCollection(parent = subMenu) self.widgets["neckOrientShoulderSpaceRB"] = cmds.menuItem(label = "Shoulder", parent = subMenu, cl = collection, rb = False, c = partial(self.switchNeckOrientMode, name, 0)) self.widgets["neckOrientBodySpaceRB"] = cmds.menuItem(label = "Body", parent = subMenu, cl = collection, rb = False, c = partial(self.switchNeckOrientMode, name, 1)) self.widgets["neckOrientWorldSpaceRB"] = cmds.menuItem(label = "World", parent = subMenu, cl = collection, rb = False, c = partial(self.switchNeckOrientMode, name, 2)) #Core (body, master) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_bodyPickerButton"]) spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_bodySpaceSwitch_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_bodySpaceSwitch_RadioCollection"] , "body_anim_space_switcher")) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_masterPickerButton"]) spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_masterSpaceSwitch_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_masterSpaceSwitch_RadioCollection"] , "master_anim_space_switcher")) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createFingersPicker(self, name, layout, *args): #select all fingers buttons self.widgets[name + "_selectAllLeftFingers"] = cmds.symbolButton(image = self.mayaToolsDir + "/General/Icons/ART/lFingerAll.bmp", w = 175, h = 170, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_l", "middle_metacarpal_ctrl_l", "ring_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_l", "index_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_l", "thumb_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_selectAllLeftFingers"], "top", 5), (self.widgets[name + "_selectAllLeftFingers"], "right", 5)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_selectAllLeftFingers"]) cmds.menuItem(label = "Select all IK Finger Controls", parent = menu, c = partial(self.multiButtonSelectCommand, name, ["index_l_ik_anim", "middle_l_ik_anim", "ring_l_ik_anim", "pinky_l_ik_anim", "thumb_l_ik_anim", "index_l_poleVector", "middle_l_poleVector", "ring_l_poleVector", "pinky_l_poleVector", "thumb_l_poleVector", "l_global_ik_anim"])) cmds.menuItem(label = "Select FK and IK Finger Controls", parent = menu, c = partial(self.multiButtonSelectCommand, name, ["index_l_ik_anim", "middle_l_ik_anim", "ring_l_ik_anim", "pinky_l_ik_anim", "thumb_l_ik_anim", "index_l_poleVector", "middle_l_poleVector", "ring_l_poleVector", "pinky_l_poleVector", "thumb_l_poleVector", "l_global_ik_anim", "index_metacarpal_ctrl_l", "middle_metacarpal_ctrl_l", "ring_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_l", "index_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_l", "thumb_finger_fk_ctrl_3_l"])) self.widgets[name + "_selectAllRightFingers"] = cmds.symbolButton(image = self.mayaToolsDir + "/General/Icons/ART/rFingerAll.bmp", w = 175, h = 170, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_r", "middle_metacarpal_ctrl_r", "ring_metacarpal_ctrl_r", "pinky_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_r", "middle_finger_fk_ctrl_3_r", "ring_finger_fk_ctrl_3_r", "pinky_finger_fk_ctrl_3_r", "thumb_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_selectAllRightFingers"], "top", 5), (self.widgets[name + "_selectAllRightFingers"], "left", 5)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_selectAllRightFingers"]) cmds.menuItem(label = "Select all IK Finger Controls", parent = menu, c = partial(self.multiButtonSelectCommand, name, ["index_r_ik_anim", "middle_r_ik_anim", "ring_r_ik_anim", "pinky_r_ik_anim", "thumb_r_ik_anim", "index_r_poleVector", "middle_r_poleVector", "ring_r_poleVector", "pinky_r_poleVector", "thumb_r_poleVector", "r_global_ik_anim"])) cmds.menuItem(label = "Select FK and IK Finger Controls", parent = menu, c = partial(self.multiButtonSelectCommand, name, ["index_r_ik_anim", "middle_r_ik_anim", "ring_r_ik_anim", "pinky_r_ik_anim", "thumb_r_ik_anim", "index_r_poleVector", "middle_r_poleVector", "ring_r_poleVector", "pinky_r_poleVector", "thumb_r_poleVector", "r_global_ik_anim", "index_metacarpal_ctrl_r", "middle_metacarpal_ctrl_r", "ring_metacarpal_ctrl_r", "pinky_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_r", "middle_finger_fk_ctrl_3_r", "ring_finger_fk_ctrl_3_r", "pinky_finger_fk_ctrl_3_r", "thumb_finger_fk_ctrl_3_r"])) #Left Pinky #get settings off of skeleton settings node to know what it is we need to create leftPinkyMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.leftpinkymeta") leftPinky1 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftpinky1") leftPinky2 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftpinky2") leftPinky3 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftpinky3") if leftPinkyMeta: self.widgets[name + "_leftPinkyMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_metacarpal_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinkyMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_leftPinkyMetacarpalPickerButton"], "right", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftPinkyMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "l")) if leftPinky1: self.widgets[name + "_leftPinky1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_1_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinky1PickerButton"], "top", 55), (self.widgets[name + "_leftPinky1PickerButton"], "right", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftPinky1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "l")) if leftPinky2: self.widgets[name + "_leftPinky2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_2_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinky2PickerButton"], "top", 80), (self.widgets[name + "_leftPinky2PickerButton"], "right", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftPinky2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "l")) if leftPinky3: self.widgets[name + "_leftPinky3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_3_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinky3PickerButton"], "top", 105), (self.widgets[name + "_leftPinky3PickerButton"], "right", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftPinky3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "l")) #Left Ring #get settings off of skeleton settings node to know what it is we need to create leftRingMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.leftringmeta") leftRing1 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftring1") leftRing2 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftring2") leftRing3 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftring3") if leftRingMeta: self.widgets[name + "_leftRingMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_metacarpal_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRingMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_leftRingMetacarpalPickerButton"], "right", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftRingMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "l")) if leftRing1: self.widgets[name + "_leftRing1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_1_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRing1PickerButton"], "top", 55), (self.widgets[name + "_leftRing1PickerButton"], "right", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftRing1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "l")) if leftRing2: self.widgets[name + "_leftRing2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_2_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRing2PickerButton"], "top", 80), (self.widgets[name + "_leftRing2PickerButton"], "right", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftRing2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "l")) if leftRing3: self.widgets[name + "_leftRing3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_3_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRing3PickerButton"], "top", 105), (self.widgets[name + "_leftRing3PickerButton"], "right", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftRing3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "l")) #Left Middle #get settings off of skeleton settings node to know what it is we need to create leftMiddleMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.leftmiddlemeta") leftMiddle1 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftmiddle1") leftMiddle2 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftmiddle2") leftMiddle3 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftmiddle3") if leftMiddleMeta: self.widgets[name + "_leftMiddleMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_metacarpal_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddleMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_leftMiddleMetacarpalPickerButton"], "right", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftMiddleMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "l")) if leftMiddle1: self.widgets[name + "_leftMiddle1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_1_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddle1PickerButton"], "top", 55), (self.widgets[name + "_leftMiddle1PickerButton"], "right", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftMiddle1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "l")) if leftMiddle2: self.widgets[name + "_leftMiddle2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_2_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddle2PickerButton"], "top", 80), (self.widgets[name + "_leftMiddle2PickerButton"], "right", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftMiddle2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "l")) if leftMiddle3: self.widgets[name + "_leftMiddle3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_3_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddle3PickerButton"], "top", 105), (self.widgets[name + "_leftMiddle3PickerButton"], "right", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftMiddle3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "l")) #Left Index #get settings off of skeleton settings node to know what it is we need to create leftIndexMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.leftindexmeta") leftIndex1 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftindex1") leftIndex2 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftindex2") leftIndex3 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftindex3") if leftIndexMeta: self.widgets[name + "_leftIndexMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_metacarpal_ctrl_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndexMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_leftIndexMetacarpalPickerButton"], "right", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIndexMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "l")) if leftIndex1: self.widgets[name + "_leftIndex1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_1_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndex1PickerButton"], "top", 55), (self.widgets[name + "_leftIndex1PickerButton"], "right", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIndex1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "l")) if leftIndex2: self.widgets[name + "_leftIndex2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_2_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndex2PickerButton"], "top", 80), (self.widgets[name + "_leftIndex2PickerButton"], "right", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIndex2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "l")) if leftIndex3: self.widgets[name + "_leftIndex3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_3_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndex3PickerButton"], "top", 105), (self.widgets[name + "_leftIndex3PickerButton"], "right", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIndex3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "l")) #Left Thumb #get settings off of skeleton settings node to know what it is we need to create leftThumb1 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftthumb1") leftThumb2 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftthumb2") leftThumb3 = cmds.getAttr(name + ":" + "Skeleton_Settings.leftthumb3") if leftThumb1: self.widgets[name + "_leftThumb1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_1_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumb1PickerButton"], "top", 30), (self.widgets[name + "_leftThumb1PickerButton"], "right", 132)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftThumb1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "l")) if leftThumb2: self.widgets[name + "_leftThumb2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_2_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumb2PickerButton"], "top", 55), (self.widgets[name + "_leftThumb2PickerButton"], "right", 142)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftThumb2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "l")) if leftThumb3: self.widgets[name + "_leftThumb3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_3_l")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumb3PickerButton"], "top", 80), (self.widgets[name + "_leftThumb3PickerButton"], "right", 152)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftThumb3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "l")) #Left finger row globals #get settings off of skeleton settings node to know what it is we need to create self.widgets[name + "_leftMetaRowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_l", "middle_metacarpal_ctrl_l", "ring_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMetaRowPickerButton"], "top", 30), (self.widgets[name + "_leftMetaRowPickerButton"], "right", 7)]) self.widgets[name + "_leftKnuckle1RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftKnuckle1RowPickerButton"], "top", 55), (self.widgets[name + "_leftKnuckle1RowPickerButton"], "right", 7)]) self.widgets[name + "_leftKnuckle2RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftKnuckle2RowPickerButton"], "top", 80), (self.widgets[name + "_leftKnuckle2RowPickerButton"], "right", 7)]) self.widgets[name + "_leftKnuckle3RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftKnuckle3RowPickerButton"], "top", 105), (self.widgets[name + "_leftKnuckle3RowPickerButton"], "right", 7)]) #Left finger column globals #get settings off of skeleton settings node to know what it is we need to create self.widgets[name + "_leftIndexColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_l", "index_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndexColumnPickerButton"], "top", 7), (self.widgets[name + "_leftIndexColumnPickerButton"], "right", 107)]) self.widgets[name + "_leftMiddleColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["middle_metacarpal_ctrl_l", "middle_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddleColumnPickerButton"], "top", 7), (self.widgets[name + "_leftMiddleColumnPickerButton"], "right", 82)]) self.widgets[name + "_leftRingColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ring_metacarpal_ctrl_l", "ring_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRingColumnPickerButton"], "top", 7), (self.widgets[name + "_leftRingColumnPickerButton"], "right", 57)]) self.widgets[name + "_leftPinkyColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["pinky_metacarpal_ctrl_l", "pinky_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinkyColumnPickerButton"], "top", 7), (self.widgets[name + "_leftPinkyColumnPickerButton"], "right", 32)]) #Left thumb global self.widgets[name + "_leftThumbColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["thumb_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_3_l"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumbColumnPickerButton"], "top", 7), (self.widgets[name + "_leftThumbColumnPickerButton"], "right", 132)]) #Left Finger IK if cmds.objExists(name + ":index_l_ik_anim"): self.widgets[name + "_leftIndexFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "index_l_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndexFingerIKPickerButton"], "top", 130), (self.widgets[name + "_leftIndexFingerIKPickerButton"], "right", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIndexFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "l")) if cmds.objExists(name + ":middle_l_ik_anim"): self.widgets[name + "_leftMiddleFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "middle_l_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddleFingerIKPickerButton"], "top", 130), (self.widgets[name + "_leftMiddleFingerIKPickerButton"], "right", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftMiddleFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "l")) if cmds.objExists(name + ":ring_l_ik_anim"): self.widgets[name + "_leftRingFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ring_l_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRingFingerIKPickerButton"], "top", 130), (self.widgets[name + "_leftRingFingerIKPickerButton"], "right", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftRingFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "l")) if cmds.objExists(name + ":pinky_l_ik_anim"): self.widgets[name + "_leftPinkyFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "pinky_l_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinkyFingerIKPickerButton"], "top", 130), (self.widgets[name + "_leftPinkyFingerIKPickerButton"], "right", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftPinkyFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "l")) if cmds.objExists(name + ":thumb_l_ik_anim"): self.widgets[name + "_leftThumbFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "thumb_l_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumbFingerIKPickerButton"], "top", 107), (self.widgets[name + "_leftThumbFingerIKPickerButton"], "right", 152)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftThumbFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "l")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "l")) self.widgets[name + "_leftIkFingersRowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_l_ik_anim", "middle_l_ik_anim", "ring_l_ik_anim", "pinky_l_ik_anim", "thumb_l_ik_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkFingersRowPickerButton"], "top", 130), (self.widgets[name + "_leftIkFingersRowPickerButton"], "right", 7)]) #Left Finger IK Pole Vectors if cmds.objExists(name + ":index_l_ik_anim"): self.widgets[name + "_leftIndexIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "index_l_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIndexIkPvPickerButton"], "top", 155), (self.widgets[name + "_leftIndexIkPvPickerButton"], "right", 112)]) if cmds.objExists(name + ":middle_l_ik_anim"): self.widgets[name + "_leftMiddleIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "middle_l_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftMiddleIkPvPickerButton"], "top", 155), (self.widgets[name + "_leftMiddleIkPvPickerButton"], "right", 87)]) if cmds.objExists(name + ":ring_l_ik_anim"): self.widgets[name + "_leftRingIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ring_l_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftRingIkPvPickerButton"], "top", 155), (self.widgets[name + "_leftRingIkPvPickerButton"], "right", 62)]) if cmds.objExists(name + ":pinky_l_ik_anim"): self.widgets[name + "_leftPinkyIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "pinky_l_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftPinkyIkPvPickerButton"], "top", 155), (self.widgets[name + "_leftPinkyIkPvPickerButton"], "right", 37)]) if cmds.objExists(name + ":thumb_l_ik_anim"): self.widgets[name + "_leftThumbIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "thumb_l_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftThumbIkPvPickerButton"], "top", 132), (self.widgets[name + "_leftThumbIkPvPickerButton"], "right", 157)]) self.widgets[name + "_leftIkFingersPvsPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_l_poleVector", "middle_l_poleVector", "ring_l_poleVector", "pinky_l_poleVector", "thumb_l_poleVector"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkFingersPvsPickerButton"], "top", 155), (self.widgets[name + "_leftIkFingersPvsPickerButton"], "right", 12)]) #Left IK Global Control self.widgets[name + "_leftIkGlobalCtrlPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "l_global_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_leftIkGlobalCtrlPickerButton"], "top", 7), (self.widgets[name + "_leftIkGlobalCtrlPickerButton"], "right", 7)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_leftIkGlobalCtrlPickerButton"]) spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_lIkGlobalCtrl_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_lIkGlobalCtrl_RadioCollection"] , "l_global_ik_anim_space_switcher")) #Right Pinky #get settings off of skeleton settings node to know what it is we need to create rightPinkyMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.rightpinkymeta") rightPinky1 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightpinky1") rightPinky2 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightpinky2") rightPinky3 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightpinky3") if rightPinkyMeta: self.widgets[name + "_rightPinkyMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_metacarpal_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinkyMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_rightPinkyMetacarpalPickerButton"], "left", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightPinkyMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "r")) if rightPinky1: self.widgets[name + "_rightPinky1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_1_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinky1PickerButton"], "top", 55), (self.widgets[name + "_rightPinky1PickerButton"], "left", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightPinky1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "r")) if rightPinky2: self.widgets[name + "_rightPinky2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_2_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinky2PickerButton"], "top", 80), (self.widgets[name + "_rightPinky2PickerButton"], "left", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightPinky2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "r")) if rightPinky3: self.widgets[name + "_rightPinky3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "pinky_finger_fk_ctrl_3_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinky3PickerButton"], "top", 105), (self.widgets[name + "_rightPinky3PickerButton"], "left", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightPinky3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "r")) #Right Ring #get settings off of skeleton settings node to know what it is we need to create rightRingMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.rightringmeta") rightRing1 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightring1") rightRing2 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightring2") rightRing3 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightring3") if rightRingMeta: self.widgets[name + "_rightRingMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_metacarpal_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRingMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_rightRingMetacarpalPickerButton"], "left", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightRingMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "r")) if rightRing1: self.widgets[name + "_rightRing1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_1_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRing1PickerButton"], "top", 55), (self.widgets[name + "_rightRing1PickerButton"], "left", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightRing1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "r")) if rightRing2: self.widgets[name + "_rightRing2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_2_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRing2PickerButton"], "top", 80), (self.widgets[name + "_rightRing2PickerButton"], "left", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightRing2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "r")) if rightRing3: self.widgets[name + "_rightRing3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "ring_finger_fk_ctrl_3_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRing3PickerButton"], "top", 105), (self.widgets[name + "_rightRing3PickerButton"], "left", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightRing3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "r")) #Right Middle #get settings off of skeleton settings node to know what it is we need to create rightMiddleMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.rightmiddlemeta") rightMiddle1 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightmiddle1") rightMiddle2 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightmiddle2") rightMiddle3 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightmiddle3") if rightMiddleMeta: self.widgets[name + "_rightMiddleMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_metacarpal_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddleMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_rightMiddleMetacarpalPickerButton"], "left", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightMiddleMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "r")) if rightMiddle1: self.widgets[name + "_rightMiddle1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_1_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddle1PickerButton"], "top", 55), (self.widgets[name + "_rightMiddle1PickerButton"], "left", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightMiddle1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "r")) if rightMiddle2: self.widgets[name + "_rightMiddle2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_2_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddle2PickerButton"], "top", 80), (self.widgets[name + "_rightMiddle2PickerButton"], "left", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightMiddle2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "r")) if rightMiddle3: self.widgets[name + "_rightMiddle3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "middle_finger_fk_ctrl_3_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddle3PickerButton"], "top", 105), (self.widgets[name + "_rightMiddle3PickerButton"], "left", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightMiddle3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "r")) #Right Index #get settings off of skeleton settings node to know what it is we need to create rightIndexMeta = cmds.getAttr(name + ":" + "Skeleton_Settings.rightindexmeta") rightIndex1 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightindex1") rightIndex2 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightindex2") rightIndex3 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightindex3") if rightIndexMeta: self.widgets[name + "_rightIndexMetacarpalPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_metacarpal_ctrl_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndexMetacarpalPickerButton"], "top", 30), (self.widgets[name + "_rightIndexMetacarpalPickerButton"], "left", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIndexMetacarpalPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "r")) if rightIndex1: self.widgets[name + "_rightIndex1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_1_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndex1PickerButton"], "top", 55), (self.widgets[name + "_rightIndex1PickerButton"], "left", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIndex1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "r")) if rightIndex2: self.widgets[name + "_rightIndex2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_2_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndex2PickerButton"], "top", 80), (self.widgets[name + "_rightIndex2PickerButton"], "left", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIndex2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "r")) if rightIndex3: self.widgets[name + "_rightIndex3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "index_finger_fk_ctrl_3_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndex3PickerButton"], "top", 105), (self.widgets[name + "_rightIndex3PickerButton"], "left", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIndex3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "r")) #Right Thumb #get settings off of skeleton settings node to know what it is we need to create rightThumb1 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightthumb1") rightThumb2 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightthumb2") rightThumb3 = cmds.getAttr(name + ":" + "Skeleton_Settings.rightthumb3") if rightThumb1: self.widgets[name + "_rightThumb1PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_1_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumb1PickerButton"], "top", 30), (self.widgets[name + "_rightThumb1PickerButton"], "left", 132)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightThumb1PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "r")) if rightThumb2: self.widgets[name + "_rightThumb2PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_2_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumb2PickerButton"], "top", 55), (self.widgets[name + "_rightThumb2PickerButton"], "left", 142)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightThumb2PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "r")) if rightThumb3: self.widgets[name + "_rightThumb3PickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.blue, c = partial(self.buttonSelectCommand, name, "thumb_finger_fk_ctrl_3_r")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumb3PickerButton"], "top", 80), (self.widgets[name + "_rightThumb3PickerButton"], "left", 152)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightThumb3PickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "r")) #Right finger row globals #get settings off of skeleton settings node to know what it is we need to create self.widgets[name + "_rightMetaRowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_r", "middle_metacarpal_ctrl_r", "ring_metacarpal_ctrl_r", "pinky_metacarpal_ctrl_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMetaRowPickerButton"], "top", 30), (self.widgets[name + "_rightMetaRowPickerButton"], "left", 7)]) self.widgets[name + "_rightKnuckle1RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_1_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightKnuckle1RowPickerButton"], "top", 55), (self.widgets[name + "_rightKnuckle1RowPickerButton"], "left", 7)]) self.widgets[name + "_rightKnuckle2RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_2_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightKnuckle2RowPickerButton"], "top", 80), (self.widgets[name + "_rightKnuckle2RowPickerButton"], "left", 7)]) self.widgets[name + "_rightKnuckle3RowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_finger_fk_ctrl_3_r", "middle_finger_fk_ctrl_3_r", "ring_finger_fk_ctrl_3_r", "pinky_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightKnuckle3RowPickerButton"], "top", 105), (self.widgets[name + "_rightKnuckle3RowPickerButton"], "left", 7)]) #Right finger column globals #get settings off of skeleton settings node to know what it is we need to create self.widgets[name + "_rightIndexColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndexColumnPickerButton"], "top", 7), (self.widgets[name + "_rightIndexColumnPickerButton"], "left", 107)]) self.widgets[name + "_rightMiddleColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["middle_metacarpal_ctrl_r", "middle_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddleColumnPickerButton"], "top", 7), (self.widgets[name + "_rightMiddleColumnPickerButton"], "left", 82)]) self.widgets[name + "_rightRingColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["ring_metacarpal_ctrl_r", "ring_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRingColumnPickerButton"], "top", 7), (self.widgets[name + "_rightRingColumnPickerButton"], "left", 57)]) self.widgets[name + "_rightPinkyColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["pinky_metacarpal_ctrl_r", "pinky_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinkyColumnPickerButton"], "top", 7), (self.widgets[name + "_rightPinkyColumnPickerButton"], "left", 32)]) #Right thumb global self.widgets[name + "_rightThumbColumnPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["thumb_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_3_r"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumbColumnPickerButton"], "top", 7), (self.widgets[name + "_rightThumbColumnPickerButton"], "left", 132)]) #Right Finger IK if cmds.objExists(name + ":index_r_ik_anim"): self.widgets[name + "_rightIndexFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "index_r_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndexFingerIKPickerButton"], "top", 130), (self.widgets[name + "_rightIndexFingerIKPickerButton"], "left", 107)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIndexFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "index", 1, "r")) if cmds.objExists(name + ":middle_r_ik_anim"): self.widgets[name + "_rightMiddleFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "middle_r_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddleFingerIKPickerButton"], "top", 130), (self.widgets[name + "_rightMiddleFingerIKPickerButton"], "left", 82)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightMiddleFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "middle", 1, "r")) if cmds.objExists(name + ":ring_r_ik_anim"): self.widgets[name + "_rightRingFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ring_r_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRingFingerIKPickerButton"], "top", 130), (self.widgets[name + "_rightRingFingerIKPickerButton"], "left", 57)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightRingFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "ring", 1, "r")) if cmds.objExists(name + ":pinky_r_ik_anim"): self.widgets[name + "_rightPinkyFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "pinky_r_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinkyFingerIKPickerButton"], "top", 130), (self.widgets[name + "_rightPinkyFingerIKPickerButton"], "left", 32)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightPinkyFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "pinky", 1, "r")) if cmds.objExists(name + ":thumb_r_ik_anim"): self.widgets[name + "_rightThumbFingerIKPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "thumb_r_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumbFingerIKPickerButton"], "top", 107), (self.widgets[name + "_rightThumbFingerIKPickerButton"], "left", 152)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightThumbFingerIKPickerButton"]) cmds.menuItem(label = "Finger FK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 0, "r")) cmds.menuItem(label = "Finger IK Mode", parent = menu, c = partial(self.switchFingerMode, name, "thumb", 1, "r")) self.widgets[name + "_rightIkFingersRowPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_r_ik_anim", "middle_r_ik_anim", "ring_r_ik_anim", "pinky_r_ik_anim", "thumb_r_ik_anim"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkFingersRowPickerButton"], "top", 130), (self.widgets[name + "_rightIkFingersRowPickerButton"], "left", 7)]) #Right Finger IK Pole Vectors if cmds.objExists(name + ":index_r_ik_anim"): self.widgets[name + "_rightIndexIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "index_r_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIndexIkPvPickerButton"], "top", 155), (self.widgets[name + "_rightIndexIkPvPickerButton"], "left", 112)]) if cmds.objExists(name + ":middle_r_ik_anim"): self.widgets[name + "_rightMiddleIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "middle_r_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightMiddleIkPvPickerButton"], "top", 155), (self.widgets[name + "_rightMiddleIkPvPickerButton"], "left", 87)]) if cmds.objExists(name + ":ring_r_ik_anim"): self.widgets[name + "_rightRingIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "ring_r_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightRingIkPvPickerButton"], "top", 155), (self.widgets[name + "_rightRingIkPvPickerButton"], "left", 62)]) if cmds.objExists(name + ":pinky_r_ik_anim"): self.widgets[name + "_rightPinkyIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "pinky_r_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightPinkyIkPvPickerButton"], "top", 155), (self.widgets[name + "_rightPinkyIkPvPickerButton"], "left", 37)]) if cmds.objExists(name + ":thumb_r_ik_anim"): self.widgets[name + "_rightThumbIkPvPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "thumb_r_poleVector")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightThumbIkPvPickerButton"], "top", 132), (self.widgets[name + "_rightThumbIkPvPickerButton"], "left", 157)]) self.widgets[name + "_rightIkFingersPvsPickerButton"] = cmds.button(w = 10, h = 10, label = "", parent = layout, bgc = self.green, c = partial(self.multiButtonSelectCommand, name, ["index_r_poleVector", "middle_r_poleVector", "ring_r_poleVector", "pinky_r_poleVector", "thumb_r_poleVector"])) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkFingersPvsPickerButton"], "top", 155), (self.widgets[name + "_rightIkFingersPvsPickerButton"], "left", 12)]) #Right IK Global Control self.widgets[name + "_rightIkGlobalCtrlPickerButton"] = cmds.button(w = 20, h = 20, label = "", parent = layout, bgc = self.orange, c = partial(self.buttonSelectCommand, name, "r_global_ik_anim")) cmds.formLayout(layout, edit = True, af = [(self.widgets[name + "_rightIkGlobalCtrlPickerButton"], "top", 7), (self.widgets[name + "_rightIkGlobalCtrlPickerButton"], "left", 7)]) menu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rightIkGlobalCtrlPickerButton"]) spaceMenu = cmds.menuItem(label = "Space Switching", parent = menu, subMenu = True) self.widgets[name + "_rIkGlobalCtrl_RadioCollection"] = cmds.radioMenuItemCollection(parent = spaceMenu) cmds.menuItem(spaceMenu, edit = True, postMenuCommand = partial(self.getControlSpaces, menu, self.widgets[name + "_rIkGlobalCtrl_RadioCollection"] , "r_global_ik_anim_space_switcher")) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def buttonSelectCommand(self, name, control, *args): #when a picker button gets clicked, we need to select the corresponding item(taking into account selection modifiers), and color the button white mods = cmds.getModifiers() if (mods & 1) > 0: if cmds.objExists(name + ":" + control): cmds.select(name + ":" + control, tgl = True) if (mods & 1) == 0: if cmds.objExists(name + ":" + control): cmds.select(name + ":" + control) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def clavSelectCommand(self, name, fkControl, ikControl, *args): #when a picker button gets clicked, we need to select the corresponding item(taking into account selection modifiers), and color the button white #get the clavicle mode clavMode = 1 try: #fk_clavicle_l_anim side = fkControl.partition("clavicle_")[2].partition("_")[0] clavMode = cmds.getAttr(name + ":Rig_Settings." + side + "ClavMode") except: pass mods = cmds.getModifiers() if clavMode == 0: if (mods & 1) > 0: if cmds.objExists(name + ":" + fkControl): cmds.select(name + ":" + fkControl, tgl = True) if (mods & 1) == 0: if cmds.objExists(name + ":" + fkControl): cmds.select(name + ":" + fkControl) if clavMode == 1: if (mods & 1) > 0: if cmds.objExists(name + ":" + ikControl): cmds.select(name + ":" + ikControl, tgl = True) if (mods & 1) == 0: if cmds.objExists(name + ":" + ikControl): cmds.select(name + ":" + ikControl) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def multiButtonSelectCommand(self, name, controls, *args): #when a picker button gets clicked, we need to select the corresponding item(taking into account selection modifiers), and color the button white mods = cmds.getModifiers() if (mods & 1) > 0: selection = cmds.ls(sl = True) for control in controls: if cmds.objExists(name + ":" + control): cmds.select(name + ":" + control, tgl = True) if (mods & 1) == 0: cmds.select(clear = True) for control in controls: if cmds.objExists(name + ":" + control): cmds.select(name + ":" + control, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchSpineMode(self, name, mode, *args): match = cmds.menuItem(self.widgets["menuBar_settings_matching"], q = True, checkBox = True) if mode == "FK": #if match on switch is checked, match as well if match == True: self.match_singleFrame("spine", None, "FK", "IK") cmds.setAttr(name + ":Rig_Settings.spine_ik", 0) cmds.setAttr(name + ":Rig_Settings.spine_fk", 1) cmds.setKeyframe(name + ":Rig_Settings.spine_ik") cmds.setKeyframe(name + ":Rig_Settings.spine_fk") if mode == "IK": if match == True: self.match_singleFrame("spine", None, "IK", "FK") cmds.setAttr(name + ":Rig_Settings.spine_ik", 1) cmds.setAttr(name + ":Rig_Settings.spine_fk", 0) cmds.setKeyframe(name + ":Rig_Settings.spine_ik") cmds.setKeyframe(name + ":Rig_Settings.spine_fk") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchClavMode(self, name, mode, side, *args): match = cmds.menuItem(self.widgets["menuBar_settings_matching"], q = True, checkBox = True) if mode == "FK": if match == True: self.match_singleFrame("clav", side, "FK", "IK") cmds.setAttr(name + ":Rig_Settings." + side + "ClavMode", 0) cmds.setKeyframe(name + ":Rig_Settings." + side + "ClavMode") if mode == "IK": if match == True: self.match_singleFrame("clav", side, "IK", "FK") cmds.setAttr(name + ":Rig_Settings." + side + "ClavMode", 1) cmds.setKeyframe(name + ":Rig_Settings." + side + "ClavMode") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchArmMode(self, name, mode, side, *args): match = cmds.menuItem(self.widgets["menuBar_settings_matching"], q = True, checkBox = True) if mode == "FK": if match == True: self.match_singleFrame("arm", side, "FK", "IK") cmds.setAttr(name + ":Rig_Settings." + side + "ArmMode", 0) cmds.setKeyframe(name + ":Rig_Settings." + side + "ArmMode") if mode == "IK": if match == True: self.match_singleFrame("arm", side, "IK", "FK") cmds.setAttr(name + ":Rig_Settings." + side + "ArmMode", 1) cmds.setKeyframe(name + ":Rig_Settings." + side + "ArmMode") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchArmOrientMode(self, name, mode, side, *args): currentMode = cmds.getAttr(name + ":Rig_Settings." + side + "FkArmOrient") if currentMode != mode: if mode == 2: constraint = cmds.parentConstraint(name + ":fk_orient_master_loc_" + side, name + ":fk_orient_world_loc_" + side)[0] cmds.setKeyframe(name + ":fk_orient_world_loc_" + side) cmds.delete(constraint) if mode == 1: constraint = cmds.parentConstraint(name + ":fk_orient_master_loc_" + side, name + ":fk_orient_body_loc_" + side)[0] cmds.setKeyframe(name + ":fk_orient_body_loc_" + side) cmds.delete(constraint) cmds.setAttr(name + ":Rig_Settings." + side + "FkArmOrient", mode) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchHeadOrientMode(self, name, mode, *args): currentSelection = cmds.ls(sl = True) currentMode = cmds.getAttr(name + ":head_fk_anim.fkOrientation") currentFrame = cmds.currentTime(q = True) if currentMode != mode: cmds.currentTime(currentFrame - 1) cmds.setKeyframe(name + ":head_fk_anim") cmds.currentTime(currentFrame) #create temp locator tempLoc = cmds.spaceLocator(name = "headSnapTempLoc")[0] constraint = cmds.parentConstraint(name + ":head_fk_anim", tempLoc)[0] cmds.delete(constraint) constraint = cmds.orientConstraint(tempLoc, name + ":head_fk_anim")[0] cmds.setAttr(name + ":head_fk_anim.fkOrientation", mode) cmds.setKeyframe(name + ":head_fk_anim") cmds.delete(constraint) cmds.delete(tempLoc) if len(currentSelection) > 0: cmds.select(currentSelection) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchNeckOrientMode(self, name, mode, *args): currentSelection = cmds.ls(sl = True) currentMode = cmds.getAttr(name + ":neck_01_fk_anim.fkOrientation") currentFrame = cmds.currentTime(q = True) if currentMode != mode: cmds.currentTime(currentFrame - 1) cmds.setKeyframe(name + ":neck_01_fk_anim") cmds.currentTime(currentFrame) #create temp locator tempLoc = cmds.spaceLocator(name = "neckSnapTempLoc")[0] constraint = cmds.parentConstraint(name + ":neck_01_fk_anim", tempLoc)[0] cmds.delete(constraint) constraint = cmds.orientConstraint(tempLoc, name + ":neck_01_fk_anim")[0] cmds.setAttr(name + ":neck_01_fk_anim.fkOrientation", mode) cmds.setKeyframe(name + ":neck_01_fk_anim") cmds.delete(constraint) cmds.delete(tempLoc) if len(currentSelection) > 0: cmds.select(currentSelection) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchLegMode(self, name, mode, side, *args): match = cmds.menuItem(self.widgets["menuBar_settings_matching"], q = True, checkBox = True) if mode == "FK": if match == True: self.match_singleFrame("leg", side, "FK", "IK") cmds.setAttr(name + ":Rig_Settings." + side + "LegMode", 0) cmds.setKeyframe(name + ":Rig_Settings." + side + "LegMode") if mode == "IK": if match == True: self.match_singleFrame("leg", side, "IK", "FK") cmds.setAttr(name + ":Rig_Settings." + side + "LegMode", 1) cmds.setKeyframe(name + ":Rig_Settings." + side + "LegMode") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchCustomChainMode(self, character, controlPrefix, mode, *args): if mode == "FK": cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_fk", 1) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_ik", 0) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_dynamic", 0) cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_fk") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_ik") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_dynamic") if mode == "IK": cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_ik", 1) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_fk", 0) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_dynamic", 0) cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_fk") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_ik") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_dynamic") if mode == "DYNAMIC": cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_dynamic", 1) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_fk", 0) cmds.setAttr(character + ":Rig_Settings." + controlPrefix + "_ik", 0) cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_fk") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_ik") cmds.setKeyframe(character + ":Rig_Settings." + controlPrefix + "_dynamic") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def switchFingerMode(self, name, finger, mode, side, *args): cmds.setAttr(name + ":" + finger + "_finger_" + side + "_mode_anim.FK_IK", mode) cmds.setKeyframe(name + ":" + finger + "_finger_" + side + "_mode_anim.FK_IK") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def listView_selAllBelow(self, name, *args): mods = cmds.getModifiers() #get all controls below children = cmds.treeView(self.widgets[name + "_treeViewWidget"], q = True, children = args[0]) if (mods & 1) > 0: for child in children: if cmds.objExists(name + ":" + child): cmds.select(name + ":" + child, tgl = True) #hilight object in listView cmds.treeView(self.widgets[name + "_treeViewWidget"], edit = True, selectItem = [child, True]) if (mods & 1) == 0: cmds.select(clear = True) for child in children: if cmds.objExists(name + ":" + child): cmds.select(name + ":" + child, add = True) #hilight object in listView cmds.treeView(self.widgets[name + "_treeViewWidget"], edit = True, selectItem = [child, True]) #self.listView_ScriptJob(name) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def listViewSelectItem(self, name, *args): mods = cmds.getModifiers() selected = cmds.treeView(self.widgets[name + "_treeViewWidget"], q = True, selectItem = True) if (mods & 1) > 0: for item in selected: if cmds.objExists(name + ":" + item): cmds.select(name + ":" + item, tgl = True) if (mods & 1) == 0: cmds.select(clear = True) for item in selected: if cmds.objExists(name + ":" + item): cmds.select(name + ":" + item, add = True) #clearSelection #self.listView_ScriptJob(name) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def listView_ScriptJob(self, *args): self.widgets["listViewScriptJob"] = cmds.scriptJob(event = ["SelectionChanged", self.listView_scriptJobCommand], parent = self.widgets["window"], runOnce = True, kws = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def listView_scriptJobCommand(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) selection = cmds.ls(sl = True) selectedItems = cmds.treeView(self.widgets[character + "_treeViewWidget"], q = True, selectItem = True) if selectedItems != None: for item in selectedItems: if character + ":" + item not in selection: cmds.treeView(self.widgets[character + "_treeViewWidget"], edit = True, selectItem = [item, False]) for item in selection: niceName = item.partition(":")[2] if selectedItems != None: if niceName not in selectedItems: if cmds.treeView(self.widgets[character + "_treeViewWidget"], q = True, itemExists = niceName): cmds.treeView(self.widgets[character + "_treeViewWidget"], edit = True, selectItem = [niceName, True]) else: if cmds.treeView(self.widgets[character + "_treeViewWidget"], q = True, itemExists = niceName): cmds.treeView(self.widgets[character + "_treeViewWidget"], edit = True, selectItem = [niceName, True]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createListView(self, name, layout, *args): #create a scrollLayout that is a child of the passed in layout self.widgets[name + "_listViewMainLayout"] = cmds.scrollLayout(w = 400, h = 700, hst = 0, parent = layout) #self.formsToHide.append(self.widgets[name + "_listViewMainLayout"] ) #create the tree view widget self.widgets[name + "_treeViewWidget"] = cmds.treeView(parent = self.widgets[name + "_listViewMainLayout"], numberOfButtons = 2, abr = True, w = 380, h = 3000, selectionChangedCommand = partial(self.listViewSelectItem, name), pressCommand = [[1, partial(self.listView_selAllBelow, name)], [2, partial(self.toggleVisibilityOnSelectedControlGroups, name)]]) #TOP LEVEL CONTROLS cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("RIG CONTROLS", ""), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["RIG CONTROLS", 1], expandItem = ["RIG CONTROLS", False],tc = ["RIG CONTROLS", self.orange[0], self.orange[1], self.orange[2]], bti = [["RIG CONTROLS", 1, "S"], ["RIG CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("Rig_Settings", "RIG CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("master_anim", "RIG CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("offset_anim", "RIG CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("root_anim", "RIG CONTROLS"), hb = True) #TORSO torsoControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("TORSO CONTROLS", "RIG CONTROLS"), hb = False) torsoControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["TORSO CONTROLS", 1], expandItem = ["TORSO CONTROLS", False],tc = ["TORSO CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["TORSO CONTROLS", .3, .3, .3], bti = [["TORSO CONTROLS", 1, "S"], ["TORSO CONTROLS", 2, "V"]]) bodyAnim = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("body_anim", "TORSO CONTROLS"), hb = True) hipAnim = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("hip_anim", "TORSO CONTROLS"), hb = True) fkControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("SPINE FK CONTROLS", "TORSO CONTROLS"), hb = False) torsoControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["SPINE FK CONTROLS", 2], tc = ["SPINE FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["SPINE FK CONTROLS", 1, "S"], ["SPINE FK CONTROLS", 2, "V"]]) for control in ["spine_01_anim", "spine_02_anim", "spine_03_anim", "spine_04_anim", "spine_05_anim"]: if cmds.objExists(name + ":" + control): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (control, "SPINE FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "chest_ik_anim"): ikControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("SPINE IK CONTROLS", "TORSO CONTROLS"), hb = False) torsoControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["SPINE IK CONTROLS", 2], tc = ["SPINE IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["SPINE IK CONTROLS", 1, "S"], ["SPINE IK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("chest_ik_anim", "SPINE IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("mid_ik_anim", "SPINE IK CONTROLS"), hb = True) #HEAD headControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("HEAD CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["HEAD CONTROLS", 1], expandItem = ["HEAD CONTROLS", False],tc = ["HEAD CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["HEAD CONTROLS", .4, .4, .4], bti = [["HEAD CONTROLS", 1, "S"], ["HEAD CONTROLS", 2, "V"]]) for control in ["neck_01_fk_anim", "neck_02_fk_anim", "neck_03_fk_anim"]: if cmds.objExists(name + ":" + control): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (control, "HEAD CONTROLS"), hb = True) headAnim = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("head_fk_anim", "HEAD CONTROLS"), hb = True) #LEFT ARM lArmControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("LEFT ARM CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["LEFT ARM CONTROLS", 1], expandItem = ["LEFT ARM CONTROLS", False],tc = ["LEFT ARM CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["LEFT ARM CONTROLS", .3, .3, .3], bti = [["LEFT ARM CONTROLS", 1, "S"], ["LEFT ARM CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("clavicle_l_anim", "LEFT ARM CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_clavicle_l_anim", "LEFT ARM CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L ARM FK CONTROLS", "LEFT ARM CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L ARM FK CONTROLS", 2], tc = ["L ARM FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L ARM FK CONTROLS", 1, "S"], ["L ARM FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_arm_l_anim", "L ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_elbow_l_anim", "L ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_wrist_l_anim", "L ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L ARM IK CONTROLS", "LEFT ARM CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L ARM IK CONTROLS", 2], tc = ["L ARM IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L ARM IK CONTROLS", 1, "S"], ["L ARM IK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_elbow_l_anim", "L ARM IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_wrist_l_anim", "L ARM IK CONTROLS"), hb = True) #RIGHT ARM lArmControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("RIGHT ARM CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["RIGHT ARM CONTROLS", 1], expandItem = ["RIGHT ARM CONTROLS", False],tc = ["RIGHT ARM CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["RIGHT ARM CONTROLS", .4, .4, .4], bti = [["RIGHT ARM CONTROLS", 1, "S"], ["RIGHT ARM CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("clavicle_r_anim", "RIGHT ARM CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_clavicle_r_anim", "RIGHT ARM CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R ARM FK CONTROLS", "RIGHT ARM CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R ARM FK CONTROLS", 2], tc = ["R ARM FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R ARM FK CONTROLS", 1, "S"], ["R ARM FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_arm_r_anim", "R ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_elbow_r_anim", "R ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_wrist_r_anim", "R ARM FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R ARM IK CONTROLS", "RIGHT ARM CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R ARM IK CONTROLS", 2], tc = ["R ARM IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R ARM FK CONTROLS", 1, "S"], ["R ARM FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_elbow_r_anim", "R ARM IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_wrist_r_anim", "R ARM IK CONTROLS"), hb = True) #LEFT FINGERS lFingerControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("LEFT FINGER CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["LEFT FINGER CONTROLS", 1], expandItem = ["LEFT FINGER CONTROLS", False],tc = ["LEFT FINGER CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["LEFT FINGER CONTROLS", .3, .3, .3], bti = [["LEFT FINGER CONTROLS", 1, "S"], ["LEFT FINGER CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L FINGER FK CONTROLS", "LEFT FINGER CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L FINGER FK CONTROLS", 2], tc = ["L FINGER FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], expandItem = ["L FINGER FK CONTROLS", False], bti = [["L FINGER FK CONTROLS", 1, "S"], ["L FINGER FK CONTROLS", 2, "V"]]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L_" + finger + "_FK", "L FINGER FK CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L_" + finger + "_FK", 2], tc = ["L_" + finger + "_FK", self.blue[0], self.blue[1], self.blue[2]], bti = [["L_" + finger + "_FK", 1, "S"], ["L_" + finger + "_FK", 2, "V"]]) if cmds.objExists(name + ":" + finger + "_metacarpal_ctrl_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_metacarpal_ctrl_l", "L_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_1_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_1_l", "L_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_2_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_2_l", "L_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_3_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_3_l", "L_" + finger + "_FK"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L FINGER IK CONTROLS", "LEFT FINGER CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L FINGER IK CONTROLS", 2], tc = ["L FINGER IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], expandItem = ["L FINGER IK CONTROLS", False], bti = [["L FINGER IK CONTROLS", 1, "S"], ["L FINGER IK CONTROLS", 2, "V"]]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_l_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_l_ik_anim", "L FINGER IK CONTROLS"), hb = True) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_l_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_l_poleVector", "L FINGER IK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "l_global_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("l_global_ik_anim", "L FINGER IK CONTROLS"), hb = True) #RIGHT FINGERS lFingerControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("RIGHT FINGER CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["RIGHT FINGER CONTROLS", 1], expandItem = ["RIGHT FINGER CONTROLS", False],tc = ["RIGHT FINGER CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["RIGHT FINGER CONTROLS", .4, .4, .4], bti = [["RIGHT FINGER CONTROLS", 1, "S"], ["RIGHT FINGER CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R FINGER FK CONTROLS", "RIGHT FINGER CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R FINGER FK CONTROLS", 2], tc = ["R FINGER FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], expandItem = ["R FINGER FK CONTROLS", False], bti = [["R FINGER FK CONTROLS", 1, "S"], ["R FINGER FK CONTROLS", 2, "V"]]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R_" + finger + "_FK", "R FINGER FK CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R_" + finger + "_FK", 2], tc = ["R_" + finger + "_FK", self.blue[0], self.blue[1], self.blue[2]], bti = [["R_" + finger + "_FK", 1, "S"], ["R_" + finger + "_FK", 2, "V"]]) if cmds.objExists(name + ":" + finger + "_metacarpal_ctrl_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_metacarpal_ctrl_r", "R_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_1_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_1_r", "R_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_2_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_2_r", "R_" + finger + "_FK"), hb = True) if cmds.objExists(name + ":" + finger + "_finger_fk_ctrl_3_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_finger_fk_ctrl_3_r", "R_" + finger + "_FK"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R FINGER IK CONTROLS", "RIGHT FINGER CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R FINGER IK CONTROLS", 2], tc = ["R FINGER IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], expandItem = ["R FINGER IK CONTROLS", False], bti = [["R FINGER IK CONTROLS", 1, "S"], ["R FINGER IK CONTROLS", 2, "V"]]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_r_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_r_ik_anim", "R FINGER IK CONTROLS"), hb = True) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_r_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (finger + "_r_poleVector", "R FINGER IK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "r_global_ik_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("r_global_ik_anim", "R FINGER IK CONTROLS"), hb = True) #LEFT LEG lLegControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("LEFT LEG CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["LEFT LEG CONTROLS", 1], expandItem = ["LEFT LEG CONTROLS", False],tc = ["LEFT LEG CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["LEFT LEG CONTROLS", .3, .3, .3], bti = [["LEFT LEG CONTROLS", 1, "S"], ["LEFT LEG CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L LEG FK CONTROLS", "LEFT LEG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L LEG FK CONTROLS", 2], tc = ["L LEG FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L LEG FK CONTROLS", 1, "S"], ["L LEG FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_thigh_l_anim", "L LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_calf_l_anim", "L LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_foot_l_anim", "L LEG FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "fk_ball_l_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_ball_l_anim", "L LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L LEG IK CONTROLS", "LEFT LEG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L LEG IK CONTROLS", 2], tc = ["L LEG IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L LEG IK CONTROLS", 1, "S"], ["L LEG IK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_foot_anim_l", "L LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("heel_ctrl_l", "L LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("toe_wiggle_ctrl_l", "L LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("toe_tip_ctrl_l", "L LEG IK CONTROLS"), hb = True) #RIGHT LEG rLegControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("RIGHT LEG CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["RIGHT LEG CONTROLS", 1], expandItem = ["RIGHT LEG CONTROLS", False],tc = ["RIGHT LEG CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["RIGHT LEG CONTROLS", .4, .4, .4], bti = [["RIGHT LEG CONTROLS", 1, "S"], ["RIGHT LEG CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R LEG FK CONTROLS", "RIGHT LEG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R LEG FK CONTROLS", 2], tc = ["R LEG FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R LEG FK CONTROLS", 1, "S"], ["R LEG FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_thigh_r_anim", "R LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_calf_r_anim", "R LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_foot_r_anim", "R LEG FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "fk_ball_r_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_ball_r_anim", "R LEG FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R LEG IK CONTROLS", "RIGHT LEG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R LEG IK CONTROLS", 2], tc = ["R LEG IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R LEG IK CONTROLS", 1, "S"], ["R LEG IK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_foot_anim_r", "R LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("heel_ctrl_r", "R LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("toe_wiggle_ctrl_r", "R LEG IK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("toe_tip_ctrl_r", "R LEG IK CONTROLS"), hb = True) #LEFT TOES lToeControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("LEFT TOE CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["LEFT TOE CONTROLS", 1], expandItem = ["LEFT TOE CONTROLS", False],tc = ["LEFT TOE CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["LEFT TOE CONTROLS", .3, .3, .3], bti = [["LEFT TOE CONTROLS", 1, "S"], ["LEFT TOE CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L TOE FK CONTROLS", "LEFT TOE CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L TOE FK CONTROLS", 2], tc = ["L TOE FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L TOE FK CONTROLS", 1, "S"], ["L TOE FK CONTROLS", 2, "V"]]) for toe in ["index", "middle", "ring", "pinky", "bigtoe"]: if cmds.objExists(name + ":" + toe + "_metatarsal_ctrl_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "_metatarsal_ctrl_l", "L TOE FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + toe + "toe_fk_ctrl_1_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "toe_fk_ctrl_1_l", "L TOE FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + toe + "toe_fk_ctrl_2_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "toe_fk_ctrl_2_l", "L TOE FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("L TOE IK CONTROLS", "LEFT TOE CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["L TOE IK CONTROLS", 2], tc = ["L TOE IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["L TOE IK CONTROLS", 1, "S"], ["L TOE IK CONTROLS", 2, "V"]]) for toe in ["index", "middle", "ring", "pinky", "bigtoe"]: if cmds.objExists(name + ":" + toe + "_ik_ctrl_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "_ik_ctrl_l", "L TOE IK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "ik_global_ctrl_l"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_global_ctrl_l", "L TOE IK CONTROLS"), hb = True) #RIGHT TOES lToeControls = cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("RIGHT TOE CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["RIGHT TOE CONTROLS", 1], expandItem = ["RIGHT TOE CONTROLS", False],tc = ["RIGHT TOE CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["RIGHT TOE CONTROLS", .4, .4, .4], bti = [["RIGHT TOE CONTROLS", 1, "S"], ["RIGHT TOE CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R TOE FK CONTROLS", "RIGHT TOE CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R TOE FK CONTROLS", 2], tc = ["R TOE FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R TOE FK CONTROLS", 1, "S"], ["R TOE FK CONTROLS", 2, "V"]]) for toe in ["index", "middle", "ring", "pinky", "bigtoe"]: if cmds.objExists(name + ":" + toe + "_metatarsal_ctrl_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "_metatarsal_ctrl_r", "R TOE FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + toe + "toe_fk_ctrl_1_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "toe_fk_ctrl_1_r", "R TOE FK CONTROLS"), hb = True) if cmds.objExists(name + ":" + toe + "toe_fk_ctrl_2_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "toe_fk_ctrl_2_r", "R TOE FK CONTROLS"), hb = True) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("R TOE IK CONTROLS", "RIGHT TOE CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["R TOE IK CONTROLS", 2], tc = ["R TOE IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [["R TOE IK CONTROLS", 1, "S"], ["R TOE IK CONTROLS", 2, "V"]]) for toe in ["index", "middle", "ring", "pinky", "bigtoe"]: if cmds.objExists(name + ":" + toe + "_ik_ctrl_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (toe + "_ik_ctrl_r", "R TOE IK CONTROLS"), hb = True) if cmds.objExists(name + ":" + "ik_global_ctrl_r"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("ik_global_ctrl_r", "R TOE IK CONTROLS"), hb = True) #CUSTOM JOINTS cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("CUSTOM LEAF CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["CUSTOM LEAF CONTROLS", 1], expandItem = ["CUSTOM LEAF CONTROLS", False],tc = ["CUSTOM LEAF CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["CUSTOM LEAF CONTROLS", .3, .3, .3], bti = [["CUSTOM LEAF CONTROLS", 1, "S"], ["CUSTOM LEAF CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("CUSTOM JIGGLE CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["CUSTOM JIGGLE CONTROLS", 1], expandItem = ["CUSTOM JIGGLE CONTROLS", False],tc = ["CUSTOM JIGGLE CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["CUSTOM JIGGLE CONTROLS", .4, .4, .4], bti = [["CUSTOM JIGGLE CONTROLS", 1, "S"], ["CUSTOM JIGGLE CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("CUSTOM CHAIN CONTROLS", "RIG CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = ["CUSTOM CHAIN CONTROLS", 1], expandItem = ["CUSTOM CHAIN CONTROLS", False],tc = ["CUSTOM CHAIN CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = ["CUSTOM CHAIN CONTROLS", .3, .3, .3], bti = [["CUSTOM CHAIN CONTROLS", 1, "S"], ["CUSTOM CHAIN CONTROLS", 2, "V"]]) customJoints = [] attrs = cmds.listAttr(name + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) customJoints = sorted(customJoints) for joint in customJoints: attribute = cmds.getAttr(name + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "leaf": label = label.partition(" (")[0] cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + "_anim", "CUSTOM LEAF CONTROLS"), hb = True) if jointType == "jiggle": cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + "_anim", "CUSTOM JIGGLE CONTROLS"), hb = True) if jointType == "chain" or jointType == "dynamic": numJointsInChain = label.partition("(")[2].partition(")")[0] label = label.partition(" (")[0] cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + " CONTROLS", "CUSTOM CHAIN CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = [label + " CONTROLS", 1], expandItem = [label + " CONTROLS", False],tc = [label + " CONTROLS", self.orange[0], self.orange[1], self.orange[2]], labelBackgroundColor = [label + " CONTROLS", .3, .3, .3]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + " FK CONTROLS", label + " CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = [label + " FK CONTROLS", 2], tc = [label + " FK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [[label + " FK CONTROLS", 1, "S"], [label + " FK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + " IK CONTROLS", label + " CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = [label + " IK CONTROLS", 2], tc = [label + " IK CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [[label + " IK CONTROLS", 1, "S"], [label + " IK CONTROLS", 2, "V"]]) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + " DYNAMIC CONTROLS", label + " CONTROLS"), hb = False) cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, ff = [label + " DYNAMIC CONTROLS", 2], tc = [label + " DYNAMIC CONTROLS", self.blue[0], self.blue[1], self.blue[2]], bti = [[label + " DYNAMIC CONTROLS", 1, "S"], [label + " DYNAMIC CONTROLS", 2, "V"]]) for i in range(int(numJointsInChain) + 1): if cmds.objExists(name + ":" + "fk_" + label + "_0" + str(i) + "_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = ("fk_" + label + "_0" + str(i) + "_anim", label + " FK CONTROLS"), hb = True) #ik controls cmds.select("*:" + label + "_ik_*_anim") selection = cmds.ls(sl = True) for each in selection: niceName = each.partition(":")[2] try: cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (niceName, label + " IK CONTROLS"), hb = True) except: pass for i in range(int(numJointsInChain)): if cmds.objExists(name + ":" + label + "_cv_" + str(i) + "_anim"): cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + "_cv_" + str(i) + "_anim", label + " IK CONTROLS"), hb = True) #dynamic controls cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, addItem = (label + "_dyn_anim", label + " DYNAMIC CONTROLS"), hb = True) #expand cmds.treeView(self.widgets[name + "_treeViewWidget"], e=True, expandItem = ["RIG CONTROLS", True]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createRigSettings(self, name, layout, *args): #create a columnLayout that is a child of the passed in layout self.widgets[name + "_rigSettingsMainColumn"] = cmds.columnLayout(parent = layout) self.formsToHide.append(self.widgets[name + "_rigSettingsMainColumn"]) #First create left and right arm frame layouts with all of the settings for the arms #rig mode, fk orientation space, ik stretch settings, arm roll settings #LEFT ARM self.widgets[name + "_rigSettings_leftArmFrame"] = cmds.frameLayout(label = "Left Arm", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "LeftArmSettings"), ec = partial(self.expandCommand, name, "LeftArmSettings")) self.widgets[name + "_rigSettings_leftArmForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_leftArmFrame"]) #rig mode text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_leftArmMode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_leftArmFkModeButton"] = cmds.iconTextRadioButton(cl = self.widgets[name + "rigSettings_leftArmMode_Collection"], image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchArmMode, name, "FK", "l")) self.widgets[name + "_rigSettings_leftArmIkModeButton"] = cmds.iconTextRadioButton(cl = self.widgets[name + "rigSettings_leftArmMode_Collection"], image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchArmMode, name, "IK", "l")) mode = cmds.getAttr(name + ":Rig_Settings.lArmMode") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmFkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_leftArmFkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmIkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_leftArmIkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmIkModeButton"], edit = True, select = True) #fk orientation space text2 = cmds.text(label = "FK Arm Orientation Space:", font = "boldLabelFont") self.widgets[name + "rigSettings_leftArmOrient_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_leftArmFkOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsClav_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsClav_on.bmp", w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 0, "l")) self.widgets[name + "_rigSettings_leftArmBodyOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsBody_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsBody_on.bmp",w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 1, "l")) self.widgets[name + "_rigSettings_leftArmWorldOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsWorld_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsWorld_on.bmp",w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 2, "l")) mode = cmds.getAttr(name + ":Rig_Settings.lFkArmOrient") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text2, "top", 85),(text2, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmFkOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_leftArmFkOrientModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmBodyOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_leftArmBodyOrientModeButton"], "left", 138)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmWorldOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_leftArmWorldOrientModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmFkOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmBodyOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmWorldOrientModeButton"], edit = True, select = True) #ik stretch settings text3 = cmds.text(label = "IK Arm Stretch Settings", font = "boldLabelFont") text4 = cmds.text(label = "Stretch") text5 = cmds.text(label = "Squash") stetchVal = cmds.getAttr(name + ":ik_wrist_l_anim.stretch") try: squashVal = cmds.getAttr(name + ":ik_wrist_l_anim.squash") except: pass try: self.widgets[name + "_rigSettings_leftArmIkStretchField"] = cmds.floatField( minValue=0, maxValue=1, value=stetchVal, w = 100) except: cmds.warning("Left Arm IK stretch above or below the allowed range.") try: self.widgets[name + "_rigSettings_leftArmIkStretchBiasField"] = cmds.floatField( minValue=0, maxValue=1, value=squashVal, w = 100 ) except: cmds.warning("Left Arm IK Squash above or below the allowed range.") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text3, "top", 145),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text4, "top", 173),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text5, "top", 173),(text5, "left", 220)]) try: cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmIkStretchField"], "top", 170),(self.widgets[name + "_rigSettings_leftArmIkStretchField"], "left", 55)]) except: pass try: cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmIkStretchBiasField"], "top", 170),(self.widgets[name + "_rigSettings_leftArmIkStretchBiasField"], "left", 250)]) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_leftArmIkStretchField"], name + ":ik_wrist_l_anim.stretch" ) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_leftArmIkStretchBiasField"], name + ":ik_wrist_l_anim.squash") except: pass #arm roll settings text6 = cmds.text(label = "Arm Roll Settings", font = "boldLabelFont") text7 = cmds.text(label = "Upper Arm Twist Amount:") text8 = cmds.text(label = "Lower Arm Twist Amount:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text6, "top", 200),(text6, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text7, "top", 223),(text7, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text8, "top", 223),(text8, "left", 220)]) if cmds.objExists(name + ":Rig_Settings.lUpperarmTwistAmount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.lUpperarmTwistAmount") self.widgets[name + "_rigSettings_leftArmUpArmTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmUpArmTwistField"], "top", 240),(self.widgets[name + "_rigSettings_leftArmUpArmTwistField"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmUpArmTwistField"], name + ":Rig_Settings.lUpperarmTwistAmount" ) text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 242),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.lUpperarmTwist2Amount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.lUpperarmTwist2Amount") self.widgets[name + "_rigSettings_leftArmUpArmTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmUpArmTwist2Field"], "top", 260),(self.widgets[name + "_rigSettings_leftArmUpArmTwist2Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmUpArmTwist2Field"], name + ":Rig_Settings.lUpperarmTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 262),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.lUpperarmTwist3Amount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.lUpperarmTwist3Amount") self.widgets[name + "_rigSettings_leftArmUpArmTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmUpArmTwist3Field"], "top", 280),(self.widgets[name + "_rigSettings_leftArmUpArmTwist3Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmUpArmTwist3Field"], name + ":Rig_Settings.lUpperarmTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 282),(text, "left", 10)]) #lower arm if cmds.objExists(name + ":Rig_Settings.lForearmTwistAmount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.lForearmTwistAmount") self.widgets[name + "_rigSettings_leftArmLowArmTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100 ) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmLowArmTwistField"], "top", 240),(self.widgets[name + "_rigSettings_leftArmLowArmTwistField"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmLowArmTwistField"], name + ":Rig_Settings.lForearmTwistAmount") text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 242),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.lForearmTwist2Amount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.lForearmTwist2Amount") self.widgets[name + "_rigSettings_leftArmLowArmTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmLowArmTwist2Field"], "top", 260),(self.widgets[name + "_rigSettings_leftArmLowArmTwist2Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmLowArmTwist2Field"], name + ":Rig_Settings.lForearmTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 262),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.lForearmTwist3Amount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.lForearmTwist3Amount") self.widgets[name + "_rigSettings_leftArmLowArmTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftArmLowArmTwist3Field"], "top", 280),(self.widgets[name + "_rigSettings_leftArmLowArmTwist3Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftArmLowArmTwist3Field"], name + ":Rig_Settings.lForearmTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_leftArmForm"], edit = True, af = [(text, "top", 282),(text, "left", 200)]) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_leftArmForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Left Arm Rig Settings", c = partial(self.selectRigSettings_Specific, "leftArm")) #RIGHT ARM self.widgets[name + "_rigSettings_rightArmFrame"] = cmds.frameLayout(label = "Right Arm", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "RightArmSettings"), ec = partial(self.expandCommand, name, "RightArmSettings")) self.widgets[name + "_rigSettings_rightArmForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_rightArmFrame"]) #rig mode text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_rightArmMode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_rightArmFkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchArmMode, name, "FK", "r")) self.widgets[name + "_rigSettings_rightArmIkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchArmMode, name, "IK", "r")) mode = cmds.getAttr(name + ":Rig_Settings.rArmMode") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmFkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_rightArmFkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmIkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_rightArmIkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmIkModeButton"], edit = True, select = True) #fk orientation space text2 = cmds.text(label = "FK Arm Orientation Space:", font = "boldLabelFont") self.widgets[name + "rigSettings_rightArmOrient_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_rightArmFkOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsClav_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsClav_on.bmp", w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 0, "r")) self.widgets[name + "_rigSettings_rightArmBodyOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsBody_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsBody_on.bmp",w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 1, "r")) self.widgets[name + "_rigSettings_rightArmWorldOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsWorld_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsWorld_on.bmp",w = 115, h = 30, onc = partial(self.switchArmOrientMode, name, 2, "r")) mode = cmds.getAttr(name + ":Rig_Settings.rFkArmOrient") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text2, "top", 85),(text2, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmFkOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_rightArmFkOrientModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmBodyOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_rightArmBodyOrientModeButton"], "left", 138)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmWorldOrientModeButton"], "top", 105),(self.widgets[name + "_rigSettings_rightArmWorldOrientModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmFkOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmBodyOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmWorldOrientModeButton"], edit = True, select = True) #ik stretch settings text3 = cmds.text(label = "IK Arm Stretch Settings", font = "boldLabelFont") text4 = cmds.text(label = "Stretch") text5 = cmds.text(label = "Squash") stetchVal = cmds.getAttr(name + ":ik_wrist_r_anim.stretch") try: squashVal = cmds.getAttr(name + ":ik_wrist_r_anim.squash") except: pass try: self.widgets[name + "_rigSettings_rightArmIkStretchField"] = cmds.floatField( minValue=0, maxValue=1, value=stetchVal, w = 100) except: cmds.warning("Right Arm IK Stretch above or below the allowed range.") try: self.widgets[name + "_rigSettings_rightArmIkStretchBiasField"] = cmds.floatField( minValue=0, maxValue=1, value=squashVal, w = 100 ) except: cmds.warning("Right Arm IK squash above or below the allowed range.") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text3, "top", 145),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text4, "top", 173),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text5, "top", 173),(text5, "left", 220)]) try: cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmIkStretchField"], "top", 170),(self.widgets[name + "_rigSettings_rightArmIkStretchField"], "left", 55)]) except: pass try: cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmIkStretchBiasField"], "top", 170),(self.widgets[name + "_rigSettings_rightArmIkStretchBiasField"], "left", 250)]) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_rightArmIkStretchField"], name + ":ik_wrist_r_anim.stretch" ) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_rightArmIkStretchBiasField"], name + ":ik_wrist_r_anim.squash") except: pass #arm roll settings text6 = cmds.text(label = "Arm Roll Settings", font = "boldLabelFont") text7 = cmds.text(label = "Upper Arm Twist Amount:") text8 = cmds.text(label = "Lower Arm Twist Amount:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text6, "top", 200),(text6, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text7, "top", 223),(text7, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text8, "top", 223),(text8, "left", 220)]) if cmds.objExists(name + ":Rig_Settings.rUpperarmTwistAmount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.rUpperarmTwistAmount") self.widgets[name + "_rigSettings_rightArmUpArmTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmUpArmTwistField"], "top", 240),(self.widgets[name + "_rigSettings_rightArmUpArmTwistField"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmUpArmTwistField"], name + ":Rig_Settings.rUpperarmTwistAmount" ) text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 242),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.rUpperarmTwist2Amount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.rUpperarmTwist2Amount") self.widgets[name + "_rigSettings_rightArmUpArmTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmUpArmTwist2Field"], "top", 260),(self.widgets[name + "_rigSettings_rightArmUpArmTwist2Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmUpArmTwist2Field"], name + ":Rig_Settings.rUpperarmTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 262),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.rUpperarmTwist3Amount"): upArmVal = cmds.getAttr(name + ":Rig_Settings.rUpperarmTwist3Amount") self.widgets[name + "_rigSettings_rightArmUpArmTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmUpArmTwist3Field"], "top", 280),(self.widgets[name + "_rigSettings_rightArmUpArmTwist3Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmUpArmTwist3Field"], name + ":Rig_Settings.rUpperarmTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 282),(text, "left", 10)]) #lower arm if cmds.objExists(name + ":Rig_Settings.rForearmTwistAmount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.rForearmTwistAmount") self.widgets[name + "_rigSettings_rightArmLowArmTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100 ) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmLowArmTwistField"], "top", 240),(self.widgets[name + "_rigSettings_rightArmLowArmTwistField"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmLowArmTwistField"], name + ":Rig_Settings.rForearmTwistAmount") text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 242),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.rForearmTwist2Amount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.rForearmTwist2Amount") self.widgets[name + "_rigSettings_rightArmLowArmTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmLowArmTwist2Field"], "top", 260),(self.widgets[name + "_rigSettings_rightArmLowArmTwist2Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmLowArmTwist2Field"], name + ":Rig_Settings.rForearmTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 262),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.rForearmTwist3Amount"): lowArmVal = cmds.getAttr(name + ":Rig_Settings.rForearmTwist3Amount") self.widgets[name + "_rigSettings_rightArmLowArmTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowArmVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightArmLowArmTwist3Field"], "top", 280),(self.widgets[name + "_rigSettings_rightArmLowArmTwist3Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightArmLowArmTwist3Field"], name + ":Rig_Settings.rForearmTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_rightArmForm"], edit = True, af = [(text, "top", 282),(text, "left", 200)]) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_rightArmForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Right Arm Rig Settings", c = partial(self.selectRigSettings_Specific, "rightArm")) #LEFT LEG self.widgets[name + "_rigSettings_leftLegFrame"] = cmds.frameLayout(label = "Left Leg", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "LeftLegSettings"), ec = partial(self.expandCommand, name, "LeftLegSettings")) self.widgets[name + "_rigSettings_leftLegForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_leftLegFrame"]) #rig mode text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_leftLegMode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_leftLegFkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchLegMode, name, "FK", "l")) self.widgets[name + "_rigSettings_leftLegIkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchLegMode, name, "IK", "l")) mode = cmds.getAttr(name + ":Rig_Settings.lLegMode") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegFkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_leftLegFkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegIkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_leftLegIkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftLegFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftLegIkModeButton"], edit = True, select = True) #ik stretch settings text3 = cmds.text(label = "IK Leg Stretch Settings", font = "boldLabelFont") text4 = cmds.text(label = "Stretch") text5 = cmds.text(label = "Squash") stetchVal = cmds.getAttr(name + ":ik_foot_anim_l.stretch") try: squashVal = cmds.getAttr(name + ":ik_foot_anim_l.squash") except: pass try: self.widgets[name + "_rigSettings_leftLegIkStretchField"] = cmds.floatField( minValue=0, maxValue=1, value=stetchVal, w = 100) except: pass try: self.widgets[name + "_rigSettings_leftLegIkStretchBiasField"] = cmds.floatField( minValue=0, maxValue=1, value=squashVal, w = 100 ) except: pass cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text3, "top", 85),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text4, "top", 108),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text5, "top", 108),(text5, "left", 220)]) try: cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegIkStretchField"], "top", 105),(self.widgets[name + "_rigSettings_leftLegIkStretchField"], "left", 55)]) except: pass try: cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegIkStretchBiasField"], "top", 105),(self.widgets[name + "_rigSettings_leftLegIkStretchBiasField"], "left", 250)]) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_leftLegIkStretchField"], name + ":ik_foot_anim_l.stretch" ) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_leftLegIkStretchBiasField"], name + ":ik_foot_anim_l.squash") except: pass #leg roll settings text6 = cmds.text(label = "Leg Roll Settings", font = "boldLabelFont") text7 = cmds.text(label = "Upper Leg Twist Amount:") text8 = cmds.text(label = "Lower Leg Twist Amount:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text6, "top", 145),(text6, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text7, "top", 173),(text7, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text8, "top", 173),(text8, "left", 220)]) if cmds.objExists(name + ":Rig_Settings.lThighTwistAmount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.lThighTwistAmount") self.widgets[name + "_rigSettings_leftLegThighTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegThighTwistField"], "top", 190),(self.widgets[name + "_rigSettings_leftLegThighTwistField"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegThighTwistField"], name + ":Rig_Settings.lThighTwistAmount" ) text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 192),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.lThighTwist2Amount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.lThighTwist2Amount") self.widgets[name + "_rigSettings_leftLegThighTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegThighTwist2Field"], "top", 210),(self.widgets[name + "_rigSettings_leftLegThighTwist2Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegThighTwist2Field"], name + ":Rig_Settings.lThighTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 212),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.lThighTwist3Amount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.lThighTwist3Amount") self.widgets[name + "_rigSettings_leftLegThighTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegThighTwist3Field"], "top", 230),(self.widgets[name + "_rigSettings_leftLegThighTwist3Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegThighTwist3Field"], name + ":Rig_Settings.lThighTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 232),(text, "left", 10)]) #lower leg if cmds.objExists(name + ":Rig_Settings.lCalfTwistAmount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.lCalfTwistAmount") self.widgets[name + "_rigSettings_leftLegCalfTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100 ) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegCalfTwistField"], "top", 190),(self.widgets[name + "_rigSettings_leftLegCalfTwistField"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegCalfTwistField"], name + ":Rig_Settings.lCalfTwistAmount") text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 192),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.lCalfTwist2Amount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.lCalfTwist2Amount") self.widgets[name + "_rigSettings_leftLegCalfTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegCalfTwist2Field"], "top", 210),(self.widgets[name + "_rigSettings_leftLegCalfTwist2Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegCalfTwist2Field"], name + ":Rig_Settings.lCalfTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 212),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.lCalfTwist3Amount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.lCalfTwist3Amount") self.widgets[name + "_rigSettings_leftLegCalfTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_leftLegCalfTwist3Field"], "top", 230),(self.widgets[name + "_rigSettings_leftLegCalfTwist3Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_leftLegCalfTwist3Field"], name + ":Rig_Settings.lCalfTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_leftLegForm"], edit = True, af = [(text, "top", 232),(text, "left", 200)]) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_leftLegForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Left Leg Rig Settings", c = partial(self.selectRigSettings_Specific, "leftLeg")) #RIGHT LEG self.widgets[name + "_rigSettings_rightLegFrame"] = cmds.frameLayout(label = "Right Leg", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "RightLegSettings"), ec = partial(self.expandCommand, name, "RightLegSettings")) self.widgets[name + "_rigSettings_rightLegForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_rightLegFrame"]) #rig mode text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_rightLegMode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_rightLegFkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchLegMode, name, "FK", "r")) self.widgets[name + "_rigSettings_rightLegIkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchLegMode, name, "IK", "r")) mode = cmds.getAttr(name + ":Rig_Settings.rLegMode") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegFkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_rightLegFkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegIkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_rightLegIkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightLegFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightLegIkModeButton"], edit = True, select = True) #ik stretch settings text3 = cmds.text(label = "IK Leg Stretch Settings", font = "boldLabelFont") text4 = cmds.text(label = "Stretch") text5 = cmds.text(label = "Squash") stetchVal = cmds.getAttr(name + ":ik_foot_anim_r.stretch") try: squashVal = cmds.getAttr(name + ":ik_foot_anim_r.squash") except: pass try: self.widgets[name + "_rigSettings_rightLegIkStretchField"] = cmds.floatField( minValue=0, maxValue=1, value=stetchVal, w = 100) except: pass try: self.widgets[name + "_rigSettings_rightLegIkStretchBiasField"] = cmds.floatField( minValue=0, maxValue=1, value=squashVal, w = 100 ) except: pass cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text3, "top", 85),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text4, "top", 108),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text5, "top", 108),(text5, "left", 220)]) try: cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegIkStretchField"], "top", 105),(self.widgets[name + "_rigSettings_rightLegIkStretchField"], "left", 55)]) except: pass try: cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegIkStretchBiasField"], "top", 105),(self.widgets[name + "_rigSettings_rightLegIkStretchBiasField"], "left", 250)]) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_rightLegIkStretchField"], name + ":ik_foot_anim_r.stretch" ) except: pass try: cmds.connectControl( self.widgets[name + "_rigSettings_rightLegIkStretchBiasField"], name + ":ik_foot_anim_r.squash") except: pass #leg roll settings text6 = cmds.text(label = "Leg Roll Settings", font = "boldLabelFont") text7 = cmds.text(label = "Upper Leg Twist Amount:") text8 = cmds.text(label = "Lower Leg Twist Amount:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text6, "top", 145),(text6, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text7, "top", 173),(text7, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text8, "top", 173),(text8, "left", 220)]) if cmds.objExists(name + ":Rig_Settings.rThighTwistAmount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.rThighTwistAmount") self.widgets[name + "_rigSettings_rightLegThighTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegThighTwistField"], "top", 190),(self.widgets[name + "_rigSettings_rightLegThighTwistField"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegThighTwistField"], name + ":Rig_Settings.rThighTwistAmount" ) text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 192),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.rThighTwist2Amount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.rThighTwist2Amount") self.widgets[name + "_rigSettings_rightLegThighTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegThighTwist2Field"], "top", 210),(self.widgets[name + "_rigSettings_rightLegThighTwist2Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegThighTwist2Field"], name + ":Rig_Settings.rThighTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 212),(text, "left", 10)]) if cmds.objExists(name + ":Rig_Settings.rThighTwist3Amount"): upLegVal = cmds.getAttr(name + ":Rig_Settings.rThighTwist3Amount") self.widgets[name + "_rigSettings_rightLegThighTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=upLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegThighTwist3Field"], "top", 230),(self.widgets[name + "_rigSettings_rightLegThighTwist3Field"], "left", 55)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegThighTwist3Field"], name + ":Rig_Settings.rThighTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 232),(text, "left", 10)]) #lower leg if cmds.objExists(name + ":Rig_Settings.rCalfTwistAmount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.rCalfTwistAmount") self.widgets[name + "_rigSettings_rightLegCalfTwistField"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100 ) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegCalfTwistField"], "top", 190),(self.widgets[name + "_rigSettings_rightLegCalfTwistField"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegCalfTwistField"], name + ":Rig_Settings.rCalfTwistAmount") text = cmds.text(label = "Twist 1:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 192),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.rCalfTwist2Amount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.rCalfTwist2Amount") self.widgets[name + "_rigSettings_rightLegCalfTwist2Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegCalfTwist2Field"], "top", 210),(self.widgets[name + "_rigSettings_rightLegCalfTwist2Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegCalfTwist2Field"], name + ":Rig_Settings.rCalfTwist2Amount" ) text = cmds.text(label = "Twist 2:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 212),(text, "left", 200)]) if cmds.objExists(name + ":Rig_Settings.rCalfTwist3Amount"): lowLegVal = cmds.getAttr(name + ":Rig_Settings.rCalfTwist3Amount") self.widgets[name + "_rigSettings_rightLegCalfTwist3Field"] = cmds.floatField( minValue=-1, maxValue=2, value=lowLegVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(self.widgets[name + "_rigSettings_rightLegCalfTwist3Field"], "top", 230),(self.widgets[name + "_rigSettings_rightLegCalfTwist3Field"], "left", 250)]) cmds.connectControl( self.widgets[name + "_rigSettings_rightLegCalfTwist3Field"], name + ":Rig_Settings.rCalfTwist3Amount" ) text = cmds.text(label = "Twist 3:") cmds.formLayout(self.widgets[name + "_rigSettings_rightLegForm"], edit = True, af = [(text, "top", 232),(text, "left", 200)]) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_rightLegForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Right Leg Rig Settings", c = partial(self.selectRigSettings_Specific, "rightLeg")) #SPINE SETTINGS if cmds.objExists(name + ":chest_ik_anim"): self.widgets[name + "_rigSettings_spineFrame"] = cmds.frameLayout(label = "Spine", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "SpineSettings"), ec = partial(self.expandCommand, name, "SpineSettings")) self.widgets[name + "_rigSettings_spineForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_spineFrame"]) #rig mode text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_spine_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_spineFkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchSpineMode, name, "FK")) self.widgets[name + "_rigSettings_spineIkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchSpineMode, name, "IK")) mode1 = cmds.getAttr(name + ":Rig_Settings.spine_fk") mode2 = cmds.getAttr(name + ":Rig_Settings.spine_ik") cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(self.widgets[name + "_rigSettings_spineFkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_spineFkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(self.widgets[name + "_rigSettings_spineIkModeButton"], "top", 25),(self.widgets[name + "_rigSettings_spineIkModeButton"], "right", 20)]) if mode1 > mode2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_spineFkModeButton"], edit = True, select = True) else: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_spineIkModeButton"], edit = True, select = True) if cmds.objExists(name + ":chest_ik_anim"): #ik stretch settings text3 = cmds.text(label = "IK Spine Settings", font = "boldLabelFont") text4 = cmds.text(label = "Stretch") text5 = cmds.text(label = "Twist Amount") stetchVal = cmds.getAttr(name + ":chest_ik_anim.stretch") twistVal = cmds.getAttr(name + ":chest_ik_anim.twist_amount") self.widgets[name + "_rigSettings_chestIkStretchField"] = cmds.floatField( minValue=-1, maxValue=2, value=stetchVal, w = 100) self.widgets[name + "_rigSettings_chestIkTwistField"] = cmds.floatField( minValue=-1, maxValue=5, value=twistVal, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(text3, "top", 85),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(text4, "top", 108),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(text5, "top", 108),(text5, "left", 210)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(self.widgets[name + "_rigSettings_chestIkStretchField"], "top", 105),(self.widgets[name + "_rigSettings_chestIkStretchField"], "left", 55)]) cmds.formLayout(self.widgets[name + "_rigSettings_spineForm"], edit = True, af = [(self.widgets[name + "_rigSettings_chestIkTwistField"], "top", 105),(self.widgets[name + "_rigSettings_chestIkTwistField"], "left", 280)]) cmds.connectControl( self.widgets[name + "_rigSettings_chestIkStretchField"], name + ":chest_ik_anim.stretch" ) cmds.connectControl( self.widgets[name + "_rigSettings_chestIkTwistField"], name + ":chest_ik_anim.twist_amount" ) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_spineForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Spine Settings", c = partial(self.selectRigSettings_Specific, "spine")) #HEAD SETTINGS self.widgets[name + "_rigSettings_headFrame"] = cmds.frameLayout(label = "Head", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "HeadSettings"), ec = partial(self.expandCommand, name, "HeadSettings")) self.widgets[name + "_rigSettings_headForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_headFrame"]) #fk orientation space text1 = cmds.text(label = "Head Orientation Space:", font = "boldLabelFont") self.widgets[name + "rigSettings_headOrient_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_headFkOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsNeck_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsNeck_on.bmp", w = 70, h = 30, onc = partial(self.switchHeadOrientMode, name, 0)) self.widgets[name + "_rigSettings_headShoulderOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsChest_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsChest_on.bmp",w = 70, h = 30, onc = partial(self.switchHeadOrientMode, name, 1)) self.widgets[name + "_rigSettings_headBodyOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsBody_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsBody_on.bmp",w = 70, h = 30, onc = partial(self.switchHeadOrientMode, name, 2)) self.widgets[name + "_rigSettings_headWorldOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsWorld_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsWorld_on.bmp",w = 70, h = 30, onc = partial(self.switchHeadOrientMode, name, 3)) mode = cmds.getAttr(name + ":head_fk_anim.fkOrientation") cmds.formLayout(self.widgets[name + "_rigSettings_headForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_headForm"], edit = True, af = [(self.widgets[name + "_rigSettings_headFkOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_headFkOrientModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_headForm"], edit = True, af = [(self.widgets[name + "_rigSettings_headShoulderOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_headShoulderOrientModeButton"], "left", 95)]) cmds.formLayout(self.widgets[name + "_rigSettings_headForm"], edit = True, af = [(self.widgets[name + "_rigSettings_headBodyOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_headBodyOrientModeButton"], "left", 180)]) cmds.formLayout(self.widgets[name + "_rigSettings_headForm"], edit = True, af = [(self.widgets[name + "_rigSettings_headWorldOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_headWorldOrientModeButton"], "left", 265)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headFkOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headShoulderOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headBodyOrientModeButton"], edit = True, select = True) if mode == 3: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headWorldOrientModeButton"], edit = True, select = True) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_headForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Head Settings", c = partial(self.selectRigSettings_Specific, "head")) try: #NECK SETTINGS self.widgets[name + "_rigSettings_neckFrame"] = cmds.frameLayout(label = "Neck", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "NeckSettings"), ec = partial(self.expandCommand, name, "NeckSettings")) self.widgets[name + "_rigSettings_neckForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_neckFrame"]) #fk orientation space text1 = cmds.text(label = "Neck Orientation Space:", font = "boldLabelFont") self.widgets[name + "rigSettings_neckOrient_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_neckShoulderOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsChest_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsChest_on.bmp",w = 70, h = 30, onc = partial(self.switchNeckOrientMode, name, 0)) self.widgets[name + "_rigSettings_neckBodyOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsBody_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsBody_on.bmp",w = 70, h = 30, onc = partial(self.switchNeckOrientMode, name, 1)) self.widgets[name + "_rigSettings_neckWorldOrientModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/headSettingsWorld_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/headSettingsWorld_on.bmp",w = 70, h = 30, onc = partial(self.switchNeckOrientMode, name, 2)) mode = cmds.getAttr(name + ":neck_01_fk_anim.fkOrientation") cmds.formLayout(self.widgets[name + "_rigSettings_neckForm"], edit = True, af = [(text1, "top", 5),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_neckForm"], edit = True, af = [(self.widgets[name + "_rigSettings_neckShoulderOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_neckShoulderOrientModeButton"], "left", 95)]) cmds.formLayout(self.widgets[name + "_rigSettings_neckForm"], edit = True, af = [(self.widgets[name + "_rigSettings_neckBodyOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_neckBodyOrientModeButton"], "left", 180)]) cmds.formLayout(self.widgets[name + "_rigSettings_neckForm"], edit = True, af = [(self.widgets[name + "_rigSettings_neckWorldOrientModeButton"], "top", 25),(self.widgets[name + "_rigSettings_neckWorldOrientModeButton"], "left", 265)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckShoulderOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckBodyOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckWorldOrientModeButton"], edit = True, select = True) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_neckForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Neck Settings", c = partial(self.selectRigSettings_Specific, "neck")) except: pass #AUTO CONTROL SETTINGS self.widgets[name + "_rigSettings_autoControlsFrame"] = cmds.frameLayout(label = "Auto Controls", w = 400, h = 30, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in", cc = partial(self.collapseCommand, name, "AutoControlsSettings"), ec = partial(self.expandCommand, name, "AutoControlsSettings")) self.widgets[name + "_rigSettings_autoControlsForm"] = cmds.formLayout(w = 400, h = 300, parent = self.widgets[name + "_rigSettings_autoControlsFrame"]) text1 = cmds.text(label ="Auto Hips:", font = "boldLabelFont") text2 = cmds.text(label ="Auto Spine:", font = "boldLabelFont") text3 = cmds.text(label ="Auto Left Clavicle:", font = "boldLabelFont") text4 = cmds.text(label ="Auto Right Clavicle:", font = "boldLabelFont") self.widgets[name + "_rigSettings_autoHipsField"] = cmds.floatField( minValue=0, maxValue=1, w = 100) self.widgets[name + "_rigSettings_autoSpineField"] = cmds.floatField( minValue=0, maxValue=1, w = 100) self.widgets[name + "_rigSettings_autoClavLeftField"] = cmds.floatField( minValue=0, maxValue=1, w = 100) self.widgets[name + "_rigSettings_autoClavRightField"] = cmds.floatField( minValue=0, maxValue=1, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(text1, "top", 8),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(text2, "top", 38),(text2, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(text3, "top", 68),(text3, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(text4, "top", 98),(text4, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(self.widgets[name + "_rigSettings_autoHipsField"], "top", 5),(self.widgets[name + "_rigSettings_autoHipsField"], "left", 150)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(self.widgets[name + "_rigSettings_autoSpineField"], "top", 35),(self.widgets[name + "_rigSettings_autoSpineField"], "left", 150)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(self.widgets[name + "_rigSettings_autoClavLeftField"], "top", 65),(self.widgets[name + "_rigSettings_autoClavLeftField"], "left", 150)]) cmds.formLayout(self.widgets[name + "_rigSettings_autoControlsForm"], edit = True, af = [(self.widgets[name + "_rigSettings_autoClavRightField"], "top", 95),(self.widgets[name + "_rigSettings_autoClavRightField"], "left", 150)]) cmds.connectControl( self.widgets[name + "_rigSettings_autoHipsField"], name + ":hip_anim.autoHips" ) cmds.connectControl( self.widgets[name + "_rigSettings_autoSpineField"], name + ":chest_ik_anim.autoSpine" ) cmds.connectControl( self.widgets[name + "_rigSettings_autoClavLeftField"], name + ":clavicle_l_anim.autoShoulders" ) cmds.connectControl( self.widgets[name + "_rigSettings_autoClavRightField"], name + ":clavicle_r_anim.autoShoulders" ) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_autoControlsForm"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Auto Control Settings", c = partial(self.selectRigSettings_Specific, "auto")) #LEFT FINGER SETTINGS self.widgets[name + "_rigSettings_leftFingersFrame"] = cmds.frameLayout(label = "Left Fingers", w = 400, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in") self.widgets[name + "_rigSettings_leftFingersColumn"] = cmds.columnLayout(parent = self.widgets[name + "_rigSettings_leftFingersFrame"]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: self.widgets[name + "_rigSettings_leftFingersFrame_" + finger] = cmds.frameLayout(label = " " + finger, w = 400, h = 60, parent = self.widgets[name + "_rigSettings_leftFingersColumn"], collapse = False, collapsable = False, borderStyle = "in") self.widgets[name + "_rigSettings_leftFingersForm_" + finger] = cmds.formLayout(parent = self.widgets[name + "_rigSettings_leftFingersFrame_" + finger]) text = cmds.text(label = "FK Sticky:", parent = self.widgets[name + "_rigSettings_leftFingersForm_" + finger]) self.widgets[name + "_" + finger + "_fkStickyFloatFieldL"] = cmds.floatField( minValue=0, maxValue=1, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_leftFingersForm_" + finger], edit = True, af = [(text, "top", 8),(text, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftFingersForm_" + finger], edit = True, af = [(self.widgets[name + "_" + finger + "_fkStickyFloatFieldL"], "top", 5),(self.widgets[name + "_" + finger + "_fkStickyFloatFieldL"], "left", 100)]) cmds.connectControl(self.widgets[name + "_" + finger + "_fkStickyFloatFieldL"], name + ":" + finger + "_finger_fk_ctrl_1_l.sticky" ) if cmds.objExists(name + ":" + finger + "_l_ik_anim"): #rig mode cmds.frameLayout(self.widgets[name + "_rigSettings_leftFingersFrame_" + finger], edit = True, h = 120) text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_LeftFinger_" + finger + "_Mode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "rigSettings_LeftFinger_" + finger + "_FkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchFingerMode, name, finger, 0, "l")) self.widgets[name + "rigSettings_LeftFinger_" + finger + "_IkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchFingerMode, name, finger, 1, "l")) mode = cmds.getAttr(name + ":" + finger + "_finger_l_mode_anim.FK_IK") cmds.formLayout(self.widgets[name + "_rigSettings_leftFingersForm_" + finger], edit = True, af = [(text1, "top", 30),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftFingersForm_" + finger], edit = True, af = [(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_FkModeButton"], "top", 45),(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_FkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_leftFingersForm_" + finger], edit = True, af = [(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_IkModeButton"], "top", 45),(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_IkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_FkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_IkModeButton"], edit = True, select = True) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_leftFingersFrame"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Left Finger Settings", c = partial(self.selectRigSettings_Specific, "leftFingers")) #RIGHT FINGER SETTINGS spacer = cmds.text(label = "", parent = self.widgets[name + "_rigSettingsMainColumn"], h = 10) self.widgets[name + "_rigSettings_rightFingersFrame"] = cmds.frameLayout(label = "Right Fingers", w = 400, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in") self.widgets[name + "_rigSettings_rightFingersColumn"] = cmds.columnLayout(parent = self.widgets[name + "_rigSettings_rightFingersFrame"]) for finger in ["index", "middle", "ring", "pinky", "thumb"]: self.widgets[name + "_rigSettings_rightFingersFrame_" + finger] = cmds.frameLayout(label = " " + finger, w = 400, h = 60, parent = self.widgets[name + "_rigSettings_rightFingersColumn"], collapse = False, collapsable = False, borderStyle = "in") self.widgets[name + "_rigSettings_rightFingersForm_" + finger] = cmds.formLayout(parent = self.widgets[name + "_rigSettings_rightFingersFrame_" + finger]) text = cmds.text(label = "FK Sticky:", parent = self.widgets[name + "_rigSettings_rightFingersForm_" + finger]) self.widgets[name + "_" + finger + "_fkStickyFloatFieldR"] = cmds.floatField( minValue=0, maxValue=1, w = 100) cmds.formLayout(self.widgets[name + "_rigSettings_rightFingersForm_" + finger], edit = True, af = [(text, "top", 8),(text, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightFingersForm_" + finger], edit = True, af = [(self.widgets[name + "_" + finger + "_fkStickyFloatFieldR"], "top", 5),(self.widgets[name + "_" + finger + "_fkStickyFloatFieldR"], "left", 100)]) cmds.connectControl(self.widgets[name + "_" + finger + "_fkStickyFloatFieldR"], name + ":" + finger + "_finger_fk_ctrl_1_r.sticky" ) if cmds.objExists(name + ":" + finger + "_r_ik_anim"): #rig mode cmds.frameLayout(self.widgets[name + "_rigSettings_rightFingersFrame_" + finger], edit = True, h = 120) text1 = cmds.text(label = "Rig Mode:", font = "boldLabelFont") self.widgets[name + "rigSettings_RightFinger_" + finger + "_Mode_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "rigSettings_RightFinger_" + finger + "_FkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchFingerMode, name, finger, 0, "r")) self.widgets[name + "rigSettings_RightFinger_" + finger + "_IkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp",w = 180, h = 50, onc = partial(self.switchFingerMode, name, finger, 1, "r")) mode = cmds.getAttr(name + ":" + finger + "_finger_r_mode_anim.FK_IK") cmds.formLayout(self.widgets[name + "_rigSettings_rightFingersForm_" + finger], edit = True, af = [(text1, "top", 30),(text1, "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightFingersForm_" + finger], edit = True, af = [(self.widgets[name + "rigSettings_RightFinger_" + finger + "_FkModeButton"], "top", 45),(self.widgets[name + "rigSettings_RightFinger_" + finger + "_FkModeButton"], "left", 10)]) cmds.formLayout(self.widgets[name + "_rigSettings_rightFingersForm_" + finger], edit = True, af = [(self.widgets[name + "rigSettings_RightFinger_" + finger + "_IkModeButton"], "top", 45),(self.widgets[name + "rigSettings_RightFinger_" + finger + "_IkModeButton"], "right", 20)]) if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_RightFinger_" + finger + "_FkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_RightFinger_" + finger + "_IkModeButton"], edit = True, select = True) #create the right click menu for selecting the settings for the left arm popupMenu = cmds.popupMenu(b = 3, parent = self.widgets[name + "_rigSettings_rightFingersFrame"]) menu = cmds.menuItem(parent = popupMenu, label = "Select Right Finger Settings", c = partial(self.selectRigSettings_Specific, "rightFingers")) #CUSTOM JOINT CHAINS spacer = cmds.text(label = "", parent = self.widgets[name + "_rigSettingsMainColumn"], h = 10) self.widgets[name + "_rigSettings_customJointChainsFrame"] = cmds.frameLayout(label = "Custom Joint Chains", w = 400, parent = self.widgets[name + "_rigSettingsMainColumn"], collapse = True, collapsable = True, borderStyle = "in") self.widgets[name + "_rigSettings_customJointChainsColumn"] = cmds.rowColumnLayout(nc = 2, cat = [(1, "both", 5), (2, "both", 5)],parent = self.widgets[name + "_rigSettings_customJointChainsFrame"]) customJoints = [] attrs = cmds.listAttr(name + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) for joint in customJoints: attribute = cmds.getAttr(name + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "chain" or jointType == "dynamic": numJointsInChain = label.partition("(")[2].partition(")")[0] label = label.partition(" (")[0] #rig mode cmds.text(label = "") cmds.text(label = "") text = cmds.text(label = label + " rig settings:", font = "boldLabelFont") cmds.text(label = "") cmds.text(label = "") cmds.text(label = "") self.widgets[name + "rigSettings_customJoints_" + label + "_Collection"] = cmds.iconTextRadioCollection() self.widgets[name + "_rigSettings_customJoints_" + label + "fkModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsFkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchCustomChainMode, name, label, "FK")) self.widgets[name + "_rigSettings_customJoints_" + label + "ikModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsIkMode_on.bmp", w = 180, h = 50, onc = partial(self.switchCustomChainMode, name, label, "IK")) self.widgets[name + "_rigSettings_customJoints_" + label + "dynModeButton"] = cmds.iconTextRadioButton(image = self.mayaToolsDir + "/General/Icons/ART/rigSettingsDynMode_off.bmp",selectionImage = self.mayaToolsDir + "/General/Icons/ART/rigSettingsDynMode_on.bmp", w = 180, h = 50, onc = partial(self.switchCustomChainMode, name, label, "DYNAMIC")) mode1 = cmds.getAttr(name + ":Rig_Settings." + label + "_fk") mode2 = cmds.getAttr(name + ":Rig_Settings." + label + "_ik") mode3 = cmds.getAttr(name + ":Rig_Settings." + label + "_dynamic") cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "fkModeButton"], edit = True, select = mode1) cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "ikModeButton"], edit = True, select = mode2) cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "dynModeButton"], edit = True, select = mode3) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectionScriptJob(self): #reset all button colors self.resetButtonColors() #look at selection and get the buttonName attr value selection = cmds.ls(sl = True) for each in selection: if "." not in each: if cmds.objExists(each + ".buttonName"): button = cmds.getAttr(each + ".buttonName") #color those buttons white cmds.button(button, edit = True, bgc = self.white) self.listView_ScriptJob() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def resetButtonColors(self): characters = self.getCharacters() #reset all button colors for character in characters: cmds.button(self.widgets[character + "_headPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":neck_01_fk_anim"): cmds.button(self.widgets[character + "_neck1_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":neck_02_fk_anim"): cmds.button(self.widgets[character + "_neck2_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":neck_03_fk_anim"): cmds.button(self.widgets[character + "_neck3_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":spine_01_anim"): cmds.button(self.widgets[character + "_spine1_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":spine_02_anim"): cmds.button(self.widgets[character + "_spine2_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":spine_03_anim"): cmds.button(self.widgets[character + "_spine3_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":spine_04_anim"): cmds.button(self.widgets[character + "_spine4_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":spine_05_anim"): cmds.button(self.widgets[character + "_spine5_PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":mid_ik_anim"): cmds.button(self.widgets[character + "_ikSpineMidPickerButton"], edit = True, bgc = self.orange) if cmds.objExists(character + ":chest_ik_anim"): cmds.button(self.widgets[character + "_ikSpineTopPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_bodyPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_pelvisPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftClavPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightClavPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftShoulderPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightShoulderPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftElbowPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightElbowPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftHandPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightHandPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftIkElbowPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkElbowPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftIkHandPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkHandPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftThighPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightThighPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftFkKneePickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightFkKneePickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftFkAnklePickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightFkAnklePickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":fk_ball_l_anim"): cmds.button(self.widgets[character + "_leftFkBallPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":fk_ball_r_anim"): cmds.button(self.widgets[character + "_rightFkBallPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftIkFootPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkFootPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftIkHeelPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkHeelPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftIkToeWigglePickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkToeWigglePickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftIkToePickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIkToePickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_masterPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_offsetPickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rootPickerButton"], edit = True, bgc = self.purple) cmds.button(self.widgets[character + "_headGroupPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftArmGroupPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightArmGroupPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_spineGroupPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftLegGroupPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightLegGroupPickerButton"], edit = True, bgc = self.green) if cmds.objExists(character + ":upperarm_l_twist_anim"): cmds.button(self.widgets[character + "_leftArmRollPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":upperarm_l_twist_2_anim"): cmds.button(self.widgets[character + "_leftArmRoll2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":upperarm_l_twist_3_anim"): cmds.button(self.widgets[character + "_leftArmRoll3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":upperarm_r_twist_anim"): cmds.button(self.widgets[character + "_rightArmRollPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":upperarm_r_twist_2_anim"): cmds.button(self.widgets[character + "_rightArmRoll2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":upperarm_r_twist_3_anim"): cmds.button(self.widgets[character + "_rightArmRoll3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_l_twist_anim"): cmds.button(self.widgets[character + "_leftForeTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_l_twist2_anim"): cmds.button(self.widgets[character + "_leftForeTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_l_twist3_anim"): cmds.button(self.widgets[character + "_leftForeTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_r_twist_anim"): cmds.button(self.widgets[character + "_rightForeTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_r_twist2_anim"): cmds.button(self.widgets[character + "_rightForeTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":lowerarm_r_twist3_anim"): cmds.button(self.widgets[character + "_rightForeTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":l_thigh_twist_01_anim"): cmds.button(self.widgets[character + "_leftThighTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":l_thigh_twist_02_anim"): cmds.button(self.widgets[character + "_leftThighTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":l_thigh_twist_03_anim"): cmds.button(self.widgets[character + "_leftThighTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":r_thigh_twist_01_anim"): cmds.button(self.widgets[character + "_rightThighTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":r_thigh_twist_02_anim"): cmds.button(self.widgets[character + "_rightThighTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":r_thigh_twist_03_anim"): cmds.button(self.widgets[character + "_rightThighTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_l_twist_anim"): cmds.button(self.widgets[character + "_leftCalfTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_l_twist2_anim"): cmds.button(self.widgets[character + "_leftCalfTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_l_twist3_anim"): cmds.button(self.widgets[character + "_leftCalfTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_r_twist_anim"): cmds.button(self.widgets[character + "_rightCalfTwistPickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_r_twist2_anim"): cmds.button(self.widgets[character + "_rightCalfTwist2PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":calf_r_twist3_anim"): cmds.button(self.widgets[character + "_rightCalfTwist3PickerButton"], edit = True, bgc = self.purple) if cmds.objExists(character + ":pinky_metacarpal_ctrl_l"): cmds.button(self.widgets[character + "_leftPinkyMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_1_l"): cmds.button(self.widgets[character + "_leftPinky1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_2_l"): cmds.button(self.widgets[character + "_leftPinky2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_3_l"): cmds.button(self.widgets[character + "_leftPinky3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_metacarpal_ctrl_l"): cmds.button(self.widgets[character + "_leftRingMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_1_l"): cmds.button(self.widgets[character + "_leftRing1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_2_l"): cmds.button(self.widgets[character + "_leftRing2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_3_l"): cmds.button(self.widgets[character + "_leftRing3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_metacarpal_ctrl_l"): cmds.button(self.widgets[character + "_leftMiddleMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_1_l"): cmds.button(self.widgets[character + "_leftMiddle1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_2_l"): cmds.button(self.widgets[character + "_leftMiddle2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_3_l"): cmds.button(self.widgets[character + "_leftMiddle3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_metacarpal_ctrl_l"): cmds.button(self.widgets[character + "_leftIndexMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_1_l"): cmds.button(self.widgets[character + "_leftIndex1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_2_l"): cmds.button(self.widgets[character + "_leftIndex2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_3_l"): cmds.button(self.widgets[character + "_leftIndex3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_1_l"): cmds.button(self.widgets[character + "_leftThumb1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_2_l"): cmds.button(self.widgets[character + "_leftThumb2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_3_l"): cmds.button(self.widgets[character + "_leftThumb3PickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_leftMetaRowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftKnuckle1RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftKnuckle2RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftKnuckle3RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftIndexColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftMiddleColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftRingColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftPinkyColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftThumbColumnPickerButton"], edit = True, bgc = self.green) createLeftIKRow = False if cmds.objExists(character + ":index_l_ik_anim"): cmds.button(self.widgets[character + "_leftIndexFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftIndexIkPvPickerButton"], edit = True, bgc = self.orange) createLeftIKRow = True if cmds.objExists(character + ":middle_l_ik_anim"): cmds.button(self.widgets[character + "_leftMiddleFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftMiddleIkPvPickerButton"], edit = True, bgc = self.orange) createLeftIKRow = True if cmds.objExists(character + ":ring_l_ik_anim"): cmds.button(self.widgets[character + "_leftRingFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftRingIkPvPickerButton"], edit = True, bgc = self.orange) createLeftIKRow = True if cmds.objExists(character + ":pinky_l_ik_anim"): cmds.button(self.widgets[character + "_leftPinkyFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftPinkyIkPvPickerButton"], edit = True, bgc = self.orange) createLeftIKRow = True if cmds.objExists(character + ":thumb_l_ik_anim"): cmds.button(self.widgets[character + "_leftThumbFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_leftThumbIkPvPickerButton"], edit = True, bgc = self.orange) createLeftIKRow = True if createLeftIKRow: cmds.button(self.widgets[character + "_leftIkFingersRowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_leftIkFingersPvsPickerButton"], edit = True, bgc = self.green) if cmds.objExists(character + ":l_global_ik_anim"): cmds.button(self.widgets[character + "_leftIkGlobalCtrlPickerButton"], edit = True, bgc = self.orange) if cmds.objExists(character + ":pinky_metacarpal_ctrl_r"): cmds.button(self.widgets[character + "_rightPinkyMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_1_r"): cmds.button(self.widgets[character + "_rightPinky1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_2_r"): cmds.button(self.widgets[character + "_rightPinky2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":pinky_finger_fk_ctrl_3_r"): cmds.button(self.widgets[character + "_rightPinky3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_metacarpal_ctrl_r"): cmds.button(self.widgets[character + "_rightRingMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_1_r"): cmds.button(self.widgets[character + "_rightRing1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_2_r"): cmds.button(self.widgets[character + "_rightRing2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":ring_finger_fk_ctrl_3_r"): cmds.button(self.widgets[character + "_rightRing3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_metacarpal_ctrl_r"): cmds.button(self.widgets[character + "_rightMiddleMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_1_r"): cmds.button(self.widgets[character + "_rightMiddle1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_2_r"): cmds.button(self.widgets[character + "_rightMiddle2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":middle_finger_fk_ctrl_3_r"): cmds.button(self.widgets[character + "_rightMiddle3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_metacarpal_ctrl_r"): cmds.button(self.widgets[character + "_rightIndexMetacarpalPickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_1_r"): cmds.button(self.widgets[character + "_rightIndex1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_2_r"): cmds.button(self.widgets[character + "_rightIndex2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":index_finger_fk_ctrl_3_r"): cmds.button(self.widgets[character + "_rightIndex3PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_1_r"): cmds.button(self.widgets[character + "_rightThumb1PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_2_r"): cmds.button(self.widgets[character + "_rightThumb2PickerButton"], edit = True, bgc = self.blue) if cmds.objExists(character + ":thumb_finger_fk_ctrl_3_r"): cmds.button(self.widgets[character + "_rightThumb3PickerButton"], edit = True, bgc = self.blue) cmds.button(self.widgets[character + "_rightMetaRowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightKnuckle1RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightKnuckle2RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightKnuckle3RowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightIndexColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightMiddleColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightRingColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightPinkyColumnPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightThumbColumnPickerButton"], edit = True, bgc = self.green) createRightIKRow = False if cmds.objExists(character + ":index_r_ik_anim"): cmds.button(self.widgets[character + "_rightIndexFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightIndexIkPvPickerButton"], edit = True, bgc = self.orange) createRightIKRow = True if cmds.objExists(character + ":middle_r_ik_anim"): cmds.button(self.widgets[character + "_rightMiddleFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightMiddleIkPvPickerButton"], edit = True, bgc = self.orange) createRightIKRow = True if cmds.objExists(character + ":ring_r_ik_anim"): cmds.button(self.widgets[character + "_rightRingFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightRingIkPvPickerButton"], edit = True, bgc = self.orange) createRightIKRow = True if cmds.objExists(character + ":pinky_r_ik_anim"): cmds.button(self.widgets[character + "_rightPinkyFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightPinkyIkPvPickerButton"], edit = True, bgc = self.orange) createRightIKRow = True if cmds.objExists(character + ":thumb_r_ik_anim"): cmds.button(self.widgets[character + "_rightThumbFingerIKPickerButton"], edit = True, bgc = self.orange) cmds.button(self.widgets[character + "_rightThumbIkPvPickerButton"], edit = True, bgc = self.orange) createRightIKRow = True if createRightIKRow: cmds.button(self.widgets[character + "_rightIkFingersRowPickerButton"], edit = True, bgc = self.green) cmds.button(self.widgets[character + "_rightIkFingersPvsPickerButton"], edit = True, bgc = self.green) if cmds.objExists(character + ":r_global_ik_anim"): cmds.button(self.widgets[character + "_rightIkGlobalCtrlPickerButton"], edit = True, bgc = self.orange) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def collapseCommand(self, name, layout, *args): if layout == "Body": cmds.frameLayout(self.widgets[name + "_bodyFrame"], edit = True, h = 30) if layout == "Fingers": cmds.frameLayout(self.widgets[name + "_fingersFrame"], edit = True, h = 30) if layout == "Toes": cmds.frameLayout(self.widgets[name + "_toesFrame"], edit = True, h = 30) if layout == "Layers": cmds.frameLayout(self.widgets[name + "_layersFrame"], edit = True, h = 30) if layout == "LeftArmSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_leftArmFrame"], edit = True, h = 30) if layout == "RightArmSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_rightArmFrame"], edit = True, h = 30) if layout == "LeftLegSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_leftLegFrame"], edit = True, h = 30) if layout == "RightLegSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_rightLegFrame"], edit = True, h = 30) if layout == "SpineSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_spineFrame"], edit = True, h = 30) if layout == "HeadSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_headFrame"], edit = True, h = 30) if layout == "NeckSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_neckFrame"], edit = True, h = 30) if layout == "AutoControlsSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_autoControlsFrame"], edit = True, h = 30) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def expandCommand(self, name, layout, height = None, *args): if layout == "Body": cmds.frameLayout(self.widgets[name + "_bodyFrame"], edit = True, h = 470) if layout == "Fingers": cmds.frameLayout(self.widgets[name + "_fingersFrame"], edit = True, h = 205) if layout == "Toes": cmds.frameLayout(self.widgets[name + "_toesFrame"], edit = True, h = 220) if layout == "Layers": cmds.frameLayout(self.widgets[name + "_layersFrame"], edit = True, h = 300) if layout == "LeftArmSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_leftArmFrame"], edit = True, h = 330) if layout == "RightArmSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_rightArmFrame"], edit = True, h = 330) if layout == "LeftLegSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_leftLegFrame"], edit = True, h = 280) if layout == "RightLegSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_rightLegFrame"], edit = True, h = 280) if layout == "SpineSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_spineFrame"], edit = True, h = 150) if layout == "HeadSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_headFrame"], edit = True, h = 100) if layout == "NeckSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_neckFrame"], edit = True, h = 100) if layout == "AutoControlsSettings": cmds.frameLayout(self.widgets[name + "_rigSettings_autoControlsFrame"], edit = True, h = 150) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectRigSettings_Specific(self, limb, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) if limb == "leftArm": cmds.select(character + ":Rig_Settings") cmds.select(character + ":ik_wrist_l_anim", add = True) if limb == "rightArm": cmds.select(character + ":Rig_Settings") cmds.select(character + ":ik_wrist_r_anim", add = True) if limb == "leftLeg": cmds.select(character + ":Rig_Settings") cmds.select(character + ":ik_foot_anim_l", add = True) if limb == "rightLeg": cmds.select(character + ":Rig_Settings") cmds.select(character + ":ik_foot_anim_r", add = True) if limb == "spine": cmds.select(character + ":Rig_Settings") if cmds.objExists(character + ":chest_ik_anim"): cmds.select(character + ":chest_ik_anim", add = True) if limb == "head": cmds.select(character + ":head_fk_anim") if limb == "neck": cmds.select(character + ":neck_01_fk_anim") if limb == "auto": cmds.select(character + ":clavicle_l_anim") cmds.select(character + ":clavicle_r_anim", add = True) cmds.select(character + ":hip_anim", add = True) cmds.select(character + ":chest_ik_anim", add = True) if limb == "leftFingers": cmds.select(clear = True) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(character + ":" + finger + "_finger_fk_ctrl_1_l"): cmds.select(character + ":" + finger + "_finger_fk_ctrl_1_l", add = True) if cmds.objExists(character + ":" + finger + "_finger_l_mode_anim"): cmds.select(character + ":" + finger + "_finger_l_mode_anim", add = True) if limb == "rightFingers": cmds.select(clear = True) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(character + ":" + finger + "_finger_fk_ctrl_1_r"): cmds.select(character + ":" + finger + "_finger_fk_ctrl_1_r", add = True) if cmds.objExists(character + ":" + finger + "_finger_r_mode_anim"): cmds.select(character + ":" + finger + "_finger_r_mode_anim", add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectRigSettings(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) mods = cmds.getModifiers() if (mods & 1) > 0: cmds.select(character + ":Rig_Settings", tgl = True) if (mods & 1) == 0: cmds.select(character + ":Rig_Settings") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def findCustomSelectionSets(self, *args): if os.path.exists(self.mayaToolsDir + "/General/ART/system/selectionSets.txt"): f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'r') sets = cPickle.load(f) f.close() numSets = len(sets) #make sure menuItem doesn't already exist children = cmds.lsUI(mi = True) for child in children: if cmds.menuItem(child, q = True, docTag = True) == "customSelectionSet": cmds.deleteUI(child) for i in range(int(numSets)): label = sets[i][0] controls = sets[i][1:] #add them to both the select sub menu and the selection sets menu menu = cmds.menuItem(parent = self.widgets["selectionSetsCustom"], label = label, docTag = "customSelectionSet", ann = str(sets[i]), c = partial(self.selectFromCustomSet, controls)) cmds.menuItem(optionBox = True, parent = self.widgets["selectionSetsCustom"], c = partial(self.printSelectionInfo, controls, i)) menu = cmds.menuItem(parent = self.widgets["selectionSetMenuPopUp"], label = label, docTag = "customSelectionSet", ann = str(sets[i]), c = partial(self.selectFromCustomSet, controls)) cmds.menuItem(optionBox = True, parent = self.widgets["selectionSetMenuPopUp"], c = partial(self.printSelectionInfo, controls, i)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def printSelectionInfo(self, controls, removeIndex, *args): string = "Controls in this selection set:\n\n" for control in controls: string += control + " | " result = cmds.confirmDialog(title = "Selection Details", message = string, button = ["Close", "Rename Set", "Remove This Set"], defaultButton = "Rename Set", cancelButton = "Close", dismissString = "Close", icon = "information") if result == "Remove This Set": if os.path.exists(self.mayaToolsDir + "/General/ART/system/selectionSets.txt"): f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'r') sets = cPickle.load(f) f.close() #remove the desired set sets.pop(removeIndex) f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'w') cPickle.dump(sets, f) f.close() if result == "Rename Set": if os.path.exists(self.mayaToolsDir + "/General/ART/system/selectionSets.txt"): f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'r') sets = cPickle.load(f) f.close() #rename index 0 of the desired set cmds.promptDialog(title = "Rename", message = "New Name:") newName = cmds.promptDialog(q = True, text = True) sets[removeIndex][0] = newName f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'w') cPickle.dump(sets, f) f.close() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createSelectionSet(self, *args): selection = cmds.ls(sl = True) if len(selection) > 0: #strip off the namespace of each selected item(if it has one, if not, don't include that item) setList = [] controls = ["Selection Set"] for each in selection: if each.find(":") != -1: control = each.rpartition(":")[2] controls.append(control) #store this data to file in ART/system if os.path.exists(self.mayaToolsDir + "/General/ART/system/selectionSets.txt"): f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'r') existingSetList = cPickle.load(f) f.close() f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'w') existingSetList.append(controls) cPickle.dump(existingSetList, f) else: f = open(self.mayaToolsDir + "/General/ART/system/selectionSets.txt", 'w') setList.append(controls) cPickle.dump(setList, f) f.close() #reload self.findCustomSelectionSets() else: cmds.warning("Nothing selected to create a selection set from.") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectFromCustomSet(self, controls, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) cmds.select(clear = True) for each in controls: if cmds.objExists(character + ":" + each): cmds.select(character + ":" + each, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectEverything(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) controls = list(self.controls) controls.append("Rig_Settings") #need to find all space switch nodes for the current character cmds.select(character + ":*_space_switcher_follow") nodes = cmds.ls(sl = True) spaceSwitchers = [] for node in nodes: if node.find("invis") == -1: spaceSwitchers.append(node) selectNodes = [] for control in spaceSwitchers: spaceSwitchNode = control.rpartition("_follow")[0] selectNodes.append(spaceSwitchNode) cmds.select(clear = True) for control in controls: if cmds.objExists(character + ":" + control): cmds.select(character + ":" + control, add = True) for node in ["fk_orient_world_loc_l", "fk_orient_world_loc_r", "fk_orient_body_loc_l", "fk_orient_body_loc_r", "head_fk_orient_neck", "head_fk_orient_shoulder", "head_fk_orient_body", "head_fk_orient_world"]: if cmds.objExists(character + ":" + node): cmds.select(character + ":" + node, add = True) for node in selectNodes: cmds.select(node, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def selectAll(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) controls = list(self.controls) controls.append("Rig_Settings") for control in controls: if cmds.objExists(character + ":" + control): cmds.select(character + ":" + control, add = True) cmds.warning("Custom Controls and Toes not implemented yet into select all") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def resetAll(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) avoidAttrs = ["global_scale", "scaleX", "scaleY", "scaleZ", "stretch", "twist_amount", "bias", "spine_01_twistAmount", "spine_02_twistAmount", "spine_03_twistAmount", "spine_04_twistAmount", "spine_05_twistAmount", "sticky", "fkOrientation"] #reset fk arm orientation cmds.setAttr(character + ":Rig_Settings.lFkArmOrient", 0) cmds.setAttr(character + ":Rig_Settings.rFkArmOrient", 0) for control in self.controls: if cmds.objExists(character + ":" + control): attrs = cmds.listAttr(character + ":" + control, keyable = True, unlocked = True) if attrs != None: for attr in attrs: if attr not in avoidAttrs: cmds.setAttr(character + ":" + control + "." + attr, 0) if attr in ["global_scale", "scaleX", "scaleY", "scaleZ"]: cmds.setAttr(character + ":" + control + "." + attr, 1) cmds.warning("Custom Controls and Toes not implemented yet into reset all") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def resetSelection(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) selection = cmds.ls(sl = True) for each in selection: if each.find(character + ":") == 0: attrs = cmds.listAttr(each, keyable = True, unlocked = True) avoidAttrs = ["global_scale", "scaleX", "scaleY", "scaleZ", "stretch", "twist_amount", "bias", "spine_01_twistAmount", "spine_02_twistAmount", "spine_03_twistAmount", "spine_04_twistAmount", "spine_05_twistAmount", "sticky", "fkOrientation"] if attrs != None: for attr in attrs: if attr not in avoidAttrs: cmds.setAttr(each + "." + attr, 0) if attr in ["global_scale", "scaleX", "scaleY", "scaleZ"]: cmds.setAttr(each + "." + attr, 1) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def importMotion(self, *args): import ART_importMotion reload(ART_importMotion) ART_importMotion.ImportMotionUI() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def exportMotion(self, *args): import ART_exportMotion reload(ART_exportMotion) ART_exportMotion.ExportMotionUI() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def setHeadSpace(self, mode, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) if mode == 0: cmds.menuItem(self.widgets["neckSpaceRB"], edit = True, rb = True) cmds.setAttr(character + ":" + "head_fk_anim.fkOrientation", 0) if mode == 1: cmds.menuItem(self.widgets["shoulderSpaceRB"], edit = True, rb = True) cmds.setAttr(character + ":" + "head_fk_anim.fkOrientation", 1) if mode == 2: cmds.menuItem(self.widgets["bodySpaceRB"], edit = True, rb = True) cmds.setAttr(character + ":" + "head_fk_anim.fkOrientation", 2) if mode == 3: cmds.menuItem(self.widgets["worldSpaceRB"], edit = True, rb = True) cmds.setAttr(character + ":" + "head_fk_anim.fkOrientation", 3) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def getHeadSpace(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) space = cmds.getAttr(character + ":" + "head_fk_anim.fkOrientation") if space == 0: cmds.menuItem(self.widgets["neckSpaceRB"], edit = True, rb = True) if space == 1: cmds.menuItem(self.widgets["shoulderSpaceRB"], edit = True, rb = True) if space == 2: cmds.menuItem(self.widgets["bodySpaceRB"], edit = True, rb = True) if space == 3: cmds.menuItem(self.widgets["worldSpaceRB"], edit = True, rb = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def getNeckSpace(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) space = cmds.getAttr(character + ":" + "neck_01_fk_anim.fkOrientation") if space == 0: cmds.menuItem(self.widgets["neckOrientShoulderSpaceRB"], edit = True, rb = True) if space == 1: cmds.menuItem(self.widgets["neckOrientBodySpaceRB"], edit = True, rb = True) if space == 2: cmds.menuItem(self.widgets["neckOrientWorldSpaceRB"], edit = True, rb = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def setControlSpace(self, spaceSwitchNode, attr, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) #get match and match method settings matching = cmds.menuItem(self.widgets["spaceSwitch_MatchToggleCB"], q = True, cb = True) matchToControl = cmds.menuItem(self.widgets["spaceSwitch_MatchMethodCB"], q = True, cb = True) if attr == None: if matching: #create temp locator to snap the space switch node to control = character + ":" + spaceSwitchNode.rpartition("_space")[0] currentTime = cmds.currentTime(q = True) #set pre-frame key if matchToControl == False: cmds.setKeyframe(character + ":" + spaceSwitchNode, t = (currentTime - 1)) cmds.setKeyframe(control, t = (currentTime - 1)) else: cmds.setKeyframe(character + ":" + spaceSwitchNode, t = (currentTime - 1)) cmds.setKeyframe(control, t = (currentTime - 1)) cmds.currentTime(currentTime - 1) loc = cmds.spaceLocator()[0] constraint = cmds.parentConstraint(control, loc)[0] cmds.delete(constraint) constraint = cmds.parentConstraint(loc, control)[0] cmds.setKeyframe(control, t = (cmds.currentTime(q = True))) cmds.delete(constraint) cmds.delete(loc) #create our temp loc tempLoc = cmds.spaceLocator() cmds.currentTime(currentTime) #constrain temp loc if matchToControl == False: constraint = cmds.parentConstraint(character + ":" + spaceSwitchNode, tempLoc[0])[0] else: constraint = cmds.parentConstraint(control, tempLoc[0])[0] cmds.delete(constraint) #match and switch space attrs = [] try: attrs.extend(cmds.listAttr(character + ":" + spaceSwitchNode, string = "space_*")) except: pass try: attrs.extend(cmds.listAttr(control, string = "space_*")) except: pass for attribute in attrs: if cmds.objExists(character + ":" + spaceSwitchNode+ "." + attribute): cmds.setAttr(character + ":" + spaceSwitchNode+ "." + attribute, 0) if cmds.objExists(control + "." + attribute): cmds.setAttr(control + "." + attribute, 0) if matchToControl == False: constraint = cmds.parentConstraint(tempLoc[0], character + ":" + spaceSwitchNode)[0] cmds.setKeyframe(character + ":" + spaceSwitchNode, t = currentTime) cmds.setKeyframe(control, t = currentTime) cmds.delete(constraint) cmds.delete(tempLoc) cmds.select(clear = True) else: try: constraint = cmds.parentConstraint(tempLoc[0], control)[0] except: constraint = cmds.pointConstraint(tempLoc[0], control)[0] #zero out space node for attr in [".tx", ".ty", ".tz", ".rx", ".ry", ".rz"]: cmds.setAttr(character + ":" + spaceSwitchNode + attr, 0) cmds.setKeyframe(control, t = currentTime) cmds.delete(constraint) cmds.delete(tempLoc) cmds.select(clear = True) #if we are not matching, just set attrs else: currentTime = cmds.currentTime(q = True) cmds.setKeyframe(character + ":" + spaceSwitchNode, t = (currentTime - 1)) attrs = [] try: attrs.extend(cmds.listAttr(character + ":" + spaceSwitchNode, string = "space_*")) except: pass try: attrs.extend(cmds.listAttr(control, string = "space_*")) except: pass for attr in attrs: if cmds.objExists(character + ":" + spaceSwitchNode+ "." + attribute): cmds.setAttr(character + ":" + spaceSwitchNode+ "." + attribute, 0) if cmds.objExists(control + "." + attribute): cmds.setAttr(control + "." + attribute, 0) cmds.setKeyframe(character + ":" + spaceSwitchNode, t = currentTime) cmds.setKeyframe(control, t = currentTime) #if switching to a space other than default else: if matching: #create temp locator to snap the space switch node to control = character + ":" + spaceSwitchNode.rpartition("_space")[0] currentTime = cmds.currentTime(q = True) #set pre-frame key if matchToControl == False: cmds.currentTime(currentTime - 1) cmds.setKeyframe(character + ":" + spaceSwitchNode) cmds.setKeyframe(control) else: cmds.currentTime(currentTime - 1) cmds.setKeyframe(character + ":" + spaceSwitchNode) cmds.setKeyframe(control) cmds.currentTime(currentTime - 1) loc = cmds.spaceLocator()[0] try: constraint = cmds.parentConstraint(control, loc)[0] except: constraint = cmds.pointConstraint(control, loc)[0] cmds.delete(constraint) try: constraint = cmds.parentConstraint(loc, control)[0] except: constraint = cmds.pointConstraint(loc, control)[0] cmds.setKeyframe(control, t = (cmds.currentTime(q = True))) cmds.delete(constraint) cmds.delete(loc) #create our temp loc tempLoc = cmds.spaceLocator()[0] cmds.currentTime(currentTime) #constrain temp loc if matchToControl == False: constraint = cmds.parentConstraint(character + ":" + spaceSwitchNode, tempLoc)[0] else: constraint = cmds.parentConstraint(control, tempLoc)[0] cmds.delete(constraint) #match and switch space attrs = [] try: attrs.extend(cmds.listAttr(character + ":" + spaceSwitchNode, string = "space_*")) except: pass try: attrs.extend(cmds.listAttr(control, string = "space_*")) except: pass for attribute in attrs: cmds.currentTime(currentTime) if cmds.objExists(character + ":" + spaceSwitchNode + "." + attribute): cmds.setAttr(character + ":" + spaceSwitchNode + "." + attribute, 0) cmds.setKeyframe(character + ":" + spaceSwitchNode, t = currentTime) if cmds.objExists(control + "." + attribute): cmds.setAttr(control + "." + attribute, 0) cmds.setKeyframe(control, t = currentTime) if cmds.objExists(character + ":" + spaceSwitchNode + "." + attr): cmds.setAttr(character + ":" + spaceSwitchNode + "." + attr, 1) cmds.setKeyframe(character + ":" + spaceSwitchNode, attribute = attr, t = currentTime) if cmds.objExists(control + "." + attr): cmds.setAttr(control + "." + attr, 1) cmds.setKeyframe(control, attribute = attr, t = currentTime) if matchToControl == False: constraint = cmds.parentConstraint(tempLoc, character + ":" + spaceSwitchNode)[0] cmds.setKeyframe(character + ":" + spaceSwitchNode, t = currentTime) cmds.delete(constraint) cmds.delete(tempLoc) cmds.select(clear = True) else: try: constraint = cmds.parentConstraint(tempLoc, control)[0] except: constraint = cmds.pointConstraint(tempLoc, control)[0] #zero out space node for attribute in [".tx", ".ty", ".tz", ".rx", ".ry", ".rz"]: cmds.setAttr(character + ":" + spaceSwitchNode + attribute, 0) cmds.setKeyframe(control, t = currentTime) cmds.delete(constraint) cmds.delete(tempLoc) cmds.select(clear = True) #if we are not matching, just set attrs else: currentTime = cmds.currentTime(q = True) cmds.setKeyframe(character + ":" + spaceSwitchNode, t = (currentTime - 1)) cmds.setKeyframe(control, t = (currentTime - 1)) attrs = [] try: attrs.extend(cmds.listAttr(character + ":" + spaceSwitchNode, string = "space_*")) except: pass try: attrs.extend(cmds.listAttr(control, string = "space_*")) except: pass for attribute in attrs: if cmds.objExists(character + ":" + spaceSwitchNode+ "." + attribute): cmds.setAttr(character + ":" + spaceSwitchNode+ "." + attribute, 0) if cmds.objExists(control + "." + attribute): cmds.setAttr(control + "." + attribute, 0) if cmds.objExists(character + ":" + spaceSwitchNode+ "." + attr): cmds.setAttr(character + ":" + spaceSwitchNode + "." + attr, 1) cmds.setKeyframe(character + ":" + spaceSwitchNode, attribute = attr, t = currentTime) if cmds.objExists(control + "." + attribute): cmds.setAttr(control + "." + attr, 1) cmds.setKeyframe(control, attribute = attr, t = currentTime) #set the current time back cmds.currentTime(currentTime) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def getControlSpaces(self, popupMenu, radioCollection, spaceSwitchNode, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) #delete any existing children of the radioCollection menuItems = cmds.lsUI(mi = True) for item in menuItems: if cmds.menuItem(item,q = True, docTag = True) == str(radioCollection): cmds.deleteUI(item) #add spaces to radio menu item collection if cmds.objExists(character + ":" + spaceSwitchNode): children = cmds.popupMenu(popupMenu, q = True, itemArray = True) for child in children: label = cmds.menuItem(child, q = True, label = True) if label == "Space Switching": parentSpace = cmds.listRelatives(character + ":" + spaceSwitchNode + "_follow", parent = True)[0] parentSpace = parentSpace.partition(":")[2] #add the default space defMenu = cmds.menuItem(label = "default [" + parentSpace + "]", parent = child, cl = radioCollection, rb = False, docTag = str(radioCollection), c = partial(self.setControlSpace, spaceSwitchNode, None)) #add the rest of the spaces foud on the space switch node control = spaceSwitchNode.partition("_space")[0] attrs = [] try: attrs.extend(cmds.listAttr(character + ":" + spaceSwitchNode, string = "space_*")) except: pass try: attrs.extend(cmds.listAttr(character + ":" + control, string = "space_*")) except: pass found = False for attr in attrs: label = attr.partition("space_")[2] if cmds.objExists(character + ":" + spaceSwitchNode + "." + attr): value = cmds.getAttr(character + ":" + spaceSwitchNode + "." + attr) if cmds.objExists(character + ":" + control + "." + attr): value = cmds.getAttr(character + ":" + control + "." + attr) if value == True: found = True cmds.menuItem(label = label, parent = child, cl = radioCollection, rb = value, docTag = str(radioCollection), c = partial(self.setControlSpace, spaceSwitchNode, attr)) if found == False: cmds.menuItem(defMenu, edit = True, rb = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def spaceSwitcher(self, *args): if cmds.symbolButton(self.widgets["activeCharacterThumb"], q= True, exists = True): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) import ART_spaceSwitcher reload(ART_spaceSwitcher) ART_spaceSwitcher.SpaceSwitcher(character, self) else: cmds.deleteUI("spaceSwitcherUI") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def createSpace(self, *args): if cmds.symbolButton(self.widgets["activeCharacterThumb"], q= True, exists = True): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) import ART_spaceSwitcher reload(ART_spaceSwitcher) inst = ART_spaceSwitcher.SpaceSwitcher(character, self) cmds.deleteUI("spaceSwitcherUI") inst.createSpaceSwitcherSpace() else: cmds.warning("No Animation UI detected") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def poseEditor(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) import ART_poseEditor reload(ART_poseEditor) ART_poseEditor.PoseEditor_UI(character, self) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def copyPose(self, *args): #grab selection selection = cmds.ls(sl = True) #get attributes from each object in selection poseData = [] for each in selection: control = each.partition(":")[2] controlInfo = [control] attrs = cmds.listAttr(each, keyable = True) for attr in attrs: value = cmds.getAttr(each + "." + attr) controlInfo.append(value) poseData.append(controlInfo) #write pose data to file f = open(self.mayaToolsDir + "/poseCache.txt", 'w') cPickle.dump(poseData, f) f.close #change the annotation of the button to have the clipboard contents string = "Pose Clipboard Contents:\n\n" for pose in poseData: control = pose[0] string += control + "\n" cmds.symbolButton(self.widgets["pickerPoseTools"], edit = True, ann = string) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def pastePose(self, *args): #load pose from poseCache file poseCacheFile = self.mayaToolsDir + "/poseCache.txt" character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) if os.path.exists(poseCacheFile): f = open(poseCacheFile, 'r') poseData = cPickle.load(f) f.close() #sort through pose data, finding control, and values for data in poseData: control = data[0] newData = [] for i in range(1, int(len(data))): newData.append(data[i]) attrs = cmds.listAttr(character + ":" + control, keyable = True, unlocked = True) for i in range(int(len(attrs))): cmds.setAttr(character + ":" + control + "." + attrs[i], newData[i]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def pastePreview(self, *args): #load pose from poseCache file poseCacheFile = self.mayaToolsDir + "/poseCache.txt" character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) if os.path.exists(poseCacheFile): f = open(poseCacheFile, 'r') poseData = cPickle.load(f) f.close() #sort through pose data, finding control, and values cmds.select(clear = True) for data in poseData: control = data[0] cmds.select(character + ":" + control, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def pasteOppositePreview(self, *args): #load pose from poseCache file poseCacheFile = self.mayaToolsDir + "/poseCache.txt" character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) if os.path.exists(poseCacheFile): f = open(poseCacheFile, 'r') poseData = cPickle.load(f) f.close() #sort through pose data, finding control, and values cmds.select(clear = True) for data in poseData: control = data[0] ctrl = control if control.find("_l") != -1: ctrl = control.rpartition("_l")[0] + "_r" if control.find("_l_") != -1: prefix = control.partition("_l_")[0] suffix = control.partition("_l_")[2] ctrl = prefix + "_r_" + suffix if control.find("_r") != -1: ctrl = control.rpartition("_r")[0] + "_l" if control.find("_r_") != -1: prefix = control.partition("_r_")[0] suffix = control.partition("_r_")[2] ctrl = prefix + "_l_" + suffix cmds.select(character + ":" + ctrl, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def pastePoseOpposite(self, *args): #load pose from poseCache file poseCacheFile = self.mayaToolsDir + "/poseCache.txt" character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) mirrorAllTransControls = [] mirrorxTransControls = ["ik_elbow_l_anim", "ik_elbow_r_anim", "clavicle_l_anim", "clavicle_r_anim","ik_foot_anim_l", "ik_foot_anim_r", "ik_wrist_l_anim", "ik_wrist_r_anim"] mirrorRotateZandY = ["ik_foot_anim_l", "ik_foot_anim_r", "ik_wrist_l_anim", "ik_wrist_r_anim"] #mirrorRotateY = ["ik_wrist_l_anim", "ik_wrist_r_anim"] if os.path.exists(poseCacheFile): f = open(poseCacheFile, 'r') poseData = cPickle.load(f) f.close() #sort through pose data, finding control, and values for data in poseData: control = data[0] newData = [] for i in range(1, int(len(data))): newData.append(data[i]) attrs = cmds.listAttr(character + ":" + control, keyable = True, unlocked = True) if control.find("_l") != -1: if control.rpartition("_l")[2] == "": ctrl = control.rpartition("_l")[0] + "_r" if ctrl in mirrorAllTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorxTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorRotateZandY: for attr in attrs: if attr.find("rotateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("rotateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 for i in range(int(len(attrs))): cmds.setAttr(character + ":" + ctrl + "." + attrs[i], newData[i]) if control.find("_l_") != -1: prefix = control.partition("_l_")[0] suffix = control.partition("_l_")[2] ctrl = prefix + "_r_" + suffix if ctrl in mirrorAllTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorxTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorRotateZandY: for attr in attrs: if attr.find("rotateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("rotateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 for i in range(int(len(attrs))): cmds.setAttr(character + ":" + ctrl + "." + attrs[i], newData[i]) if control.find("_r") != -1: if control.rpartition("_r")[2] == "": ctrl = control.rpartition("_r")[0] + "_l" if ctrl in mirrorAllTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorxTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorRotateZandY: for attr in attrs: if attr.find("rotateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("rotateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 for i in range(int(len(attrs))): cmds.setAttr(character + ":" + ctrl + "." + attrs[i], newData[i]) if control.find("_r_") != -1: prefix = control.partition("_r_")[0] suffix = control.partition("_r_")[2] ctrl = prefix + "_l_" + suffix if ctrl in mirrorAllTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("translateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorxTransControls: for attr in attrs: if attr.find("translateX") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if ctrl in mirrorRotateZandY: for attr in attrs: if attr.find("rotateY") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 if attr.find("rotateZ") == 0: index = attrs.index(attr) newData[index] = newData[index] * -1 for i in range(int(len(attrs))): cmds.setAttr(character + ":" + ctrl + "." + attrs[i], newData[i]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def toggleControlVis(self, visibility, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) controls = [] for control in ["head_fk_anim", "neck_01_fk_anim", "neck_02_fk_anim", "neck_03_fk_anim", "spine_01_anim", "spine_02_anim", "spine_03_anim", "spine_04_anim", "spine_05_anim", "mid_ik_anim", "chest_ik_anim", "body_anim", "hip_anim", "clavicle_l_anim", "clavicle_r_anim", "fk_arm_l_anim", "fk_arm_r_anim", "fk_elbow_l_anim", "fk_elbow_r_anim", "fk_wrist_l_anim", "fk_wrist_r_anim", "ik_elbow_l_anim", "ik_elbow_r_anim", "ik_wrist_l_anim", "ik_wrist_r_anim", "fk_thigh_l_anim", "fk_thigh_r_anim", "fk_calf_l_anim", "fk_calf_r_anim", "fk_foot_l_anim", "fk_foot_r_anim", "fk_ball_l_anim", "fk_ball_r_anim", "ik_foot_anim_l", "ik_foot_anim_r", "heel_ctrl_l", "heel_ctrl_r", "toe_wiggle_ctrl_l", "toe_wiggle_ctrl_r", "toe_tip_ctrl_l", "toe_tip_ctrl_r", "master_anim", "offset_anim", "root_anim", "upperarm_l_twist_anim", "upperarm_l_twist_2_anim", "upperarm_l_twist_3_anim", "upperarm_r_twist_anim", "upperarm_r_twist_2_anim", "upperarm_r_twist_3_anim", "l_thigh_twist_01_anim", "r_thigh_twist_01_anim", "pinky_metacarpal_ctrl_l", "pinky_metacarpal_ctrl_r", "pinky_finger_fk_ctrl_1_l", "pinky_finger_fk_ctrl_1_r", "pinky_finger_fk_ctrl_2_l", "pinky_finger_fk_ctrl_2_r", "pinky_finger_fk_ctrl_3_l", "pinky_finger_fk_ctrl_3_r", "ring_metacarpal_ctrl_l", "ring_metacarpal_ctrl_r", "ring_finger_fk_ctrl_1_l", "ring_finger_fk_ctrl_1_r", "ring_finger_fk_ctrl_2_l", "ring_finger_fk_ctrl_2_r", "ring_finger_fk_ctrl_3_l", "ring_finger_fk_ctrl_3_r", "middle_metacarpal_ctrl_l", "middle_metacarpal_ctrl_r", "middle_finger_fk_ctrl_1_l", "middle_finger_fk_ctrl_1_r", "middle_finger_fk_ctrl_2_l", "middle_finger_fk_ctrl_2_r", "middle_finger_fk_ctrl_3_l", "middle_finger_fk_ctrl_3_r", "index_metacarpal_ctrl_l", "index_metacarpal_ctrl_r", "index_finger_fk_ctrl_1_l", "index_finger_fk_ctrl_1_r", "index_finger_fk_ctrl_2_l", "index_finger_fk_ctrl_2_r", "index_finger_fk_ctrl_3_l", "index_finger_fk_ctrl_3_r", "thumb_finger_fk_ctrl_1_l", "thumb_finger_fk_ctrl_1_r", "thumb_finger_fk_ctrl_2_l", "thumb_finger_fk_ctrl_2_r", "thumb_finger_fk_ctrl_3_l", "thumb_finger_fk_ctrl_3_r", "index_l_ik_anim", "index_r_ik_anim", "middle_l_ik_anim", "middle_r_ik_anim", "ring_l_ik_anim", "ring_r_ik_anim", "pinky_l_ik_anim", "pinky_r_ik_anim", "thumb_l_ik_anim", "thumb_r_ik_anim", "index_l_poleVector", "index_r_poleVector", "middle_l_poleVector", "middle_r_poleVector", "ring_l_poleVector", "ring_r_poleVector", "pinky_l_poleVector", "pinky_r_poleVector", "thumb_l_poleVector", "thumb_r_poleVector", "l_global_ik_anim", "r_global_ik_anim", "lowerarm_l_twist_anim", "lowerarm_l_twist2_anim", "lowerarm_l_twist3_anim", "lowerarm_r_twist_anim", "lowerarm_r_twist2_anim", "lowerarm_r_twist3_anim", "calf_r_twist_anim", "calf_r_twist2_anim", "calf_r_twist3_anim", "calf_l_twist_anim", "calf_l_twist2_anim", "calf_l_twist3_anim", "thigh_l_twist_2_anim", "thigh_l_twist_3_anim", "thigh_r_twist_2_anim", "thigh_r_twist_3_anim"]: controls.append(control) #find custom joints customJoints = [] attrs = cmds.listAttr(character + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) for joint in customJoints: attribute = cmds.getAttr(character + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "leaf": label = label.partition(" (")[0] control = label + "_anim" controls.append(control) if jointType == "jiggle": control = label + "_anim" controls.append(control) if jointType == "chain" or jointType == "dynamic": numJointsInChain = label.partition("(")[2].partition(")")[0] label = label.partition(" (")[0] for i in range(int(numJointsInChain)): controls.append("fk_" + label + "_0" + str(i + 1) + "_anim") controls.append(label + "_cv_0_anim") controls.append(label + "_dyn_anim") cmds.select("*:" + label + "_ik_*_anim") selection = cmds.ls(sl = True) for each in selection: niceName = each.partition(":")[2] controls.append(niceName) for control in controls: if cmds.objExists(character + ":" + control): shape = cmds.listRelatives(character + ":" + control, shapes = True)[0] if visibility == False: cmds.setAttr(shape + ".v", 0) if visibility == True: cmds.setAttr(shape + ".v", 1) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def updateUI_scriptJob(self, *args): self.mainScriptJob = cmds.scriptJob(event = ["timeChanged", self.updateUI], parent = self.widgets["window"], kws = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def updateUI(self, *args): name = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) customJoints = [] attrs = cmds.listAttr(name + ":" + "Skeleton_Settings") for attr in attrs: if attr.find("extraJoint") == 0: customJoints.append(attr) for joint in customJoints: attribute = cmds.getAttr(name + ":" + "Skeleton_Settings." + joint, asString = True) jointType = attribute.partition("/")[2].partition("/")[0] label = attribute.rpartition("/")[2] if jointType == "chain" or jointType == "dynamic": label = label.partition(" (")[0] mode1 =cmds.getAttr(name + ":Rig_Settings." + label + "_fk") mode2 =cmds.getAttr(name + ":Rig_Settings." + label + "_ik") mode3 =cmds.getAttr(name + ":Rig_Settings." + label + "_dynamic") cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "fkModeButton"], edit = True, select = mode1) cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "ikModeButton"], edit = True, select = mode2) cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_customJoints_" + label + "dynModeButton"], edit = True, select = mode3) mode = cmds.getAttr(name + ":Rig_Settings.rArmMode") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightArmIkModeButton"], edit = True, select = True) mode = cmds.getAttr(name + ":Rig_Settings.lArmMode") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftArmIkModeButton"], edit = True, select = True) mode = cmds.getAttr(name + ":Rig_Settings.lLegMode") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftLegFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_leftLegIkModeButton"], edit = True, select = True) mode = cmds.getAttr(name + ":Rig_Settings.rLegMode") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightLegFkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_rightLegIkModeButton"], edit = True, select = True) mode1 = cmds.getAttr(name + ":Rig_Settings.spine_fk") mode2 = cmds.getAttr(name + ":Rig_Settings.spine_ik") if mode1 > mode2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_spineFkModeButton"], edit = True, select = True) else: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_spineIkModeButton"], edit = True, select = True) mode = cmds.getAttr(name + ":head_fk_anim.fkOrientation") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headFkOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headShoulderOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headBodyOrientModeButton"], edit = True, select = True) if mode == 3: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_headWorldOrientModeButton"], edit = True, select = True) try: mode = cmds.getAttr(name + ":neck_01_fk_anim.fkOrientation") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckShoulderOrientModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckBodyOrientModeButton"], edit = True, select = True) if mode == 2: cmds.iconTextRadioButton(self.widgets[name + "_rigSettings_neckWorldOrientModeButton"], edit = True, select = True) except: pass for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_l_ik_anim"): mode = cmds.getAttr(name + ":" + finger + "_finger_l_mode_anim.FK_IK") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_FkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_LeftFinger_" + finger + "_IkModeButton"], edit = True, select = True) for finger in ["index", "middle", "ring", "pinky", "thumb"]: if cmds.objExists(name + ":" + finger + "_l_ik_anim"): mode = cmds.getAttr(name + ":" + finger + "_finger_r_mode_anim.FK_IK") if mode == 0: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_RightFinger_" + finger + "_FkModeButton"], edit = True, select = True) if mode == 1: cmds.iconTextRadioButton(self.widgets[name + "rigSettings_RightFinger_" + finger + "_IkModeButton"], edit = True, select = True) try: mode = cmds.getAttr(name + ":Rig_Settings.rFkArmOrient") for button in[self.widgets[name + "_rightClavPickerButton"], self.widgets[name + "_rightShoulderPickerButton"], self.widgets[name + "_rightElbowPickerButton"], self.widgets[name + "_rightHandPickerButton"], self.widgets[name + "_rightIkElbowPickerButton"], self.widgets[name + "_rightIkHandPickerButton"]]: if mode == 0: clavVal = True bodyVal = False worldVal = False if mode == 1: clavVal = False bodyVal = True worldVal = False if mode == 2: clavVal = False bodyVal = False worldVal = True cmds.menuItem(self.widgets[name + "_" + button + "_rightArm_ClavSpace"], edit = True, rb = clavVal) cmds.menuItem(self.widgets[name + "_" + button + "_rightArm_BodySpace"], edit = True, rb = bodyVal) cmds.menuItem(self.widgets[name + "_" + button + "_rightArm_WrldSpace"], edit = True, rb = worldVal) except: pass try: mode = cmds.getAttr(name + ":Rig_Settings.lFkArmOrient") for button in[self.widgets[name + "_leftClavPickerButton"], self.widgets[name + "_leftShoulderPickerButton"], self.widgets[name + "_leftElbowPickerButton"], self.widgets[name + "_leftHandPickerButton"], self.widgets[name + "_leftIkElbowPickerButton"], self.widgets[name + "_leftIkHandPickerButton"]]: if mode == 0: clavVal = True bodyVal = False worldVal = False if mode == 1: clavVal = False bodyVal = True worldVal = False if mode == 2: clavVal = False bodyVal = False worldVal = True cmds.menuItem(self.widgets[name + "_" + button + "_leftArm_ClavSpace"], edit = True, rb = clavVal) cmds.menuItem(self.widgets[name + "_" + button + "_leftArm_BodySpace"], edit = True, rb = bodyVal) cmds.menuItem(self.widgets[name + "_" + button + "_leftArm_WrldSpace"], edit = True, rb = worldVal) except: pass # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def ikKneeSolve(self, character, side, *args): startPoint = cmds.xform(character + ":ik_leg_calf_" + side, q = True, ws = True, t = True) endPoint = cmds.xform("calf_" + side, q = True, ws = True, t = True) dist = cmds.distanceDimension( sp=(startPoint[0],startPoint[1],startPoint[2]), ep=(endPoint[0], endPoint[1], endPoint[2]) ) distParent = cmds.listRelatives(dist, parent = True)[0] locs = cmds.listConnections(dist) startLoc = locs[0] endLoc = locs[1] cmds.pointConstraint(character + ":ik_leg_calf_" + side, startLoc) cmds.pointConstraint("calf_" + side, endLoc) #get distance between rig knees and mocap knees distance = cmds.getAttr(dist + ".distance") self.checkDistance(character, dist, distance, distance, side) #clean up cmds.delete([locs[0], locs[1], dist, distParent]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def ikHeelSolve(self, character, side, *args): if cmds.objExists("ball_" + side): value = cmds.getAttr("ball_" + side + ".rz") if value > 10: cmds.setAttr(character + ":ik_foot_anim_" + side + ".rx", 0) cmds.setAttr(character + ":ik_foot_anim_" + side + ".ry", 0) cmds.setAttr(character + ":ik_foot_anim_" + side + ".rz", 0) cmds.setKeyframe(character + ":ik_foot_anim_" + side + "") cmds.setAttr(character + ":heel_ctrl_" + side + ".rz", value * -1) cmds.setKeyframe(character + ":heel_ctrl_" + side + ".rz") footPos = cmds.xform("foot_" + side, q = True, ws = True, t = True) ikFootPos = cmds.xform(character + ":ik_leg_foot_" + side, q = True, ws = True, t = True) yDiff = footPos[1] - ikFootPos[1] zDiff = footPos[2] - ikFootPos[2] cmds.xform(character + ":ik_foot_anim_" + side, r = True, t = [0, yDiff, zDiff]) cmds.setKeyframe(character + ":ik_foot_anim_" + side) else: cmds.setAttr(character + ":heel_ctrl_" + side + ".rz", 0) cmds.setKeyframe(character + ":heel_ctrl_" + side + ".rz") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def match_singleFrame(self, limb, side, matchFrom, matchTo, *args): #get the passed in limb, and duplicate the skeleton for that limb's current mode #for example, if limb is left arm, and matchFrom is IK, then dupe the driver joints (in IK pose) for the left arm and parent to world character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) armBones = ["upperarm_", "lowerarm_", "hand_"] spineBones = ["driver_spine_01", "driver_spine_02", "driver_spine_03", "driver_spine_04", "driver_spine_05"] legBones = ["thigh_", "calf_", "foot_", "ball_"] #grab current selection currentSelection = cmds.ls(sl = True) #arm matching if limb == "arm": #setup constraints based on mode info if matchTo == "IK": constraint1 = cmds.orientConstraint(character + ":ik_upperarm_fk_matcher_" + side, character + ":fk_arm_" + side + "_anim")[0] constraint2 = cmds.orientConstraint(character + ":ik_lowerarm_fk_matcher_" + side, character + ":fk_elbow_" + side + "_anim")[0] constraint3 = cmds.orientConstraint(character + ":hand_match_loc_" + side, character + ":fk_wrist_" + side + "_anim")[0] cmds.setKeyframe(character + ":fk_arm_" + side + "_anim") cmds.setKeyframe(character + ":fk_elbow_" + side + "_anim") cmds.setKeyframe(character + ":fk_wrist_" + side + "_anim") cmds.delete(constraint1) cmds.delete(constraint2) cmds.delete(constraint3) if matchTo == "FK": dupeNodes = cmds.duplicate(character + ":driver_" + armBones[0] + side) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) cmds.pointConstraint("driver_hand_" + side, character + ":ik_wrist_" + side + "_anim") constraint = cmds.orientConstraint(character + ":fk_wrist_" + side + "_anim", character + ":ik_wrist_" + side + "_anim")[0] # CRA NEW CODE - For making sure the elbow match doesnt cause any weird twisting issues. if cmds.objExists(character + ":elbowswitch_"+side): print "NEW CODE WORKING" ptCnst = cmds.pointConstraint(character + ":elbowswitch_"+side, character + ":ik_elbow_" + side + "_anim") else: cmds.pointConstraint("driver_lowerarm_"+side, character + ":ik_elbow_" + side + "_anim") # CRA END NEW CODE if side == "l": cmds.setAttr(constraint + ".offsetX", 90) if side == "r": cmds.setAttr(constraint + ".offsetX", -90) cmds.setKeyframe(character + ":ik_wrist_" + side + "_anim") cmds.setKeyframe(character + ":ik_elbow_" + side + "_anim") # CRA NEW CODE if cmds.objExists(character + ":elbowswitch_"+side): cmds.delete(ptCnst) # CRA END NEW CODE cmds.delete(constraint) #delete the original mode pose joints cmds.delete(dupeNodes[0]) if limb == "clav": #setup constraints based on mode info if matchTo == "IK": constraint1 = cmds.orientConstraint(character + ":ik_clavicle_" + side, character + ":fk_clavicle_" + side + "_anim")[0] cmds.setKeyframe(character + ":fk_clavicle_" + side + "_anim") cmds.delete(constraint1) if matchTo == "FK": constraint1 = cmds.pointConstraint(character + ":driver_upperarm_" + side, character + ":clavicle_" + side + "_anim")[0] cmds.setKeyframe(character + ":clavicle_" + side + "_anim") cmds.delete(constraint1) #leg matching if limb == "leg": dupeNodes = cmds.duplicate(character + ":" + legBones[0] + side) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #setup constraints based on mode info if matchTo == "IK": cmds.orientConstraint("thigh_" + side, character + ":fk_thigh_" + side + "_anim") cmds.orientConstraint("calf_" + side, character + ":fk_calf_" + side + "_anim") cmds.orientConstraint("foot_" + side, character + ":fk_foot_" + side + "_anim") if cmds.objExists("ball_" + side): cmds.orientConstraint("ball_" + side, character + ":fk_ball_" + side + "_anim") cmds.setKeyframe(character + ":fk_thigh_" + side + "_anim") cmds.setKeyframe(character + ":fk_calf_" + side + "_anim") cmds.setKeyframe(character + ":fk_foot_" + side + "_anim") if cmds.objExists("ball_" + side): cmds.setKeyframe(character + ":fk_ball_" + side + "_anim") if matchTo == "FK": loc = cmds.spaceLocator(name = character + ":ik_foot_anim_" + side + "_locator")[0] constraint = cmds.parentConstraint("foot_" + side, loc)[0] cmds.delete(constraint) cmds.pointConstraint(loc, character + ":ik_foot_anim_" + side) constraint = cmds.orientConstraint("foot_" + side, character + ":ik_foot_anim_" + side)[0] if side == "l": cmds.setAttr(constraint + ".offsetY", 90) if side == "r": cmds.setAttr(constraint + ".offsetX", 180) cmds.setAttr(constraint + ".offsetY", 90) cmds.setKeyframe(character + ":ik_foot_anim_" + side) #run knee solve to get angle to set self.ikKneeSolve(character, side) self.ikHeelSolve(character, side) #delete the original mode pose joints cmds.delete(dupeNodes[0]) if cmds.objExists(character + ":ik_foot_anim_" + side + "_locator"): cmds.delete(character + ":ik_foot_anim_" + side + "_locator") #spine matching if limb == "spine": dupeNodes = cmds.duplicate(character + ":" + spineBones[0]) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #setup constraints based on mode info # Switching to FK if matchTo == "IK": #check to see if user has any project specific match scripts (Fortnite custom) if cmds.objExists(character + ":spine_02_anim.driven"): #furthermore, if the plusMinusAvg nodes exist, then import custom matching if os.path.exists(self.mayaToolsDir + "/General/Scripts/fortniteRotoMatch.py"): result = cmds.confirmDialog(title = "Match Options", icon = "question", message = "Which match option would you like to use?", button = ["Standard", "Rotoscope"]) if result == "Standard": try: cmds.setAttr(character + ":spine_02_anim.driven", 0) cmds.setAttr(character + ":spine_04_anim.driven", 0) except: pass if cmds.objExists(character + ":spine_01_anim"): cmds.orientConstraint("driver_spine_01", character + ":spine_01_anim") cmds.setKeyframe(character + ":spine_01_anim") if cmds.objExists(character + ":spine_02_anim"): cmds.orientConstraint("driver_spine_02", character + ":spine_02_anim") cmds.setKeyframe(character + ":spine_02_anim") if cmds.objExists(character + ":spine_03_anim"): cmds.orientConstraint("driver_spine_03", character + ":spine_03_anim") cmds.setKeyframe(character + ":spine_03_anim") if cmds.objExists(character + ":spine_04_anim"): cmds.orientConstraint("driver_spine_04", character + ":spine_04_anim") cmds.setKeyframe(character + ":spine_04_anim") if cmds.objExists(character + ":spine_05_anim"): cmds.orientConstraint("driver_spine_05", character + ":spine_05_anim") cmds.setKeyframe(character + ":spine_05_anim") #for each in spineBones: #if cmds.objExists(character + ":" + each + "_anim"): #cmds.setKeyframe(character + ":" + each + "_anim") if result == "Rotoscope": import fortniteRotoMatch as fnRm reload(fnRm) fnRm.RotoSpineMatch(character) else: if cmds.objExists(character + ":spine_01_anim"): cmds.orientConstraint("driver_spine_01", character + ":spine_01_anim") cmds.setKeyframe(character + ":spine_01_anim") if cmds.objExists(character + ":spine_02_anim"): cmds.orientConstraint("driver_spine_02", character + ":spine_02_anim") cmds.setKeyframe(character + ":spine_02_anim") if cmds.objExists(character + ":spine_03_anim"): cmds.orientConstraint("driver_spine_03", character + ":spine_03_anim") cmds.setKeyframe(character + ":spine_03_anim") if cmds.objExists(character + ":spine_04_anim"): cmds.orientConstraint("driver_spine_04", character + ":spine_04_anim") cmds.setKeyframe(character + ":spine_04_anim") if cmds.objExists(character + ":spine_05_anim"): cmds.orientConstraint("driver_spine_05", character + ":spine_05_anim") cmds.setKeyframe(character + ":spine_05_anim") #for each in spineBones: #if cmds.objExists(character + ":" + each + "_anim"): #cmds.setKeyframe(character + ":" + each + "_anim") # Switching to IK if matchTo == "FK": if cmds.objExists(character + ":chest_ik_anim"): #find highest spine joint numSpineBones = cmds.getAttr(character + ":Skeleton_Settings.numSpineBones") if numSpineBones == 5: endSpine = "driver_spine_05" midSpine = ["driver_spine_03"] if numSpineBones == 4: endSpine = "driver_spine_04" midSpine = ["driver_spine_02", "driver_spine_03"] if numSpineBones == 3: endSpine = "driver_spine_03" midSpine = ["driver_spine_02"] if cmds.objExists("chest_ik_anim_MATCH"): cmds.parentConstraint("chest_ik_anim_MATCH", character + ":chest_ik_anim") cmds.parentConstraint("mid_ik_anim_MATCH", character + ":mid_ik_anim") else: cmds.parentConstraint(endSpine, character + ":chest_ik_anim") for each in midSpine: cmds.parentConstraint(each, character + ":mid_ik_anim") cmds.setKeyframe([character + ":chest_ik_anim", character + ":mid_ik_anim"]) #delete the original mode pose joints cmds.delete(dupeNodes[0]) #reselect selection before entering process if len(currentSelection) > 0: cmds.select(currentSelection) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def match_frameRange_bakeMotionToRefJoints(self, character, parts, start, end, *args): constraints = [] bakeJoints = [] armBones = ["upperarm_", "lowerarm_", "hand_"] spineBones = ["spine_01", "spine_02", "spine_03", "spine_04", "spine_05"] legBones = ["thigh_", "calf_", "foot_", "ball_"] #go through each part, and duplicate the appropriate part of the skeleton for constraining the rig to for part in parts: if part == character + ":" + "Left Arm": #duplicate the current skeleton pose for the limb dupeNodes = cmds.duplicate(character + ":" + armBones[0] + "l") for node in dupeNodes: bakeJoints.append(node) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #bake anim data onto dupe nodes for node in dupeNodes: constraint = cmds.parentConstraint(character + ":" + node, node)[0] constraints.append(constraint) if part == character + ":" + "Right Arm": #duplicate the current skeleton pose for the limb dupeNodes = cmds.duplicate(character + ":" + armBones[0] + "r") for node in dupeNodes: bakeJoints.append(node) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #bake anim data onto dupe nodes for node in dupeNodes: constraint = cmds.parentConstraint(character + ":" + node, node)[0] constraints.append(constraint) if part == character + ":" + "Left Leg": #duplicate the current skeleton pose for the limb dupeNodes = cmds.duplicate(character + ":" + legBones[0] + "l") for node in dupeNodes: bakeJoints.append(node) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #bake anim data onto dupe nodes for node in dupeNodes: try: constraint = cmds.parentConstraint(character + ":" + node, node)[0] constraints.append(constraint) except: pass if part == character + ":" + "Right Leg": #duplicate the current skeleton pose for the limb dupeNodes = cmds.duplicate(character + ":" + legBones[0] + "r") for node in dupeNodes: bakeJoints.append(node) parent = cmds.listRelatives(dupeNodes[0], parent = True) if parent != None: cmds.parent(dupeNodes[0], world = True) #bake anim data onto dupe nodes for node in dupeNodes: try: constraint = cmds.parentConstraint(character + ":" + node, node)[0] constraints.append(constraint) except: pass if part == character + ":" + "Spine": #duplicate the current skeleton pose for the limb dupeNodes = cmds.duplicate(character + ":" + spineBones[0]) #delete children after last spine bone lastSpine = "spine_02" if cmds.objExists("spine_03"): lastSpine = "spine_03" if cmds.objExists("spine_04"): lastSpine = "spine_04" if cmds.objExists("spine_05"): lastSpine = "spine_05" children = cmds.listRelatives(lastSpine, children = True) for child in children: cmds.delete(child) cmds.select(dupeNodes[0], hi = True) newNodes = cmds.ls(sl = True) for node in newNodes: bakeJoints.append(node) parent = cmds.listRelatives(newNodes[0], parent = True) if parent != None: cmds.parent(newNodes[0], world = True) #bake anim data onto dupe nodes for node in newNodes: constraint = cmds.parentConstraint(character + ":" + node, node)[0] constraints.append(constraint) #bake down all bakeJoints if len(bakeJoints) > 0: cmds.select(clear = True) for each in bakeJoints: cmds.select(each, add = True) cmds.bakeResults(simulation = True, t= (start, end), preserveOutsideKeys = True) for each in constraints: cmds.delete(each) #return bake joints return bakeJoints # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def ikHeelSolve_frameRange(self, character, side, start, end, *args): values = [] for i in range(int(start), int(end + 1)): cmds.currentTime(i) if cmds.objExists("ball_" + side): value = cmds.getAttr("ball_" + side + ".rz") values.append(value) x = 0 for i in range(int(start), int(end + 1)): cmds.currentTime(i) if cmds.objExists("ball_" + side): if values[x] > 10: cmds.setAttr(character + ":ik_foot_anim_" + side + ".rx", 0) cmds.setAttr(character + ":ik_foot_anim_" + side + ".ry", 0) cmds.setAttr(character + ":ik_foot_anim_" + side + ".rz", 0) cmds.setKeyframe(character + ":ik_foot_anim_" + side) cmds.setAttr(character + ":heel_ctrl_" + side + ".rz", values[x] * -1) cmds.setKeyframe(character + ":heel_ctrl_" + side + ".rz") footPos = cmds.xform("foot_" + side, q = True, ws = True, t = True) ikFootPos = cmds.xform(character + ":ik_leg_foot_" + side, q = True, ws = True, t = True) yDiff = footPos[1] - ikFootPos[1] zDiff = footPos[2] - ikFootPos[2] cmds.xform(character + ":ik_foot_anim_" + side, r = True, t = [0, yDiff, zDiff]) cmds.setKeyframe(character + ":ik_foot_anim_" + side) else: cmds.setAttr(character + ":heel_ctrl_" + side + ".rz", 0) cmds.setKeyframe(character + ":heel_ctrl_" + side + ".rz") #iterate x x = x + 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def checkDistance(self, character, distanceNode, distanceAttr, originalValue, side): if distanceAttr > 1: currentAttr = cmds.getAttr(character + ":ik_foot_anim_" + side + ".knee_twist") try: cmds.setAttr(character + ":ik_foot_anim_" + side + ".knee_twist", currentAttr + 1) cmds.setKeyframe(character + ":ik_foot_anim_" + side + ".knee_twist") newDist = cmds.getAttr(distanceNode + ".distance") if newDist < originalValue: self.checkDistance(character, distanceNode, newDist, newDist, side) cmds.progressWindow(self.progWindow, edit=True, progress= (cmds.progressWindow(q = True, progress = True) + 3), status= "Solving IK Pole Vectors" ) if newDist > originalValue: cmds.setAttr(character + ":ik_foot_anim_" + side + ".knee_twist", currentAttr - 2) cmds.setKeyframe(character + ":ik_foot_anim_" + side + ".knee_twist") newDist = cmds.getAttr(distanceNode + ".distance") self.checkDistance(character, distanceNode, newDist, newDist, side) cmds.progressWindow(self.progWindow, edit=True, progress= (cmds.progressWindow(q = True, progress = True) + 3), status= "Solving IK Pole Vectors" ) except: pass # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def ikKneeSolve_frameRange(self, character, side, start, end, *args): length = abs(cmds.getAttr("calf_" + side + ".tx")) startPoint = cmds.xform(character + ":ik_leg_calf_" + side, q = True, ws = True, t = True) endPoint = cmds.xform("calf_" + side, q = True, ws = True, t = True) dist = cmds.distanceDimension( sp=(startPoint[0],startPoint[1],startPoint[2]), ep=(endPoint[0], endPoint[1], endPoint[2]) ) distParent = cmds.listRelatives(dist, parent = True)[0] locs = cmds.listConnections(dist) startLoc = locs[0] endLoc = locs[1] cmds.pointConstraint(character + ":ik_leg_calf_" + side, startLoc) cmds.pointConstraint("calf_" + side, endLoc) cmds.currentTime(int(start)) #get distance between rig knees and mocap knees for i in range(int(start), int(end) + 1): cmds.currentTime(i) distance = cmds.getAttr(dist + ".distance") self.checkDistance(character, dist, distance, distance, side) #clean up cmds.delete([startLoc, endLoc, dist, distParent]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def match_frameRange_UI_Process(self, *args): character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) #get the body parts to match from the text scroll list parts = cmds.textScrollList(self.widgets["matchFrameRange_RigList"] , q = True, si = True) if parts == None: cmds.warning("Nothing selected in the parts list.") return #get match method button = cmds.iconTextRadioCollection(self.widgets["matchFrameRange_RadioCollection"], q = True, sl = True) method = cmds.iconTextRadioButton(button, q = True, ann = True) #get frame range start = cmds.intFieldGrp(self.widgets["matchFrameRange_FrameRange"], q = True, value1 = True) end = cmds.intFieldGrp(self.widgets["matchFrameRange_FrameRange"], q = True, value2 = True) #for frame in frame range, for each part selected in the list, run the match function for i in range(start, end + 1): cmds.currentTime(i) for part in parts: if part == character + ":" + "Right Leg": if method == "fk": self.match_singleFrame("leg", "r", "FK", "IK") if method == "ik": self.match_singleFrame("leg", "r", "IK", "FK") if part == character + ":" + "Left Leg": if method == "fk": self.match_singleFrame("leg", "l", "FK", "IK") if method == "ik": self.match_singleFrame("leg", "l", "IK", "FK") if part == character + ":" + "Left Arm": if method == "fk": self.match_singleFrame("arm", "l", "FK", "IK") if method == "ik": self.match_singleFrame("arm", "l", "IK", "FK") if part == character + ":" + "Right Arm": if method == "fk": self.match_singleFrame("arm", "r", "FK", "IK") if method == "ik": self.match_singleFrame("arm", "r", "IK", "FK") if part == character + ":" + "Spine": if method == "fk": self.match_singleFrame("spine", None, "FK", "IK") if method == "ik": self.match_singleFrame("spine", None, "IK", "FK") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def match_frameRange_UI_Cancel(self, *args): cmds.deleteUI(self.widgets["matchFrameRange_Window"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def match_frameRange_UI(self, *args): if cmds.window("matchOverFrameRange_UI", exists = True): cmds.deleteUI("matchOverFrameRange_UI") character = cmds.symbolButton(self.widgets["activeCharacterThumb"], q = True, ann = True) self.widgets["matchFrameRange_Window"] = cmds.window("matchOverFrameRange_UI", w = 500, h = 300, sizeable = True, title = "Match Over Frame Range", titleBarMenu = False) #main layout self.widgets["matchFrameRange_MainLayout"] = cmds.formLayout(w = 500, h = 300) #create the UI elements we need #rig part list self.widgets["matchFrameRange_RigList"] = cmds.textScrollList(w = 200, h = 250, parent = self.widgets["matchFrameRange_MainLayout"], allowMultiSelection = True) #populate the list with the current character's limbs that can match for part in ["Left Arm", "Right Arm", "Left Leg", "Right Leg", "Spine"]: cmds.textScrollList(self.widgets["matchFrameRange_RigList"], edit = True, append = character + ":" + part) #frame range start = cmds.playbackOptions(q = True, min = True) end = cmds.playbackOptions(q = True, max = True) self.widgets["matchFrameRange_FrameRange"] = cmds.intFieldGrp(numberOfFields=2, label='Frame Range:', value1 = start, value2 = end, cw = [(1, 100), (2,80), (3, 80)] ) #radio buttons for match method self.widgets["matchFrameRange_RadioCollection"] = cmds.iconTextRadioCollection() self.widgets["matchFrameRange_FkToIk"] = cmds.iconTextRadioButton( ann = "fk", select = True, st='iconOnly', image = self.mayaToolsDir + "/General/Icons/ART/fktoik_off.bmp", selectionImage = self.mayaToolsDir + "/General/Icons/ART/fktoik_on.bmp", w = 125, h = 50, collection = self.widgets["matchFrameRange_RadioCollection"], parent = self.widgets["matchFrameRange_MainLayout"]) self.widgets["matchFrameRange_IkToFk"] = cmds.iconTextRadioButton( ann = "ik", st='iconOnly', image = self.mayaToolsDir + "/General/Icons/ART/iktofk_off.bmp", selectionImage = self.mayaToolsDir + "/General/Icons/ART/iktofk_on.bmp", w = 125, h = 50, collection = self.widgets["matchFrameRange_RadioCollection"] , parent = self.widgets["matchFrameRange_MainLayout"]) #process button and cancel button self.widgets["matchFrameRange_Process"] = cmds.button(w = 125, h = 50, label = "Process", c = self.match_frameRange_UI_Process) self.widgets["matchFrameRange_Cancel"] = cmds.button(w = 125, h = 50, label = "Cancel", c = self.match_frameRange_UI_Cancel) #ik solve options label = cmds.text(label = "IK Solve Options:", font = "boldLabelFont") self.widgets["matchFR_RollSolveCB"] = cmds.checkBox(label = "Solve Foot Roll", v = False, parent = self.widgets["matchFrameRange_MainLayout"]) self.widgets["matchFR_KneeSolveCB"] = cmds.checkBox(label = "Solve Knee Vectors", v = True, parent = self.widgets["matchFrameRange_MainLayout"]) #place UI widgets cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_RigList"], 'left', 10), (self.widgets["matchFrameRange_RigList"], 'top', 25)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_FrameRange"], 'left', 210), (self.widgets["matchFrameRange_FrameRange"], 'top', 25)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_FkToIk"], 'left', 230), (self.widgets["matchFrameRange_FkToIk"], 'top', 75)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_IkToFk"], 'right', 10), (self.widgets["matchFrameRange_IkToFk"], 'top', 75)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_Process"], 'left', 230), (self.widgets["matchFrameRange_Process"], 'bottom', 25)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFrameRange_Cancel"], 'right', 10), (self.widgets["matchFrameRange_Cancel"], 'bottom', 25)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(label, 'left', 230), (label, 'bottom', 140)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFR_RollSolveCB"], 'left', 230), (self.widgets["matchFR_RollSolveCB"], 'bottom', 115)]) cmds.formLayout(self.widgets["matchFrameRange_MainLayout"], edit = True, af = [(self.widgets["matchFR_KneeSolveCB"], 'right', 10), (self.widgets["matchFR_KneeSolveCB"], 'bottom', 115)]) #show the window cmds.showWindow(self.widgets["matchFrameRange_Window"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def control_scale_init(self, *args): #launch a simple UI with a slider to control the scale if cmds.window("controlScaleWindow", exists = True): cmds.deleteUI("controlScaleWindow") self.widgets["controlScaleWindow"] = cmds.window("controlScaleWindow", title = "CV Scale", w = 150, h = 50, sizeable = True, mnb = False, mxb = False) mainLayout = cmds.formLayout(w = 150, h = 50) smallerButton = cmds.button(label = "v", w = 50, h = 30, c = partial(self.control_scale_execute, .9)) largerButton = cmds.button(label = "^", w = 50, h = 30, c = partial(self.control_scale_execute, 1.1)) cmds.formLayout(mainLayout, edit = True, af = [(smallerButton, 'left', 25), (smallerButton, 'top', 10)]) cmds.formLayout(mainLayout, edit = True, af = [(largerButton, 'right', 25), (largerButton, 'top', 10)]) cmds.showWindow(self.widgets["controlScaleWindow"]) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def control_scale_execute(self, amount, *args): #get the value selection = cmds.ls(sl = True) cmds.select(clear = True) for each in selection: if each.find("anim") != -1: #select all cvs cmds.select(each + ".cv[*]", add = True) #set scale cmds.scale(amount, amount, amount, relative = True, cp = True) #reselect cmds.select(clear = True) for each in selection: cmds.select(each, add = True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def animHelp(self, *args): cmds.launch(web = "https://docs.unrealengine.com/latest/INT/Engine/Content/Tools/MayaRiggingTool/RigTool_Animation/index.html") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def setup_ik_driven_fk_rig(self, *args): character = cmds.symbolButton('activeCharacterThumb', q = True, ann = True) #check to make sure FK wrist control is selected selection = cmds.ls(sl = True)[0] if selection.find(character + ":fk_wrist_") != -1: side = selection.partition(":fk_wrist_")[2].partition("_")[0] #duplicate FK arm joints upArm = cmds.duplicate(character + ":fk_upperarm_" + side, po = True, name = "ik_driver_fk_upperarm_" + side)[0] lowArm = cmds.duplicate(character + ":fk_lowerarm_" + side, po = True, name = "ik_driver_fk_lowerarm_" + side)[0] wrist = cmds.duplicate(character + ":fk_hand_" + side, po = True, name = "ik_driver_fk_hand_" + side)[0] cmds.parent(lowArm, upArm) cmds.parent(wrist, lowArm) #set preferred angle on elbow cmds.setAttr(lowArm + ".preferredAngleZ", -90) cmds.setAttr(upArm + ".v", 0) #create rp ik rpIkHandle = cmds.ikHandle(name = "ikdriver_fk_arm_ikHandle_" + side, solver = "ikRPsolver", sj = upArm, ee = wrist)[0] cmds.setAttr(rpIkHandle + ".v", 0) #parent ik hand under fk_wrist_r_anim cmds.select(rpIkHandle) #constrain fk controls to joints cmds.orientConstraint(upArm, character + ":fk_arm_" + side + "_anim", mo = True) cmds.orientConstraint(lowArm, character + ":fk_elbow_" + side + "_anim", mo = True) cmds.orientConstraint(wrist, character + ":fk_wrist_" + side + "_anim", mo = True) cmds.setToolTo( 'moveSuperContext' ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def destroy_ik_driven_fk_rig(self, *args): character = cmds.symbolButton('activeCharacterThumb', q = True, ann = True) selected = cmds.ls(sl = True)[0] selectedSide = selected.partition("ikdriver_fk_arm_ikHandle_")[2] for side in ["l", "r"]: if cmds.objExists("ikdriver_fk_arm_ikHandle_" + side): cmds.setKeyframe(character + ":fk_arm_" + side + "_anim") cmds.setKeyframe(character + ":fk_elbow_" + side + "_anim") cmds.setKeyframe(character + ":fk_wrist_" + side + "_anim") cmds.delete(["ikdriver_fk_arm_ikHandle_" + side, "ik_driver_fk_upperarm_" + side ]) cmds.select(character + ":fk_wrist_" + selectedSide + "_anim") cmds.setToolTo("RotateSuperContext") # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def eulerFilterAll(self, *args): self.selectAll() cmds.selectKey() cmds.filterCurve() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def eulerFilterSelected(self, *args): cmds.selectKey() cmds.filterCurve() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def toggleVisibilityOnSelectedControlGroups(self, name, *args): #get all controls below children = cmds.treeView(self.widgets[name + "_treeViewWidget"], q = True, children = args[0]) for child in children: if cmds.objExists(name + ":" + child): try: shape = cmds.listRelatives(name + ":" + child, shapes = True)[0] visibility = cmds.getAttr(shape + ".v") if visibility == True: cmds.setAttr(shape + ".v", 0) if visibility == False: cmds.setAttr(shape + ".v", 1) except: pass # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # def setupButtonAttrsOnControls(self): #when the UI is launched, we need to add an attribute to each control that tells us the corresponding button name characters = self.getCharacters() #add string attrs to controls for character in characters: #head try: if cmds.objExists(character + ":" + "head_fk_anim.buttonName"): cmds.setAttr(character + ":" + "head_fk_anim.buttonName",self.widgets[character + "_headPickerButton"], type = "string") else: cmds.select(character + ":" + "head_fk_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "head_fk_anim.buttonName",self.widgets[character + "_headPickerButton"], type = "string") except: pass #neck1 try: if cmds.objExists(character + ":" + "neck_01_fk_anim"): if cmds.objExists(character + ":" + "neck_01_fk_anim.buttonName"): cmds.setAttr(character + ":" + "neck_01_fk_anim.buttonName",self.widgets[character + "_neck1_PickerButton"], type = "string") else: cmds.select(character + ":" + "neck_01_fk_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "neck_01_fk_anim.buttonName",self.widgets[character + "_neck1_PickerButton"], type = "string") else: if cmds.objExists(character + ":" + "neck_fk_anim.buttonName"): cmds.setAttr(character + ":" + "neck_fk_anim.buttonName",self.widgets[character + "_neck1_PickerButton"], type = "string") else: cmds.select(character + ":" + "neck_fk_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "neck_fk_anim.buttonName",self.widgets[character + "_neck1_PickerButton"], type = "string") except: pass #neck2 try: if cmds.objExists(character + ":" + "neck_02_fk_anim"): if cmds.objExists(character + ":" + "neck_02_fk_anim.buttonName"): cmds.setAttr(character + ":" + "neck_02_fk_anim.buttonName",self.widgets[character + "_neck2_PickerButton"], type = "string") else: cmds.select(character + ":" + "neck_02_fk_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "neck_02_fk_anim.buttonName",self.widgets[character + "_neck2_PickerButton"], type = "string") except: pass #neck3 try: if cmds.objExists(character + ":" + "neck_03_fk_anim"): if cmds.objExists(character + ":" + "neck_03_fk_anim.buttonName"): cmds.setAttr(character + ":" + "neck_03_fk_anim.buttonName",self.widgets[character + "_neck3_PickerButton"], type = "string") else: cmds.select(character + ":" + "neck_03_fk_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "neck_03_fk_anim.buttonName",self.widgets[character + "_neck3_PickerButton"], type = "string") except: pass #fk spine 1 try: if cmds.objExists(character + ":" + "spine_01_anim"): if cmds.objExists(character + ":" + "spine_01_anim.buttonName"): cmds.setAttr(character + ":" + "spine_01_anim.buttonName",self.widgets[character + "_spine1_PickerButton"], type = "string") else: cmds.select(character + ":" + "spine_01_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "spine_01_anim.buttonName",self.widgets[character + "_spine1_PickerButton"], type = "string") except: pass #fk spine 2 try: if cmds.objExists(character + ":" + "spine_02_anim"): if cmds.objExists(character + ":" + "spine_02_anim.buttonName"): cmds.setAttr(character + ":" + "spine_02_anim.buttonName",self.widgets[character + "_spine2_PickerButton"], type = "string") else: cmds.select(character + ":" + "spine_02_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "spine_02_anim.buttonName",self.widgets[character + "_spine2_PickerButton"], type = "string") except: pass #fk spine 3 try: if cmds.objExists(character + ":" + "spine_03_anim"): if cmds.objExists(character + ":" + "spine_03_anim.buttonName"): cmds.setAttr(character + ":" + "spine_03_anim.buttonName",self.widgets[character + "_spine3_PickerButton"], type = "string") else: cmds.select(character + ":" + "spine_03_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "spine_03_anim.buttonName",self.widgets[character + "_spine3_PickerButton"], type = "string") except: pass #fk spine 4 try: if cmds.objExists(character + ":" + "spine_04_anim"): if cmds.objExists(character + ":" + "spine_04_anim.buttonName"): cmds.setAttr(character + ":" + "spine_04_anim.buttonName",self.widgets[character + "_spine4_PickerButton"], type = "string") else: cmds.select(character + ":" + "spine_04_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "spine_04_anim.buttonName",self.widgets[character + "_spine4_PickerButton"], type = "string") except: pass #fk spine 5 try: if cmds.objExists(character + ":" + "spine_05_anim"): if cmds.objExists(character + ":" + "spine_05_anim.buttonName"): cmds.setAttr(character + ":" + "spine_05_anim.buttonName",self.widgets[character + "_spine5_PickerButton"], type = "string") else: cmds.select(character + ":" + "spine_05_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "spine_05_anim.buttonName",self.widgets[character + "_spine5_PickerButton"], type = "string") except: pass #ik spine try: if cmds.objExists(character + ":" + "mid_ik_anim"): if cmds.objExists(character + ":" + "mid_ik_anim.buttonName"): cmds.setAttr(character + ":" + "mid_ik_anim.buttonName",self.widgets[character + "_ikSpineMidPickerButton"], type = "string") else: cmds.select(character + ":" + "mid_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "mid_ik_anim.buttonName",self.widgets[character + "_ikSpineMidPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "chest_ik_anim"): if cmds.objExists(character + ":" + "chest_ik_anim.buttonName"): cmds.setAttr(character + ":" + "chest_ik_anim.buttonName",self.widgets[character + "_ikSpineTopPickerButton"], type = "string") else: cmds.select(character + ":" + "chest_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "chest_ik_anim.buttonName",self.widgets[character + "_ikSpineTopPickerButton"], type = "string") except: pass #body try: if cmds.objExists(character + ":" + "body_anim.buttonName"): cmds.setAttr(character + ":" + "body_anim.buttonName",self.widgets[character + "_bodyPickerButton"], type = "string") else: cmds.select(character + ":" + "body_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "body_anim.buttonName",self.widgets[character + "_bodyPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "hip_anim.buttonName"): cmds.setAttr(character + ":" + "hip_anim.buttonName",self.widgets[character + "_pelvisPickerButton"], type = "string") else: cmds.select(character + ":" + "hip_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "hip_anim.buttonName",self.widgets[character + "_pelvisPickerButton"], type = "string") except: pass #clavicles try: if cmds.objExists(character + ":" + "clavicle_l_anim.buttonName"): cmds.setAttr(character + ":" + "clavicle_l_anim.buttonName",self.widgets[character + "_leftClavPickerButton"], type = "string") else: cmds.select(character + ":" + "clavicle_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "clavicle_l_anim.buttonName",self.widgets[character + "_leftClavPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "clavicle_r_anim.buttonName"): cmds.setAttr(character + ":" + "clavicle_r_anim.buttonName",self.widgets[character + "_rightClavPickerButton"], type = "string") else: cmds.select(character + ":" + "clavicle_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "clavicle_r_anim.buttonName",self.widgets[character + "_rightClavPickerButton"], type = "string") except: pass #upper arms try: if cmds.objExists(character + ":" + "fk_arm_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_arm_l_anim.buttonName",self.widgets[character + "_leftShoulderPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_arm_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_arm_l_anim.buttonName",self.widgets[character + "_leftShoulderPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_arm_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_arm_r_anim.buttonName",self.widgets[character + "_rightShoulderPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_arm_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_arm_r_anim.buttonName",self.widgets[character + "_rightShoulderPickerButton"], type = "string") except: pass #lower arms try: if cmds.objExists(character + ":" + "fk_elbow_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_elbow_l_anim.buttonName",self.widgets[character + "_leftElbowPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_elbow_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_elbow_l_anim.buttonName",self.widgets[character + "_leftElbowPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_elbow_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_elbow_r_anim.buttonName",self.widgets[character + "_rightElbowPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_elbow_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_elbow_r_anim.buttonName",self.widgets[character + "_rightElbowPickerButton"], type = "string") except: pass #fk hands try: if cmds.objExists(character + ":" + "fk_wrist_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_wrist_l_anim.buttonName",self.widgets[character + "_leftHandPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_wrist_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_wrist_l_anim.buttonName",self.widgets[character + "_leftHandPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_wrist_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_wrist_r_anim.buttonName",self.widgets[character + "_rightHandPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_wrist_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_wrist_r_anim.buttonName",self.widgets[character + "_rightHandPickerButton"], type = "string") except: pass #ik elbows try: if cmds.objExists(character + ":" + "ik_elbow_l_anim.buttonName"): cmds.setAttr(character + ":" + "ik_elbow_l_anim.buttonName",self.widgets[character + "_leftIkElbowPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_elbow_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_elbow_l_anim.buttonName",self.widgets[character + "_leftIkElbowPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ik_elbow_r_anim.buttonName"): cmds.setAttr(character + ":" + "ik_elbow_r_anim.buttonName",self.widgets[character + "_rightIkElbowPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_elbow_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_elbow_r_anim.buttonName",self.widgets[character + "_rightIkElbowPickerButton"], type = "string") except: pass #ik hands try: if cmds.objExists(character + ":" + "ik_wrist_l_anim.buttonName"): cmds.setAttr(character + ":" + "ik_wrist_l_anim.buttonName",self.widgets[character + "_leftIkHandPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_wrist_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_wrist_l_anim.buttonName",self.widgets[character + "_leftIkHandPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ik_wrist_r_anim.buttonName"): cmds.setAttr(character + ":" + "ik_wrist_r_anim.buttonName",self.widgets[character + "_rightIkHandPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_wrist_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_wrist_r_anim.buttonName",self.widgets[character + "_rightIkHandPickerButton"], type = "string") except: pass #fk thighs try: if cmds.objExists(character + ":" + "fk_thigh_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_thigh_l_anim.buttonName",self.widgets[character + "_leftThighPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_thigh_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_thigh_l_anim.buttonName",self.widgets[character + "_leftThighPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_thigh_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_thigh_r_anim.buttonName",self.widgets[character + "_rightThighPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_thigh_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_thigh_r_anim.buttonName",self.widgets[character + "_rightThighPickerButton"], type = "string") except: pass #fk knees try: if cmds.objExists(character + ":" + "fk_calf_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_calf_l_anim.buttonName",self.widgets[character + "_leftFkKneePickerButton"], type = "string") else: cmds.select(character + ":" + "fk_calf_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_calf_l_anim.buttonName",self.widgets[character + "_leftFkKneePickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_calf_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_calf_r_anim.buttonName",self.widgets[character + "_rightFkKneePickerButton"], type = "string") else: cmds.select(character + ":" + "fk_calf_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_calf_r_anim.buttonName",self.widgets[character + "_rightFkKneePickerButton"], type = "string") except: pass #fk ankles try: if cmds.objExists(character + ":" + "fk_foot_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_foot_l_anim.buttonName",self.widgets[character + "_leftFkAnklePickerButton"], type = "string") else: cmds.select(character + ":" + "fk_foot_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_foot_l_anim.buttonName",self.widgets[character + "_leftFkAnklePickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_foot_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_foot_r_anim.buttonName",self.widgets[character + "_rightFkAnklePickerButton"], type = "string") else: cmds.select(character + ":" + "fk_foot_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_foot_r_anim.buttonName",self.widgets[character + "_rightFkAnklePickerButton"], type = "string") except: pass #fk ball joints try: if cmds.objExists(character + ":" + "fk_ball_l_anim"): if cmds.objExists(character + ":" + "fk_ball_l_anim.buttonName"): cmds.setAttr(character + ":" + "fk_ball_l_anim.buttonName",self.widgets[character + "_leftFkBallPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_ball_l_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_ball_l_anim.buttonName",self.widgets[character + "_leftFkBallPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "fk_ball_r_anim"): if cmds.objExists(character + ":" + "fk_ball_r_anim.buttonName"): cmds.setAttr(character + ":" + "fk_ball_r_anim.buttonName",self.widgets[character + "_rightFkBallPickerButton"], type = "string") else: cmds.select(character + ":" + "fk_ball_r_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "fk_ball_r_anim.buttonName",self.widgets[character + "_rightFkBallPickerButton"], type = "string") except: pass #ik feet try: if cmds.objExists(character + ":" + "ik_foot_anim_l.buttonName"): cmds.setAttr(character + ":" + "ik_foot_anim_l.buttonName",self.widgets[character + "_leftIkFootPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_foot_anim_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_foot_anim_l.buttonName",self.widgets[character + "_leftIkFootPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ik_foot_anim_r.buttonName"): cmds.setAttr(character + ":" + "ik_foot_anim_r.buttonName",self.widgets[character + "_rightIkFootPickerButton"], type = "string") else: cmds.select(character + ":" + "ik_foot_anim_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ik_foot_anim_r.buttonName",self.widgets[character + "_rightIkFootPickerButton"], type = "string") except: pass #ik heels try: if cmds.objExists(character + ":" + "heel_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "heel_ctrl_l.buttonName",self.widgets[character + "_leftIkHeelPickerButton"], type = "string") else: cmds.select(character + ":" + "heel_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "heel_ctrl_l.buttonName",self.widgets[character + "_leftIkHeelPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "heel_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "heel_ctrl_r.buttonName",self.widgets[character + "_rightIkHeelPickerButton"], type = "string") else: cmds.select(character + ":" + "heel_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "heel_ctrl_r.buttonName",self.widgets[character + "_rightIkHeelPickerButton"], type = "string") except: pass #ik toe wiggles try: if cmds.objExists(character + ":" + "toe_wiggle_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "toe_wiggle_ctrl_l.buttonName",self.widgets[character + "_leftIkToeWigglePickerButton"], type = "string") else: cmds.select(character + ":" + "toe_wiggle_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "toe_wiggle_ctrl_l.buttonName",self.widgets[character + "_leftIkToeWigglePickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "toe_wiggle_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "toe_wiggle_ctrl_r.buttonName",self.widgets[character + "_rightIkToeWigglePickerButton"], type = "string") else: cmds.select(character + ":" + "toe_wiggle_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "toe_wiggle_ctrl_r.buttonName",self.widgets[character + "_rightIkToeWigglePickerButton"], type = "string") except: pass #ik toes try: if cmds.objExists(character + ":" + "toe_tip_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "toe_tip_ctrl_l.buttonName",self.widgets[character + "_leftIkToePickerButton"], type = "string") else: cmds.select(character + ":" + "toe_tip_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "toe_tip_ctrl_l.buttonName",self.widgets[character + "_leftIkToePickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "toe_tip_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "toe_tip_ctrl_r.buttonName",self.widgets[character + "_rightIkToePickerButton"], type = "string") else: cmds.select(character + ":" + "toe_tip_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "toe_tip_ctrl_r.buttonName",self.widgets[character + "_rightIkToePickerButton"], type = "string") except: pass #master, offset, root try: if cmds.objExists(character + ":" + "master_anim.buttonName"): cmds.setAttr(character + ":" + "master_anim.buttonName",self.widgets[character + "_masterPickerButton"], type = "string") else: cmds.select(character + ":" + "master_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "master_anim.buttonName",self.widgets[character + "_masterPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "offset_anim.buttonName"): cmds.setAttr(character + ":" + "offset_anim.buttonName",self.widgets[character + "_offsetPickerButton"], type = "string") else: cmds.select(character + ":" + "offset_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "offset_anim.buttonName",self.widgets[character + "_offsetPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "root_anim.buttonName"): cmds.setAttr(character + ":" + "root_anim.buttonName",self.widgets[character + "_rootPickerButton"], type = "string") else: cmds.select(character + ":" + "root_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "root_anim.buttonName",self.widgets[character + "_rootPickerButton"], type = "string") except: pass #upper arm rolls try: if cmds.objExists(character + ":" + "upperarm_l_twist_anim"): if cmds.objExists(character + ":" + "upperarm_l_twist_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_l_twist_anim.buttonName",self.widgets[character + "_leftArmRollPickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_l_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_l_twist_anim.buttonName",self.widgets[character + "_leftArmRollPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "upperarm_l_twist_2_anim"): if cmds.objExists(character + ":" + "upperarm_l_twist_2_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_l_twist_2_anim.buttonName",self.widgets[character + "_leftArmRoll2PickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_l_twist_2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_l_twist_2_anim.buttonName",self.widgets[character + "_leftArmRoll2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "upperarm_l_twist_3_anim"): if cmds.objExists(character + ":" + "upperarm_l_twist_3_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_l_twist_3_anim.buttonName",self.widgets[character + "_leftArmRoll3PickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_l_twist_3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_l_twist_3_anim.buttonName",self.widgets[character + "_leftArmRoll3PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "upperarm_r_twist_anim"): if cmds.objExists(character + ":" + "upperarm_r_twist_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_r_twist_anim.buttonName",self.widgets[character + "_rightArmRollPickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_r_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_r_twist_anim.buttonName",self.widgets[character + "_rightArmRollPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "upperarm_r_twist_2_anim"): if cmds.objExists(character + ":" + "upperarm_r_twist_2_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_r_twist_2_anim.buttonName",self.widgets[character + "_rightArmRoll2PickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_r_twist_2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_r_twist_2_anim.buttonName",self.widgets[character + "_rightArmRoll2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "upperarm_r_twist_3_anim"): if cmds.objExists(character + ":" + "upperarm_r_twist_3_anim.buttonName"): cmds.setAttr(character + ":" + "upperarm_r_twist_3_anim.buttonName",self.widgets[character + "_rightArmRoll3PickerButton"], type = "string") else: cmds.select(character + ":" + "upperarm_r_twist_3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "upperarm_r_twist_3_anim.buttonName",self.widgets[character + "_rightArmRoll3PickerButton"], type = "string") except: pass #lower arm rolls try: if cmds.objExists(character + ":" + "lowerarm_l_twist_anim"): if cmds.objExists(character + ":" + "lowerarm_l_twist_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_l_twist_anim.buttonName",self.widgets[character + "_leftForeTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_l_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_l_twist_anim.buttonName",self.widgets[character + "_leftForeTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "lowerarm_l_twist2_anim"): if cmds.objExists(character + ":" + "lowerarm_l_twist2_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_l_twist2_anim.buttonName",self.widgets[character + "_leftForeTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_l_twist2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_l_twist2_anim.buttonName",self.widgets[character + "_leftForeTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "lowerarm_l_twist3_anim"): if cmds.objExists(character + ":" + "lowerarm_l_twist3_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_l_twist3_anim.buttonName",self.widgets[character + "_leftForeTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_l_twist3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_l_twist3_anim.buttonName",self.widgets[character + "_leftForeTwist3PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "lowerarm_r_twist_anim"): if cmds.objExists(character + ":" + "lowerarm_r_twist_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_r_twist_anim.buttonName",self.widgets[character + "_rightForeTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_r_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_r_twist_anim.buttonName",self.widgets[character + "_rightForeTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "lowerarm_r_twist2_anim"): if cmds.objExists(character + ":" + "lowerarm_r_twist2_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_r_twist2_anim.buttonName",self.widgets[character + "_rightForeTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_r_twist2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_r_twist2_anim.buttonName",self.widgets[character + "_rightForeTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "lowerarm_r_twist3_anim"): if cmds.objExists(character + ":" + "lowerarm_r_twist3_anim.buttonName"): cmds.setAttr(character + ":" + "lowerarm_r_twist3_anim.buttonName",self.widgets[character + "_rightForeTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "lowerarm_r_twist3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "lowerarm_r_twist3_anim.buttonName",self.widgets[character + "_rightForeTwist3PickerButton"], type = "string") except: pass #thigh twists try: if cmds.objExists(character + ":" + "l_thigh_twist_01_anim"): if cmds.objExists(character + ":" + "l_thigh_twist_01_anim.buttonName"): cmds.setAttr(character + ":" + "l_thigh_twist_01_anim.buttonName",self.widgets[character + "_leftThighTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "l_thigh_twist_01_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "l_thigh_twist_01_anim.buttonName",self.widgets[character + "_leftThighTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "l_thigh_twist_02_anim"): if cmds.objExists(character + ":" + "l_thigh_twist_02_anim.buttonName"): cmds.setAttr(character + ":" + "l_thigh_twist_02_anim.buttonName",self.widgets[character + "_leftThighTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "l_thigh_twist_02_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "l_thigh_twist_02_anim.buttonName",self.widgets[character + "_leftThighTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "l_thigh_twist_03_anim"): if cmds.objExists(character + ":" + "l_thigh_twist_03_anim.buttonName"): cmds.setAttr(character + ":" + "l_thigh_twist_03_anim.buttonName",self.widgets[character + "_leftThighTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "l_thigh_twist_03_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "l_thigh_twist_03_anim.buttonName",self.widgets[character + "_leftThighTwist3PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "r_thigh_twist_01_anim"): if cmds.objExists(character + ":" + "r_thigh_twist_01_anim.buttonName"): cmds.setAttr(character + ":" + "r_thigh_twist_01_anim.buttonName",self.widgets[character + "_rightThighTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "r_thigh_twist_01_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "r_thigh_twist_01_anim.buttonName",self.widgets[character + "_rightThighTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "r_thigh_twist_02_anim"): if cmds.objExists(character + ":" + "r_thigh_twist_02_anim.buttonName"): cmds.setAttr(character + ":" + "r_thigh_twist_02_anim.buttonName",self.widgets[character + "_rightThighTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "r_thigh_twist_02_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "r_thigh_twist_02_anim.buttonName",self.widgets[character + "_rightThighTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "r_thigh_twist_03_anim"): if cmds.objExists(character + ":" + "r_thigh_twist_03_anim.buttonName"): cmds.setAttr(character + ":" + "r_thigh_twist_03_anim.buttonName",self.widgets[character + "_rightThighTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "r_thigh_twist_03_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "r_thigh_twist_03_anim.buttonName",self.widgets[character + "_rightThighTwist3PickerButton"], type = "string") except: pass #calf twists try: if cmds.objExists(character + ":" + "calf_l_twist_anim"): if cmds.objExists(character + ":" + "calf_l_twist_anim.buttonName"): cmds.setAttr(character + ":" + "calf_l_twist_anim.buttonName",self.widgets[character + "_leftCalfTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "calf_l_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_l_twist_anim.buttonName",self.widgets[character + "_leftCalfTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "calf_l_twist2_anim"): if cmds.objExists(character + ":" + "calf_l_twist2_anim.buttonName"): cmds.setAttr(character + ":" + "calf_l_twist2_anim.buttonName",self.widgets[character + "_leftCalfTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "calf_l_twist2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_l_twist2_anim.buttonName",self.widgets[character + "_leftCalfTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "calf_l_twist3_anim"): if cmds.objExists(character + ":" + "calf_l_twist3_anim.buttonName"): cmds.setAttr(character + ":" + "calf_l_twist3_anim.buttonName",self.widgets[character + "_leftCalfTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "calf_l_twist3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_l_twist3_anim.buttonName",self.widgets[character + "_leftCalfTwist3PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "calf_r_twist_anim"): if cmds.objExists(character + ":" + "calf_r_twist_anim.buttonName"): cmds.setAttr(character + ":" + "calf_r_twist_anim.buttonName",self.widgets[character + "_rightCalfTwistPickerButton"], type = "string") else: cmds.select(character + ":" + "calf_r_twist_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_r_twist_anim.buttonName",self.widgets[character + "_rightCalfTwistPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "calf_r_twist2_anim"): if cmds.objExists(character + ":" + "calf_r_twist2_anim.buttonName"): cmds.setAttr(character + ":" + "calf_r_twist2_anim.buttonName",self.widgets[character + "_rightCalfTwist2PickerButton"], type = "string") else: cmds.select(character + ":" + "calf_r_twist2_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_r_twist2_anim.buttonName",self.widgets[character + "_rightCalfTwist2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "calf_r_twist3_anim"): if cmds.objExists(character + ":" + "calf_r_twist3_anim.buttonName"): cmds.setAttr(character + ":" + "calf_r_twist3_anim.buttonName",self.widgets[character + "_rightCalfTwist3PickerButton"], type = "string") else: cmds.select(character + ":" + "calf_r_twist3_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "calf_r_twist3_anim.buttonName",self.widgets[character + "_rightCalfTwist3PickerButton"], type = "string") except: pass #left pinky finger try: if cmds.objExists(character + ":" + "pinky_metacarpal_ctrl_l"): if cmds.objExists(character + ":" + "pinky_metacarpal_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "pinky_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftPinkyMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_metacarpal_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftPinkyMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_1_l"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_1_l.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftPinky1PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_1_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftPinky1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_2_l"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_2_l.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftPinky2PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_2_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftPinky2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_3_l"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_3_l.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftPinky3PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_3_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftPinky3PickerButton"], type = "string") except: pass #left ring finger try: if cmds.objExists(character + ":" + "ring_metacarpal_ctrl_l"): if cmds.objExists(character + ":" + "ring_metacarpal_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "ring_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftRingMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_metacarpal_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftRingMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_1_l"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_1_l.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftRing1PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_1_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftRing1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_2_l"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_2_l.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftRing2PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_2_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftRing2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_3_l"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_3_l.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftRing3PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_3_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftRing3PickerButton"], type = "string") except: pass #left middle finger try: if cmds.objExists(character + ":" + "middle_metacarpal_ctrl_l"): if cmds.objExists(character + ":" + "middle_metacarpal_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "middle_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftMiddleMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_metacarpal_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftMiddleMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_1_l"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_1_l.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftMiddle1PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_1_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftMiddle1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_2_l"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_2_l.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftMiddle2PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_2_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftMiddle2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_3_l"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_3_l.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftMiddle3PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_3_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftMiddle3PickerButton"], type = "string") except: pass #left index finger try: if cmds.objExists(character + ":" + "index_metacarpal_ctrl_l"): if cmds.objExists(character + ":" + "index_metacarpal_ctrl_l.buttonName"): cmds.setAttr(character + ":" + "index_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftIndexMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "index_metacarpal_ctrl_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_metacarpal_ctrl_l.buttonName",self.widgets[character + "_leftIndexMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_1_l"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_1_l.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftIndex1PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_1_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftIndex1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_2_l"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_2_l.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftIndex2PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_2_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftIndex2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_3_l"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_3_l.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftIndex3PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_3_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftIndex3PickerButton"], type = "string") except: pass #left thumb finger try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_1_l"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_1_l.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftThumb1PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_1_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_1_l.buttonName",self.widgets[character + "_leftThumb1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_2_l"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_2_l.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftThumb2PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_2_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_2_l.buttonName",self.widgets[character + "_leftThumb2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_3_l"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_3_l.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftThumb3PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_3_l") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_3_l.buttonName",self.widgets[character + "_leftThumb3PickerButton"], type = "string") except: pass #left IK fingers try: if cmds.objExists(character + ":" + "index_l_ik_anim"): if cmds.objExists(character + ":" + "index_l_ik_anim.buttonName"): cmds.setAttr(character + ":" + "index_l_ik_anim.buttonName",self.widgets[character + "_leftIndexFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "index_l_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_l_ik_anim.buttonName",self.widgets[character + "_leftIndexFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_l_ik_anim"): if cmds.objExists(character + ":" + "middle_l_ik_anim.buttonName"): cmds.setAttr(character + ":" + "middle_l_ik_anim.buttonName",self.widgets[character + "_leftMiddleFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_l_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_l_ik_anim.buttonName",self.widgets[character + "_leftMiddleFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_l_ik_anim"): if cmds.objExists(character + ":" + "ring_l_ik_anim.buttonName"): cmds.setAttr(character + ":" + "ring_l_ik_anim.buttonName",self.widgets[character + "_leftRingFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_l_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_l_ik_anim.buttonName",self.widgets[character + "_leftRingFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_l_ik_anim"): if cmds.objExists(character + ":" + "pinky_l_ik_anim.buttonName"): cmds.setAttr(character + ":" + "pinky_l_ik_anim.buttonName",self.widgets[character + "_leftPinkyFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_l_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_l_ik_anim.buttonName",self.widgets[character + "_leftPinkyFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_l_ik_anim"): if cmds.objExists(character + ":" + "thumb_l_ik_anim.buttonName"): cmds.setAttr(character + ":" + "thumb_l_ik_anim.buttonName",self.widgets[character + "_leftThumbFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_l_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_l_ik_anim.buttonName",self.widgets[character + "_leftThumbFingerIKPickerButton"], type = "string") except: pass #left IK finger PVs try: if cmds.objExists(character + ":" + "index_l_ik_anim"): if cmds.objExists(character + ":" + "index_l_poleVector.buttonName"): cmds.setAttr(character + ":" + "index_l_poleVector.buttonName",self.widgets[character + "_leftIndexIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "index_l_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_l_poleVector.buttonName",self.widgets[character + "_leftIndexIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_l_ik_anim"): if cmds.objExists(character + ":" + "middle_l_poleVector.buttonName"): cmds.setAttr(character + ":" + "middle_l_poleVector.buttonName",self.widgets[character + "_leftMiddleIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_l_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_l_poleVector.buttonName",self.widgets[character + "_leftMiddleIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_l_ik_anim"): if cmds.objExists(character + ":" + "ring_l_poleVector.buttonName"): cmds.setAttr(character + ":" + "ring_l_poleVector.buttonName",self.widgets[character + "_leftRingIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_l_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_l_poleVector.buttonName",self.widgets[character + "_leftRingIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_l_ik_anim"): if cmds.objExists(character + ":" + "pinky_l_poleVector.buttonName"): cmds.setAttr(character + ":" + "pinky_l_poleVector.buttonName",self.widgets[character + "_leftPinkyIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_l_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_l_poleVector.buttonName",self.widgets[character + "_leftPinkyIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_l_ik_anim"): if cmds.objExists(character + ":" + "thumb_l_poleVector.buttonName"): cmds.setAttr(character + ":" + "thumb_l_poleVector.buttonName",self.widgets[character + "_leftThumbIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_l_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_l_poleVector.buttonName",self.widgets[character + "_leftThumbIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "l_global_ik_anim"): if cmds.objExists(character + ":" + "l_global_ik_anim.buttonName"): cmds.setAttr(character + ":" + "l_global_ik_anim.buttonName",self.widgets[character + "_leftIkGlobalCtrlPickerButton"], type = "string") else: cmds.select(character + ":" + "l_global_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "l_global_ik_anim.buttonName",self.widgets[character + "_leftIkGlobalCtrlPickerButton"], type = "string") except: pass #right pinky finger try: if cmds.objExists(character + ":" + "pinky_metacarpal_ctrl_r"): if cmds.objExists(character + ":" + "pinky_metacarpal_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "pinky_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightPinkyMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_metacarpal_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightPinkyMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_1_r"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_1_r.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightPinky1PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_1_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightPinky1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_2_r"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_2_r.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightPinky2PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_2_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightPinky2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_3_r"): if cmds.objExists(character + ":" + "pinky_finger_fk_ctrl_3_r.buttonName"): cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightPinky3PickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_finger_fk_ctrl_3_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightPinky3PickerButton"], type = "string") except: pass #right ring finger try: if cmds.objExists(character + ":" + "ring_metacarpal_ctrl_r"): if cmds.objExists(character + ":" + "ring_metacarpal_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "ring_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightRingMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_metacarpal_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightRingMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_1_r"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_1_r.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightRing1PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_1_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightRing1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_2_r"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_2_r.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightRing2PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_2_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightRing2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_3_r"): if cmds.objExists(character + ":" + "ring_finger_fk_ctrl_3_r.buttonName"): cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightRing3PickerButton"], type = "string") else: cmds.select(character + ":" + "ring_finger_fk_ctrl_3_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightRing3PickerButton"], type = "string") except: pass #right middle finger try: if cmds.objExists(character + ":" + "middle_metacarpal_ctrl_r"): if cmds.objExists(character + ":" + "middle_metacarpal_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "middle_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightMiddleMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_metacarpal_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightMiddleMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_1_r"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_1_r.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightMiddle1PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_1_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightMiddle1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_2_r"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_2_r.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightMiddle2PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_2_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightMiddle2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_3_r"): if cmds.objExists(character + ":" + "middle_finger_fk_ctrl_3_r.buttonName"): cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightMiddle3PickerButton"], type = "string") else: cmds.select(character + ":" + "middle_finger_fk_ctrl_3_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightMiddle3PickerButton"], type = "string") except: pass #right index finger try: if cmds.objExists(character + ":" + "index_metacarpal_ctrl_r"): if cmds.objExists(character + ":" + "index_metacarpal_ctrl_r.buttonName"): cmds.setAttr(character + ":" + "index_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightIndexMetacarpalPickerButton"], type = "string") else: cmds.select(character + ":" + "index_metacarpal_ctrl_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_metacarpal_ctrl_r.buttonName",self.widgets[character + "_rightIndexMetacarpalPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_1_r"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_1_r.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightIndex1PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_1_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightIndex1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_2_r"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_2_r.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightIndex2PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_2_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightIndex2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "index_finger_fk_ctrl_3_r"): if cmds.objExists(character + ":" + "index_finger_fk_ctrl_3_r.buttonName"): cmds.setAttr(character + ":" + "index_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightIndex3PickerButton"], type = "string") else: cmds.select(character + ":" + "index_finger_fk_ctrl_3_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightIndex3PickerButton"], type = "string") except: pass #right thumb finger try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_1_r"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_1_r.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightThumb1PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_1_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_1_r.buttonName",self.widgets[character + "_rightThumb1PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_2_r"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_2_r.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightThumb2PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_2_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_2_r.buttonName",self.widgets[character + "_rightThumb2PickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_3_r"): if cmds.objExists(character + ":" + "thumb_finger_fk_ctrl_3_r.buttonName"): cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightThumb3PickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_finger_fk_ctrl_3_r") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_finger_fk_ctrl_3_r.buttonName",self.widgets[character + "_rightThumb3PickerButton"], type = "string") except: pass #right IK fingers try: if cmds.objExists(character + ":" + "index_r_ik_anim"): if cmds.objExists(character + ":" + "index_r_ik_anim.buttonName"): cmds.setAttr(character + ":" + "index_r_ik_anim.buttonName",self.widgets[character + "_rightIndexFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "index_r_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_r_ik_anim.buttonName",self.widgets[character + "_rightIndexFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_r_ik_anim"): if cmds.objExists(character + ":" + "middle_r_ik_anim.buttonName"): cmds.setAttr(character + ":" + "middle_r_ik_anim.buttonName",self.widgets[character + "_rightMiddleFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_r_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_r_ik_anim.buttonName",self.widgets[character + "_rightMiddleFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_r_ik_anim"): if cmds.objExists(character + ":" + "ring_r_ik_anim.buttonName"): cmds.setAttr(character + ":" + "ring_r_ik_anim.buttonName",self.widgets[character + "_rightRingFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_r_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_r_ik_anim.buttonName",self.widgets[character + "_rightRingFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_r_ik_anim"): if cmds.objExists(character + ":" + "pinky_r_ik_anim.buttonName"): cmds.setAttr(character + ":" + "pinky_r_ik_anim.buttonName",self.widgets[character + "_rightPinkyFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_r_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_r_ik_anim.buttonName",self.widgets[character + "_rightPinkyFingerIKPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_r_ik_anim"): if cmds.objExists(character + ":" + "thumb_r_ik_anim.buttonName"): cmds.setAttr(character + ":" + "thumb_r_ik_anim.buttonName",self.widgets[character + "_rightThumbFingerIKPickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_r_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_r_ik_anim.buttonName",self.widgets[character + "_rightThumbFingerIKPickerButton"], type = "string") except: pass #right IK finger PVs try: if cmds.objExists(character + ":" + "index_r_ik_anim"): if cmds.objExists(character + ":" + "index_r_poleVector.buttonName"): cmds.setAttr(character + ":" + "index_r_poleVector.buttonName",self.widgets[character + "_rightIndexIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "index_r_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "index_r_poleVector.buttonName",self.widgets[character + "_rightIndexIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "middle_r_ik_anim"): if cmds.objExists(character + ":" + "middle_r_poleVector.buttonName"): cmds.setAttr(character + ":" + "middle_r_poleVector.buttonName",self.widgets[character + "_rightMiddleIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "middle_r_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "middle_r_poleVector.buttonName",self.widgets[character + "_rightMiddleIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "ring_r_ik_anim"): if cmds.objExists(character + ":" + "ring_r_poleVector.buttonName"): cmds.setAttr(character + ":" + "ring_r_poleVector.buttonName",self.widgets[character + "_rightRingIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "ring_r_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "ring_r_poleVector.buttonName",self.widgets[character + "_rightRingIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "pinky_r_ik_anim"): if cmds.objExists(character + ":" + "pinky_r_poleVector.buttonName"): cmds.setAttr(character + ":" + "pinky_r_poleVector.buttonName",self.widgets[character + "_rightPinkyIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "pinky_r_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "pinky_r_poleVector.buttonName",self.widgets[character + "_rightPinkyIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "thumb_r_ik_anim"): if cmds.objExists(character + ":" + "thumb_r_poleVector.buttonName"): cmds.setAttr(character + ":" + "thumb_r_poleVector.buttonName",self.widgets[character + "_rightThumbIkPvPickerButton"], type = "string") else: cmds.select(character + ":" + "thumb_r_poleVector") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "thumb_r_poleVector.buttonName",self.widgets[character + "_rightThumbIkPvPickerButton"], type = "string") except: pass try: if cmds.objExists(character + ":" + "r_global_ik_anim"): if cmds.objExists(character + ":" + "r_global_ik_anim.buttonName"): cmds.setAttr(character + ":" + "r_global_ik_anim.buttonName",self.widgets[character + "_rightIkGlobalCtrlPickerButton"], type = "string") else: cmds.select(character + ":" + "r_global_ik_anim") cmds.addAttr(ln = "buttonName", dt = "string", keyable = False) cmds.setAttr(character + ":" + "r_global_ik_anim.buttonName",self.widgets[character + "_rightIkGlobalCtrlPickerButton"], type = "string") except: pass