def rigWrist(self): #Check that shoulder has been done if not self.m_isElbow: self.rigElbow() # --- Wrist --- # self.m_wristCtrl = rc.makeCTRL( self.m_joints.m_wrist, False, False, ["_SDK", "_CONST", "_0"] ) # Sort orientation rc.orientControl(self.m_wristCtrl+"_0", self.m_joints.m_elbow2) rc.copyTranslation(self.m_wristCtrl+"_0", self.m_joints.m_wrist) #Parent for neatness cmds.parent(self.m_wristCtrl+"_0", self.m_elbowCtrl) #Connect up to previous joint cmds.parentConstraint( self.m_joints.m_elbow2, self.m_wristCtrl+"_CONST", mo=1 ) cmds.pointConstraint( self.m_wristCtrl, self.m_joints.m_wrist, skip=["y", "z"] ) rc.lockAttrs( self.m_wristCtrl, ["ty", "tz", "rotate", "scale"], True, False ) # Add to controls rc.addToControlDict(self.m_allControls, "%s_FKWrist" %(self.m_baseName), self.m_wristCtrl) rc.addToLayer(self.m_sceneData, "mainCtrl", self.m_wristCtrl) self.m_isWrist = True
def generateAutoClav(_name, _shoulderSDK, _wristIK): print "doing something" error.assertString(_name) error.assertMayaObject(_shoulderSDK) error.assertMayaObject(_wristIK) cmds.select(clear=True) # Create joints joint1 = cmds.joint(n="%s_IK_JNT" %(_name)) rc.copyTranslation(joint1, _shoulderSDK) joint2 = cmds.joint(n="%s_IKEND_JNT" %(_name)) rc.copyTranslation(joint2, _wristIK) #cmds.parent(joint2, joint1) # Create IK ikControl = cmds.ikHandle( n="%s_IK" %(_name), sol="ikRPsolver", sj= joint1, ee=joint2 )[0] # deselect so we don't get warnings cmds.select(d=1) # Create pole vec locator = cmds.spaceLocator(n="%s_up_LOC" %(_name))[0] rc.orientControl(locator, _wristIK) locGroup = rg.addGroup(locator, "%s_0" %(locator)) cmds.setAttr("%s.ty" %(locator), 2) cmds.poleVectorConstraint(locator, ikControl) # Connect up to rig cmds.pointConstraint(_wristIK, locGroup, mo=1) cmds.pointConstraint(_wristIK, ikControl, mo=1) cmds.orientConstraint(joint1, _shoulderSDK, mo=1)
def generate(self): if self.m_isThumb: names = ["metacarpal", "knuckle", "tip", "tipEND"] else: names = ["metacarpal", "knuckle", "mid", "tip", "tipEND"] i = 0 parentControl = False self.m_controls = [] self.m_stretchControls = [] for joint in self.m_joints: # Create control newStretch = False if joint != self.m_joints[0]: #Create stretch control stretchName = "%s_%s_stretch_CTRL" %(self.m_name, names[i]) newStretch = cmds.spaceLocator(n=stretchName)[0] rc.setMultiAttrs( newStretch, ["localScaleX", "localScaleY", "localScaleZ"], 0.15 ) rc.orientControl(newStretch, cmds.listRelatives(joint, p=1)[0]) rc.copyTranslation(newStretch, joint) if parentControl: cmds.parent(newStretch, parentControl) else: cmds.parent(newStretch, self.m_group) rg.add3Groups( newStretch, ["_SDK", "_CONST", "_0"] ) # lock unused attrs rc.lockAttrs( newStretch, ["ty", "tz", "rotate", "scale"], True, False ) parentControl = newStretch if joint != self.m_joints[-1]: controlName = "%s_%s_CTRL" %(self.m_name, names[i]) newControl = cmds.circle( n=controlName, nr=(1, 0, 0), r=0.1 )[0] rc.orientControl(newControl, joint) if parentControl: cmds.parent(newControl, parentControl) else: cmds.parent(newControl, self.m_group) self.m_controls.append(newControl) groups = rg.add3Groups(newControl, ["_SDK", "_CONST", "_0"]) if newStretch: # Attach to stretch cmds.parentConstraint(newStretch, groups[1], mo=1) # Attach to joint cmds.parentConstraint(newControl, joint, mo=1) rc.lockAttrs( newControl, ["translate", "scale"], True, False ) parentControl = newControl i += 1 else: cmds.parentConstraint(newStretch, joint, mo=1) # Rig metacarpals if not self.m_isThumb: pass self.m_isGenerated = True