def SinglePropRig(Object, referencePositionControl): # if Object.__class__ == list : # elif Object.__class__ in [str,unicode]: GRS = RMGenericRigStructure.genericRigStructure() NameConv = nameConvention.NameConvention() bbMesh = RMRigTools.boundingBoxInfo(Object) CtrlPosition = cmds.xform(referencePositionControl, q=True, rp=True, worldSpace=True) NameList = Object.split(".") cntrlToMeshX = bbMesh.position[0] - CtrlPosition[0] cntrlToMeshY = bbMesh.position[1] - CtrlPosition[1] cntrlToMeshZ = bbMesh.position[2] - CtrlPosition[2] if len(NameList) > 1: Ctrl = RMRigShapeControls.RMCreateCubeLine(bbMesh.lenX, bbMesh.lenY, bbMesh.lenZ, offsetX=-bbMesh.minDistanceToCenterX + cntrlToMeshX, offsetY=-bbMesh.minDistanceToCenterY + bbMesh.lenY / 2 + cntrlToMeshY, offsetZ=-bbMesh.minDistanceToCenterZ + bbMesh.lenZ / 2 + cntrlToMeshZ, name=NameList[1]) joint = cmds.joint(name=NameList[1] + "jnt") else: Ctrl = RMRigShapeControls.RMCreateCubeLine(bbMesh.lenX, bbMesh.lenY, bbMesh.lenZ, offsetX=-bbMesh.minDistanceToCenterX + cntrlToMeshX, offsetY=-bbMesh.minDistanceToCenterY + bbMesh.lenY / 2 + cntrlToMeshY, offsetZ=-bbMesh.minDistanceToCenterZ + bbMesh.lenZ / 2 + cntrlToMeshZ, name=NameList[0] + "Ctrl") joint = cmds.joint(name=NameList[0] + "jnt") Ctrl = NameConv.rename_name_in_format(Ctrl, {'objectType': "control"}) ResetGroup = RMRigTools.RMCreateGroupOnObj(Ctrl) cmds.parent(ResetGroup, GRS.groups["controls"]["group"]) rigJntGrp = cmds.ls("*SimpleRigJoints*") if len(rigJntGrp) == 0: jointGroup = cmds.group(empty=True, name="SimpleRigJoints") jointGroup = NameConv.rename_name_in_format(jointGroup, {}) cmds.parent(jointGroup, GRS.groups["rig"]['group']) else: jointGroup = rigJntGrp RMRigTools.RMAlign(referencePositionControl, ResetGroup, 3) joint = NameConv.rename_name_in_format(joint, {}) RMRigTools.RMAlign(referencePositionControl, joint, 3) ResetJoint = RMRigTools.RMCreateGroupOnObj(joint) cmds.parent(ResetJoint, jointGroup) # if cmds.objExists # for eachObject in Object: cmds.select(clear=True) cmds.select(Object) cmds.select(joint, add=True) cmds.skinCluster() cmds.parentConstraint(Ctrl, joint)
def SpiralOfPoints(initRadius,endRadius,turns,numberOfPoints): loc1 = cmds.spaceLocator() loc2 = cmds.spaceLocator() cmds.parent (loc2[0],loc1[0]) cmds.setAttr(loc2[0]+".translateX",float(initRadius)) groupPoints=cmds.group(empty=True) degreeTurns = float(turns * 360) degreeStep = float(degreeTurns)/ (numberOfPoints-1) posStep = (float(initRadius) - float(endRadius)) / (numberOfPoints-1) spcLocArray=[] startRot=0.0 startPos = float(initRadius) for point in range(0,numberOfPoints): NewLoc = cmds.spaceLocator() spcLocArray.append(NewLoc[0]) RMRigTools.RMAlign(loc2[0] , spcLocArray[point] ,3) startPos += (-posStep) cmds.setAttr (loc2[0] + ".translateX" ,startPos) startRot += degreeStep cmds.setAttr (loc1[0] + ".rotateZ" ,startRot) cmds.parent ( NewLoc,groupPoints) jointArray = mel.eval( '''source "RMRigTools.mel";\nsource "RMRigShapeControls.mel";\n RMCreateBonesAtPoints( ''' + melstringArray(spcLocArray) + ''');''') control = mel.eval('''RMCreaControl("'''+spcLocArray[0] + '''",'''+ str(float(endRadius)) + ''');''') cmds.addAttr(control, longName = "unfold", keyable = True, hasMinValue = True, hasMaxValue = True, maxValue = 10, minValue = 0) unfoldStep = 10.0 / numberOfPoints currentStep = 0.0 for joints in jointArray: currentrot = cmds.joint(joints,q=True,orientation=True) RMRigTools.connectWithLimits(control+".unfold",joints + ".rotateZ",[[currentStep,0],[currentStep + unfoldStep,abs(currentrot[2])]]) currentStep = currentStep + unfoldStep
def CreateBookRig(self, AffectedObject): affected = AffectedObject self.widthValue = RMRigTools.RMPointDistance(self.width, self.origin) self.heightValue = RMRigTools.RMPointDistance(self.height, self.origin) parentGroup = cmds.group(empty=True, name="BookRig") self.NameConv.default_names["System"] = parentGroup RMRigTools.RMAlign(self.origin, parentGroup, 3) cmds.select(affected) self.flare2, self.flareHandle2 = cmds.nonLinear(type='flare', lowBound=0, highBound=self.widthValue, name="FlareLeafsThick") self.flare2 = self.NameConv.rename_name_in_format(self.flare2) self.flareHandle2 = self.NameConv.rename_name_in_format(self.flareHandle2) RMRigTools.RMAlign(self.origin, self.flareHandle2, 3) cmds.xform(self.flareHandle2, objectSpace=True, rotation=[180, 0, 90]) cmds.setAttr(self.flareHandle2 + ".scale", 1, 1, 1) cmds.select(affected) self.flare, self.flareHandle = cmds.nonLinear(type='flare', lowBound=0, highBound=self.heightValue, name="FlareBorderRefinement") # endFlareX self.flare = self.NameConv.rename_name_in_format(self.flare) self.flareHandle = self.NameConv.rename_name_in_format(self.flareHandle) RMRigTools.RMAlign(self.origin, self.flareHandle, 3) cmds.setAttr(self.flareHandle + ".scale", 1, 1, 1) cmds.xform(self.flareHandle, objectSpace=True, translation=[self.widthValue / 2, 0, 0]) cmds.select(affected) self.bendSpread, self.bendHandleSpread = cmds.nonLinear(type='bend', lowBound=-self.widthValue, highBound=self.widthValue, curvature=0, name="bendSpread") # curvature self.bendSpread = self.NameConv.rename_name_in_format(self.bendSpread) self.bendHandleSpread = self.NameConv.rename_name_in_format(self.bendHandleSpread) RMRigTools.RMAlign(self.origin, self.bendHandleSpread, 3) cmds.xform(self.bendHandleSpread, objectSpace=True, rotation=[0, 0, 90]) cmds.setAttr(self.bendHandleSpread + ".scale", 1, 1, 1) cmds.select(affected) # self.bendMidle, self.bendHandleMiddle = cmds.nonLinear(type = 'bend', lowBound = 0 , highBound = self.heightValue / 2 , curvature = 0,name = "bendCenter")#curvature Hight Bound self.bendMidle, self.bendHandleMiddle = cmds.nonLinear(type='bend', lowBound=0, highBound=1, curvature=0, name="bendCenter") # curvature Hight Bound self.bendMidle = self.NameConv.rename_name_in_format(self.bendMidle) self.bendHandleMiddle = self.NameConv.rename_name_in_format(self.bendHandleMiddle) RMRigTools.RMAlign(self.origin, self.bendHandleMiddle, 3) cmds.setAttr(self.bendHandleMiddle + ".scale", 1, 1, 1) cmds.xform(self.bendHandleMiddle, objectSpace=True, translation=[0, self.heightValue / 2, 0]) cmds.select(affected) # self.bendOpen, self.bendHandleOpen = cmds.nonLinear(type = 'bend', lowBound = 0 , highBound = self.heightValue / 2 , curvature = 0,name = "bendOpen")#curvature Hight Bound self.bendOpen, self.bendHandleOpen = cmds.nonLinear(type='bend', lowBound=0, highBound=1, curvature=0, name="bendOpen") # curvature Hight Bound self.bendOpen = self.NameConv.rename_name_in_format(self.bendOpen) self.bendHandleOpen = self.NameConv.rename_name_in_format(self.bendHandleOpen) RMRigTools.RMAlign(self.origin, self.bendHandleOpen, 3) cmds.setAttr(self.bendHandleOpen + ".scale", 1, 1, 1) cmds.select(affected) # self.bendOpen, self.bendHandleOpen = cmds.nonLinear(type = 'bend', lowBound = 0 , highBound = self.heightValue / 2 , curvature = 0,name = "bendOpen")#curvature Hight Bound # self.bendOpenOposit, self.bendHandleOpenOposit = cmds.nonLinear(type = 'bend', lowBound = 0 , highBound = 1 , curvature = 0,name = "bendOpenOposit")#curvature Hight Bound # self.bendOpenOposit = self.NameConv.RMRenameNameInFormat(self.bendOpenOposit) # self.bendHandleOpenOposit = self.NameConv.RMRenameNameInFormat(self.bendHandleOpenOposit) # RMRigTools.RMAlign(self.origin, self.bendHandleOpenOposit,3) # cmds.setAttr(self.bendHandleOpenOposit + ".scale", 1 , 1 , 1) self.centerBendLocator = cmds.spaceLocator(name="centerBend")[0] self.centerBendLocator = self.NameConv.rename_name_in_format(self.centerBendLocator) RMRigTools.RMAlign(self.bendHandleMiddle, self.centerBendLocator, 3) cmds.parent(self.bendHandleMiddle, self.centerBendLocator) cmds.parent(self.centerBendLocator, parentGroup) # cmds.xform( self.bendHandleOpen , objectSpace = True, translation = [self.widthValue,0,0]) # cmds.xform( self.bendHandleOpenOposit , objectSpace = True, translation = [-self.widthValue,0,0]) cmds.connectAttr(self.bendHandleOpen + ".scaleX", self.centerBendLocator + ".translateY") # cmds.connectAttr(self.bendHandleOpen+".scale",self.bendHandleOpenOposit+".scale") cmds.parent(self.bendHandleOpen, parentGroup) # cmds.parent( self.bendHandleOpenOposit, parentGroup ) cmds.parent(self.flareHandle, parentGroup) cmds.parent(self.bendHandleSpread, parentGroup) cmds.parent(self.flareHandle2, parentGroup) ControlResetPoint, Control = RMRigShapeControls.RMCircularControl(self.origin, NameConv=self.NameConv) self.AddAttributes(Control) self.LinkAttributes(Control)
def createTwoPointsLineConstraint(referencePoint01, referencePoint02, OriginObject): groupOrigin = cmds.group(empty=True, name="LineOrigin") resultPoint = cmds.group(empty=True, name="ResultPoint") resultPointConstrained = cmds.group(empty=True, name="ResultPointHeightConstrained") group1 = cmds.group(empty=True, name="LineReferencePoint01") group2 = cmds.group(empty=True, name="LineReferencePoint02") cmds.parentConstraint(referencePoint01, group1, mo=False) cmds.parentConstraint(referencePoint02, group2, mo=False) cmds.parentConstraint(OriginObject, groupOrigin, mo=False) cmds.parent(group1, groupOrigin) cmds.parent(group2, groupOrigin) cmds.parent(resultPoint, groupOrigin) cmds.parent(resultPointConstrained, groupOrigin) RMRigTools.RMAlign(resultPointConstrained, groupOrigin, 3) Substract01 = cmds.shadingNode('plusMinusAverage', asUtility=True, name="LineSubstract01") Substract02 = cmds.shadingNode('plusMinusAverage', asUtility=True, name="LineSubstract02") Substract03 = cmds.shadingNode('plusMinusAverage', asUtility=True, name="LineSubstract03") Divide = cmds.shadingNode('multiplyDivide', asUtility=True, name="LineDivide01") multiply = cmds.shadingNode('multiplyDivide', asUtility=True, name="LineMultiply01") Adition01 = cmds.shadingNode('plusMinusAverage', asUtility=True, name="Adition01") cmds.setAttr("%s.operation" % Substract01, 2) cmds.setAttr("%s.operation" % Substract02, 2) cmds.setAttr("%s.operation" % Substract03, 2) cmds.connectAttr("%s.translateX" % resultPointConstrained, "%s.translateX" % resultPoint) cmds.connectAttr("%s.translateY" % group1, "%s.input1D[0]" % Substract01) cmds.connectAttr("%s.translateY" % group2, "%s.input1D[1]" % Substract01) cmds.connectAttr("%s.translateX" % group1, "%s.input1D[0]" % Substract02) cmds.connectAttr("%s.translateX" % group2, "%s.input1D[1]" % Substract02) cmds.connectAttr("%s.translateX" % resultPoint, "%s.input1D[0]" % Substract03) cmds.connectAttr("%s.translateX" % group2, "%s.input1D[1]" % Substract03) cmds.setAttr("%s.operation" % Divide, 2) cmds.connectAttr("%s.output1D" % Substract03, "%s.input1X" % Divide) cmds.connectAttr("%s.output1D" % Substract02, "%s.input2X" % Divide) cmds.connectAttr("%s.output1D" % Substract01, "%s.input1X" % multiply) cmds.connectAttr("%s.outputX" % Divide, "%s.input2X" % multiply) cmds.connectAttr("%s.outputX" % multiply, "%s.input1D[0]" % Adition01) cmds.connectAttr("%s.translateY" % group2, "%s.input1D[1]" % Adition01) cmds.connectAttr("%s.output1D" % Adition01, "%s.translateY" % resultPoint)
def SetupEyes(self): if cmds.objExists("LEye") and cmds.objExists("REye"): cmds.group(em=True,name="ReyeOrientacion") cmds.group(em=True,name="ReyeBase") cmds.group(em=True,name="ReyeLookAt") cmds.group(em=True,name="ReyePointLookAt") cmds.group(em=True,name="LeyeOrientacion") cmds.group(em=True,name="LeyeBase") cmds.group(em=True,name="LeyeLookAt") cmds.group(em=True,name="LeyePointLookAt") cmds.group(em=True,name="eyeOrientation") RMRigTools.RMAlign("LEye","LeyeBase",3) RMRigTools.RMAlign("LEye","LeyeOrientacion",3) RMRigTools.RMAlign("LEye","LeyeLookAt",3) RMRigTools.RMAlign("LEye","LeyePointLookAt",3) cmds.move(10,"LeyePointLookAt",moveZ=True) EyeParent = cmds.listRelatives("LEye",parent=True) cmds.parent("LeyeBase",EyeParent) cmds.parent("LeyeLookAt","LeyeBase") cmds.parent("LeyeOrientacion","LeyeLookAt") cmds.aimConstraint("LeyePointLookAt","LeyeLookAt",worldUpObject="eyeOrientation",worldUpType="objectrotation") cmds.expression(name = "LEyeExpresionX",unitConversion = "none") script = "LeyeOrientacion.rotateY = (Character_LF_Ojo_Ctrl_fc.translateX * 4 + Character_MD_OjoRectangle_ctrl_fc.translateX * 4)/10" cmds.expression("LEyeExpresionX",edit=True, string=script,unitConversion = "none") cmds.expression(name = "LEyeExpresionY",unitConversion = "none") script = "LeyeOrientacion.rotateZ = (Character_LF_Ojo_Ctrl_fc.translateY * 4 + Character_MD_OjoRectangle_ctrl_fc.translateY * 4)/10" cmds.expression("LEyeExpresionY",edit=True, string=script,unitConversion = "none") RMRigTools.RMAlign("REye","ReyeBase",3) RMRigTools.RMAlign("REye","ReyeOrientacion",3) RMRigTools.RMAlign("REye","ReyeLookAt",3) RMRigTools.RMAlign("REye","ReyePointLookAt",3) cmds.move(10,"ReyePointLookAt",moveZ=True) EyeParent = cmds.listRelatives("REye",parent=True) cmds.parent("ReyeBase",EyeParent) cmds.parent("ReyeLookAt","ReyeBase") cmds.parent("ReyeOrientacion","ReyeLookAt") cmds.aimConstraint("ReyePointLookAt","ReyeLookAt",worldUpObject="eyeOrientation",worldUpType="objectrotation") cmds.expression(name = "REyeExpresionX",unitConversion = "none") script = "ReyeOrientacion.rotateY = (Character_RH_Ojo_Ctrl_fc.translateX * 4 + Character_MD_OjoRectangle_ctrl_fc.translateX * 4)/10" cmds.expression("REyeExpresionX",edit=True, string=script,unitConversion = "none") cmds.expression(name = "REyeExpresionY",unitConversion = "none") script = "ReyeOrientacion.rotateZ = (Character_RH_Ojo_Ctrl_fc.translateY * 4 + Character_MD_OjoRectangle_ctrl_fc.translateY * 4)/10" cmds.expression("REyeExpresionY",edit=True, string=script,unitConversion = "none") RMRigTools.RMAlign(EyeParent,"eyeOrientation",1) cmds.parent("eyeOrientation",EyeParent) #$LeyeBase.parent=$LEye.parent; #$ReyeBase.parent=$REye.parent; cmds.parent("LEye","LeyeOrientacion"); cmds.parent("REye","ReyeOrientacion"); cmds.parent("OjosLookAt",EyeParent); cmds.parent("LeyePointLookAt","OjosLookAt_L"); cmds.parent("ReyePointLookAt","OjosLookAt_R"); else: print "No existen los objetos LEye y REye"