def generate(self): # Generate Leg self.m_legRig = arm.ArmRig( self.m_sceneData, self.m_legJoints, self.m_name, self.m_baseName, self.m_twistAxis, False ) self.m_legRig.setUpperStretchChain( self.m_numUpperControls, self.m_upperStretchJoints, self.m_numUpperJoints ) self.m_legRig.setLowerStretchChain( self.m_numLowerControls, self.m_lowerStretchJoints, self.m_numLowerJoints ) self.m_legRig.generate() rc.addDictToControlDict(self.m_allControls, self.m_legRig.getAllControls()) # Generate Foot self.m_footRig = fr.FootRig( self.m_sceneData, "%s_foot" %(self.m_name), self.m_baseName, self.m_footJoints[0], self.m_toePivot, self.m_heelPivot, self.m_insidePivot, self.m_outsidePivot, self.m_footMain, self.m_legRig.getIKControl(), self.m_legRig.getFKParent(), self.m_legRig.getBINDParent(), self.m_legRig.getAnkleTwist(), self.m_legRig.getBlendControl() ) self.m_footRig.generate() rc.addDictToControlDict(self.m_allControls, self.m_footRig.getAllControls()) cmds.parent(self.m_footRig.getGroup(), self.m_group) #Rig blend control self.m_legRig.rigBlendControl(self.m_footRig.getAnkleJoint()) # Connect up visibility ikVis, fkVis = self.m_legRig.getVisibilityAttrs() cmds.connectAttr( ikVis, "%s.visibility" %(self.m_footRig.m_ikFoot.getGroup()) ) cmds.connectAttr( fkVis, "%s.visibility" %(self.m_footRig.m_fkFoot.getGroup()) )
def generate(self): # Create IK self.m_ikJoints = self.duplicateJoints(self.m_topJoint, "IK") rc.addToLayer(self.m_sceneData, "ref", self.m_ikJoints[0]) self.m_ikFoot = IKFoot.IKFootRig( self.m_sceneData, "%s_IK" %(self.m_name), self.m_baseName, self.m_ikJoints, self.m_footToePivot, self.m_footHeelPivot, self.m_footInsidePivot, self.m_footOutsidePivot, self.m_footMain, self.m_ankleIK ) self.m_ikFoot.generate() cmds.parent(self.m_ikFoot.getGroup(), self.m_group) # Create FK self.m_fkJoints = self.duplicateJoints(self.m_topJoint, "FK") rc.addToLayer(self.m_sceneData, "ref", self.m_fkJoints[0]) self.m_fkFoot = FKFoot.FKFootRig( self.m_sceneData, "%s_FK" %(self.m_name), self.m_baseName, self.m_fkJoints, self.m_footMain, self.m_parentFK ) self.m_fkFoot.generate() cmds.parent(self.m_fkFoot.getGroup(), self.m_group) # Create BIND self.m_bindJoints = self.duplicateJoints( self.m_topJoint, "BIND" ) rc.addToLayer(self.m_sceneData, "ref", self.m_bindJoints[0]) bindGroups = rg.add3Groups( self.m_bindJoints[0], ["_SDK", "_CONST", "_0"] ) cmds.parent(bindGroups[-1], self.m_group) self.connectBind() # connect to parent cmds.parentConstraint(self.m_parentBIND, bindGroups[-1], mo=1) # connect to parent twist # Strip constraint targetList = cmds.parentConstraint(self.m_parentTwist, q=1, tl=1) try: cmds.parentConstraint(targetList, self.m_parentTwist, e=True, rm=True) except: print "Warning couldn't remove constraint when creating foot attachment" # Add new constraint cmds.parentConstraint(self.m_bindJoints[0], self.m_parentTwist, mo=1) # Add to sets rc.addToSet(self.m_sceneData, "bind", self.m_bindJoints) # Add to controls rc.addDictToControlDict(self.m_allControls, self.m_ikFoot.getAllControls()) rc.addDictToControlDict(self.m_allControls, self.m_fkFoot.getAllControls())
def generate(self): cmds.cycleCheck(e=False) # -- Duplicate joints and rename for IK-FK switch --- # self.m_bindJoints = self.duplicateJoints(self.m_startJoints, "BIND") rc.addToLayer(self.m_sceneData, "ref", self.m_bindJoints[0]) self.m_ikJoints = self.duplicateJoints(self.m_startJoints, "IK") rc.addToLayer(self.m_sceneData, "ref", self.m_ikJoints[0]) self.m_fkJoints = self.duplicateJoints(self.m_startJoints, "FK") rc.addToLayer(self.m_sceneData, "ref", self.m_fkJoints[0]) # -- Create shoulder locator -- # self.m_shoulderLocator = self.m_name+"_shoulder_CTRL" self.m_shoulderLocator = cmds.spaceLocator(n=self.m_shoulderLocator)[0] rc.addToLayer(self.m_sceneData, "detailCtrl", self.m_shoulderLocator) rc.orientControl(self.m_shoulderLocator, self.m_startJoints.m_shoulder) shoulderGRPs = rg.add3Groups( self.m_shoulderLocator, ["_SDK", "_CONST", "_0"] ) cmds.parent(shoulderGRPs[-1], self.m_group) # -- Setup FK rig -- # tmpList = self.m_fkJoints.getJointList() self.m_fkRig = fk.FKArmRig(self.m_sceneData, tmpList, self.m_name+"_FK", self.m_baseName) self.m_fkRig.generate() cmds.parent(self.m_fkRig.m_group, self.m_group) cmds.parentConstraint( self.m_shoulderLocator, self.m_fkRig.getMainTransform(), mo=True ) # -- Setup IK rig -- # tmpList = self.m_ikJoints.getJointList() self.m_ikRig = ik.IKArmRig( self.m_sceneData, tmpList, self.m_name+"_IK", self.m_baseName, self.m_isMirrored, self.m_twistAxis ) self.m_ikRig.generate() cmds.parent(self.m_ikRig.m_group, self.m_group) cmds.pointConstraint( self.m_shoulderLocator, self.m_ikRig.getMainTransform(), mo=True ) # -- Setup BIND rig -- # tmpList = self.m_bindJoints.getJointList() self.m_bindRig = bind.BINDArmRig( self.m_sceneData, tmpList, self.m_name+"_BIND", self.m_baseName, self.m_blendControl, self.m_numUpperControls, self.m_numLowerControls, self.m_numUpperJoints, self.m_numLowerJoints, self.m_upperStretchJoints, self.m_lowerStretchJoints, self.m_isMirrored, self.m_twistAxis, self.m_rigWrist ) self.m_bindRig.generate() cmds.parent(self.m_bindRig.m_group, self.m_group) cmds.pointConstraint( self.m_shoulderLocator, self.m_bindRig.getMainTransform(), mo=True ) # rig the blend control for aestethics if self.m_rigWrist: self.rigBlendControl(self.m_bindRig.getWristCtrl()) # -- Connect up rigs -- # try: tmp = self.m_blendControl except: self.m_blendControl = self.createBlendControl() self.connectIKFK() # -- Setup visibility -- # self.setupVisibility() cmds.cycleCheck(e=True) # Add all controls rc.addToControlDict( self.m_allControls, "%s_shoulderLocator" %(self.m_baseName), self.m_shoulderLocator ) rc.addDictToControlDict(self.m_allControls, self.m_fkRig.getAllControls()) rc.addDictToControlDict(self.m_allControls, self.m_ikRig.getAllControls()) rc.addDictToControlDict(self.m_allControls, self.m_bindRig.getAllControls()) self.m_isGenerated = True
def setupStretch(self): #Create the bendy bits self.m_upperStretch = chain.StretchChain( self.m_sceneData, self.m_joints.m_shoulder, self.m_elbowTwistJoints[0], #self.m_joints.m_elbow1,# self.m_name+"_upperStretch", "%s_upperStretch" %(self.m_baseName), self.m_numLowerControls, self.m_numUpperJoints ) self.m_upperStretch.setMirroring(self.m_isMirrored) self.m_upperStretch.setBendFromParent(False) self.m_upperStretch.setBlendControl(self.m_controlObject) self.m_upperStretch.setBlendAttrName("upperBend") self.m_upperStretch.setSquetchAttrName("upperSquetchiness") self.m_upperStretch.setSquetchBoolAttrName("upperSquetchOnOff") self.m_upperStretch.setAttrHeading("UPPER") self.m_upperStretch.setTwistAxis(self.m_twistAxis) self.m_upperStretch.setBindJoints(self.m_upperStretchJoints) self.m_upperStretch.setIsParentTwist(False) self.m_upperArmGRP = self.m_upperStretch.generate() cmds.parent(self.m_upperArmGRP, self.m_group) self.m_lowerStretch = chain.StretchChain( self.m_sceneData, self.m_elbowTwistJoints[1], #self.m_joints.m_elbow1,# self.m_joints.m_wrist, self.m_name+"_lowerStretch", "%s_lowerStretch" %(self.m_baseName), self.m_numLowerControls, self.m_numLowerJoints ) self.m_lowerStretch.setMirroring(self.m_isMirrored) self.m_lowerStretch.setBlendControl(self.m_controlObject) self.m_lowerStretch.setBlendAttrName("lowerBend") self.m_lowerStretch.setSquetchAttrName("lowerSquetchiness") self.m_lowerStretch.setSquetchBoolAttrName("lowerSquetchOnOff") self.m_lowerStretch.setAttrHeading("LOWER") self.m_lowerStretch.setTwistAxis(self.m_twistAxis) self.m_lowerStretch.setBindJoints(self.m_lowerStretchJoints) self.m_lowerStretch.setIsParentTwist(False) self.m_lowerArmGRP = self.m_lowerStretch.generate() cmds.parent(self.m_lowerArmGRP, self.m_group) # Sort out twist controls (parenting) lowerTwistControls = self.m_lowerStretch.getTwistControls() upperTwistControls = self.m_upperStretch.getTwistControls() # --- connect up elbow twists cmds.parentConstraint(upperTwistControls[1], "%s_CONST" %(lowerTwistControls[0])) # --- parent elbow twist to bind joint cmds.parentConstraint(self.m_joints.m_elbow1, "%s_CONST" %(upperTwistControls[1]), mo=1) # --- parent wrist twist to bind joint cmds.parentConstraint(self.m_joints.m_wrist, "%s_CONST" %(lowerTwistControls[1]), mo=1) # fix elbow twist cmds.aimConstraint(self.m_twistAimConstraint, e=1, wut="object", wuo=upperTwistControls[1]) rc.addDictToControlDict(self.m_allControls, self.m_upperStretch.getAllControls()) rc.addDictToControlDict(self.m_allControls, self.m_lowerStretch.getAllControls()) # Hide unused twist controls rc.addToLayer(self.m_sceneData, "detailCtrl", [lowerTwistControls[1]] + upperTwistControls) rc.addToLayer(self.m_sceneData, "hidden", lowerTwistControls[0])