コード例 #1
0
ファイル: GenericPropRig.py プロジェクト: rendermotion/RMPY
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)
コード例 #2
0
ファイル: Desenrrollable.py プロジェクト: rendermotion/RMPY
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
コード例 #3
0
    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)
コード例 #4
0
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)
コード例 #5
0
ファイル: SetupEyes.py プロジェクト: rendermotion/RMPY
	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"