Example #1
0
    def RMCircularControl(self, Obj, radius=1, axis="X", name=""):
        Obj = RMRigTools.validate_pymel_nodes(Obj)
        if name == '':
            defaultName = "circularControl"
        else:
            defaultName = name
        if axis in "yY":
            Ctrl, Shape = pm.circle(normal=[0, 1, 0],
                                    radius=radius,
                                    name=defaultName)
        elif axis in "zZ":
            Ctrl, Shape = pm.circle(normal=[0, 0, 1],
                                    radius=radius,
                                    name=defaultName)
        elif axis in "xX":
            Ctrl, Shape = pm.circle(normal=[1, 0, 0],
                                    radius=radius,
                                    name=defaultName)

        if name == 'circularControl':
            if self.NameConv.is_name_in_format(Obj):
                self.NameConv.rename_based_on_base_name(Obj, Ctrl)
            else:
                self.NameConv.rename_name_in_format(Ctrl,
                                                    name=name,
                                                    objectType='control')
        else:
            self.NameConv.rename_name_in_format(Ctrl,
                                                name=name,
                                                objectType='control')
        RMRigTools.RMAlign(Obj, Ctrl, 3)

        ResetGroup = self.rigTools.RMCreateGroupOnObj(Ctrl)

        return ResetGroup, Ctrl
Example #2
0
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
Example #3
0
    def connectFromDefinition(self,
                              BSDefinition,
                              currentBlendShape,
                              blendShapeNode,
                              prefix,
                              extremeValue,
                              objectPrefix=''):
        if prefix != "":
            Side = self.getSideFromPrefix(prefix)
            #print "Connecting:%s.%s To %s.%s"% (self.NameConv.RMSetFromName(BSDefinition["control"],Side,Token = "Side" ), BSDefinition['blendShapes'][currentBlendShape]["connection"], blendShapeNode, prefix +currentBlendShape)
            control = self.NameConv.set_from_name(BSDefinition["control"],
                                                  Side,
                                                  Token="Side")
        else:
            control = BSDefinition["control"]

        if extremeValue > 0:
            RMRigTools.RMConnectWithLimits(
                "%s.%s" %
                (control,
                 BSDefinition['blendShapes'][currentBlendShape]["connection"]),
                "%s.%s" %
                (blendShapeNode, prefix + objectPrefix + currentBlendShape),
                [[0, 0], [extremeValue, 1]])
        else:
            RMRigTools.RMConnectWithLimits(
                "%s.%s" %
                (control,
                 BSDefinition['blendShapes'][currentBlendShape]["connection"]),
                "%s.%s" %
                (blendShapeNode, prefix + objectPrefix + currentBlendShape),
                [[extremeValue, 1], [0, 0]])
Example #4
0
def RMCircularControl(Obj, radius=1, NameConv=None, axis="X", name=""):
    Obj = RMRigTools.validate_pymel_nodes(Obj)
    if not NameConv:
        NameConv = nameConvention.NameConvention()
    if name == '':
        defaultName = "circularControl"
    else:
        defaultName = name
    if axis in "yY":
        Ctrl, Shape = pm.circle(normal=[0, 1, 0],
                                radius=radius,
                                name=defaultName)
    elif axis in "zZ":
        Ctrl, Shape = pm.circle(normal=[0, 0, 1],
                                radius=radius,
                                name=defaultName)
    elif axis in "xX":
        Ctrl, Shape = pm.circle(normal=[1, 0, 0],
                                radius=radius,
                                name=defaultName)

    if name == '' and NameConv.is_name_in_format(Obj):

        NameConv.rename_based_on_base_name(Obj, Ctrl)
    else:
        NameConv.rename_based_on_base_name(Obj, Ctrl, name=Ctrl)

    NameConv.rename_set_from_name(Ctrl, "control", "objectType")

    RMRigTools.RMAlign(Obj, Ctrl, 3)

    ResetGroup = RMRigTools.RMCreateGroupOnObj(Ctrl)

    return ResetGroup, Ctrl
Example #5
0
def LockAndHide(selection):
	if selection:
	    if (cmds.getAttr("%s.visibility"%selection[0])):
	        for eachObject in selection :
	            RMRigTools.RMLockAndHideAttributes( eachObject, "xxxxxxxxx1" )
	            cmds.setAttr("%s.visibility"%eachObject,False)
	            RMRigTools.RMLockAndHideAttributes( eachObject, "xxxxxxxxxl" )
	    else:
	        for eachObject in selection :
	            RMRigTools.RMLockAndHideAttributes( eachObject, "xxxxxxxxx1" )
	            cmds.setAttr("%s.visibility"%eachObject,True)
Example #6
0
def getAngle(radius, joint1, joint2):
    segmentLen01 = RMRigTools.RMLenghtOfBone(joint1)

    if joint2:
        segmentLen02 = RMRigTools.RMLenghtOfBone(joint2)
    else:
        segmentLen02 = segmentLen01

    alpha = SegmentAngleInCircle(radius, segmentLen01)
    beta = SegmentAngleInCircle(radius, segmentLen02)
    return 180 - DeltaBetweenAngles(alpha, beta)
Example #7
0
def RMCreateBoxCtrl(Obj,
                    NameConv=None,
                    Xratio=1,
                    Yratio=1,
                    Zratio=1,
                    ParentBaseSize=False,
                    customSize=0,
                    name="",
                    centered=False):
    if not NameConv:
        NameConv = nameConvention.NameConvention()
    if name == "":
        defaultName = "BoxControl"
    else:
        defaultName = name

    Parents = pm.listRelatives(Obj, parent=True)

    if Parents and len(Parents) != 0 and ParentBaseSize == True:
        JntLength = RMRigTools.RMLenghtOfBone(Parents[0])
        Ctrl = RMCreateCubeLine(JntLength * Xratio,
                                JntLength * Yratio,
                                JntLength * Zratio,
                                name=defaultName,
                                centered=centered)
    else:
        if customSize != 0:
            JntLength = customSize

        elif pm.objectType(Obj) == "joint":
            JntLength = RMRigTools.RMLenghtOfBone(Obj)

        else:
            JntLength = 1
        Ctrl = RMCreateCubeLine(JntLength * Xratio,
                                JntLength * Yratio,
                                JntLength * Zratio,
                                name=defaultName,
                                centered=centered)

    if name == '' and NameConv.is_name_in_format(Obj):
        NameConv.rename_based_on_base_name(Obj, Ctrl)
    else:
        NameConv.rename_based_on_base_name(Obj, Ctrl, name=Ctrl)

    NameConv.rename_set_from_name(Ctrl, "control", "objectType")

    RMRigTools.RMAlign(Obj, Ctrl, 3)

    ResetGroup = RMRigTools.RMCreateGroupOnObj(Ctrl)
    return ResetGroup, Ctrl
Example #8
0
    def CreateJointChainSquareRig(self, JointChain, UDaxis="Y"):
        if self.NameConv.is_name_in_format(JointChain[0]):
            if self.NameConv.get_from_name(JointChain[0], "side") == "LF":
                sideVariation = 1
            else:
                sideVariation = -1
        else:
            sideVariation = 1

        if UDaxis in ["Y", "Z"]:
            BoxResetPoint, BoxControl = RMRigShapeControls.RMCreateBoxCtrl(
                JointChain[len(JointChain) - 1],
                ParentBaseSize=True,
                Xratio=.5,
                Yratio=.5,
                Zratio=.5)
            self.addChainParameters(BoxControl, len(JointChain) - 1)

            cmds.makeIdentity(BoxControl,
                              apply=True,
                              r=False,
                              t=True,
                              s=True,
                              n=0)

            cmds.parentConstraint(JointChain[len(JointChain) - 1],
                                  BoxResetPoint)

            RMRigTools.RMLockAndHideAttributes(BoxControl, "0000000000")

            if UDaxis == "Y":
                LRaxis = "Z"
            elif UDaxis == "Z":
                LRaxis = "Y"
            for eachjoint in range(len(JointChain) - 1):
                RMRigTools.RMConnectWithLimits(
                    BoxControl + ".UD" + str(eachjoint + 1),
                    JointChain[eachjoint] + (".rotate%s" % UDaxis),
                    [[-10, 100], [0, 0], [10, -100]])
                RMRigTools.RMConnectWithLimits(
                    BoxControl + ".LR" + str(eachjoint + 1),
                    JointChain[eachjoint] + (".rotate%s" % LRaxis),
                    [[-10, sideVariation * 100], [0, 0],
                     [10, sideVariation * -100]])
                RMRigTools.RMConnectWithLimits(
                    BoxControl + ".Twist" + str(eachjoint + 1),
                    JointChain[eachjoint] + ".rotateX",
                    [[-10, sideVariation * 100], [0, 0],
                     [10, sideVariation * -100]])
        else:
            print "Not Valid UD Axis Provided"
Example #9
0
 def RemoveAffectedObject(self,
                          ControlObject,
                          removeObjectList,
                          VisibilitySwitch='visibility',
                          visibilityType="visibility"):
     ControlObject = RMRigTools.validate_pymel_nodes(ControlObject)
     removeObjectList = RMRigTools.validate_pymel_nodes(removeObjectList)
     '''visibilityType  valid values are overrideVisibility, lodVisibility or visibility'''
     AffectedObjectList = self.GetAfectedObjectsList(
         ControlObject, VisibilitySwitch=VisibilitySwitch)
     for eachObject in removeObjectList:
         if eachObject in AffectedObjectList:
             pm.disconnectAttr(
                 ("%s.%s" % (ControlObject, VisibilitySwitch)),
                 ("%s.%s" % (eachObject, visibilityType)))
Example #10
0
    def RMCreateSpineJointStructure(self, SpineRef):
        rootSpine, joints = RMRigTools.RMCreateBonesAtPoints(
            SpineRef, ZAxisOrientation="z")

        SpineLength = RMRigTools.RMPointDistance(joints[0],
                                                 joints[len(joints) - 1])
        chestJoint = pm.joint(name="chest")

        self.NameConv.rename_name_in_format(chestJoint, name=chestJoint)

        RMRigTools.RMAlign(joints[len(joints) - 1], chestJoint, 3)
        #pm.parent(chestJoint, joints[len(joints)-1])
        pm.makeIdentity(chestJoint, apply=True, r=False, t=True, s=True, n=0)
        pm.xform(chestJoint, t=[SpineLength / 4, 0, 0], os=True, relative=True)
        return rootSpine, joints, chestJoint
Example #11
0
 def RMCreateHeadRig(self):
     headSize = RMRigTools.RMLenghtOfBone(self.HeadJoints[0])
     print '%s %s' % (self.rootHeadJoints, self.rootHeadJoints.__class__)
     resetHeadControl, headControl = RMRigShapeControls.RMImportMoveControl(
         self.rootHeadJoints, scale=headSize, name="head", Type="head")
     pm.parentConstraint(headControl, self.HeadJoints[0])
     return resetHeadControl, headControl
Example #12
0
def addNoiseOnControl(Object, Control):
    if Object.__class__ == list:
        pass

    elif Object.__class__ in [str, unicode]:
        Object = [Object]

    else:
        "Not Valid Arguments on Add Noise"
        return None

    Expresion = '''//{0}
    {0}.rotateX=`noise((time+{2})*{1}.frequency)`*{1}.amplitud;
    {0}.rotateY=`noise((time+{2}+30)*{1}.frequency)`*{1}.amplitud;
    {0}.rotateZ=`noise((time+{2}+60)*{1}.frequency)`*{1}.amplitud;
    {0}.ty=`noise((time+{2}+90)*{1}.frequency)`*{1}.movY + {1}.movY;
    '''
    if not isNoiseControl(Control):
        addAttributes(Control)

    for eachObject in Object:
        constraints = constraintComponents(gessFrom=eachObject)
        ResetGroup = RMRigTools.RMCreateGroupOnObj(eachObject, Type="child")
        for eachkey in constraints.constraintDic:
            pm.delete(eachkey)
            pm.parentConstraint(ResetGroup,
                                constraints.constraintDic[eachkey]["affected"],
                                mo=True)
        ExpressionNode = pm.expression(name="NoiseMainExpresion",
                                       string=Expresion.format(
                                           ResetGroup, Control,
                                           random.uniform(0, 100)))
Example #13
0
 def __init__(self, NameConv=None):
     if NameConv:
         self.NameConv = NameConv
     else:
         self.NameConv = nameConvention.NameConvention()
     RigTools = RMRigTools.RMRigTools(self.NameConv)
     self.FaceBlendShapeDic = {}
Example #14
0
 def __init__(self, NameConv=None):
     if not NameConv:
         self.NameConv = nameConvention.NameConvention()
     else:
         self.NameConv = NameConv
     self.GHS = RMGenericHandStructure.GenericHandJointStructure(
         NameConv=NameConv)
     self.name_conv = RMRigTools.RMRigTools(NameConv=NameConv)
     self.fingerRoot = {
         "middle": None,
         "ring": None,
         "pinky": None,
         "index": None,
         "thumb": None
     }
     self.PalmReferencePoints = {
         "middle": None,
         "ring": None,
         "pinky": None,
         "index": None,
         "thumb": None
     }
     self.PalmFingerControlGrp = {
         "middle": None,
         "ring": None,
         "pinky": None,
         "index": None,
         "thumb": None
     }
     self.PalmResetPoint = None
     self.PalmControl = None
     self.fingerControlsReset = []
     self.fingerContols = []
     self.MainKinematics = None
     self.MainControl = None
Example #15
0
    def __init__(self, NameConv=None):
        if not NameConv:
            self.NameConv = nameConvention.NameConvention()
        else:
            self.NameConv = NameConv

        self.rig_tools = RMRigTools.RMRigTools()
        self.StandardFeetPointsDic = None

        self.rootFKJoints = None
        self.rootIKJoints = None

        self.StandardFeetIKJoints = None
        self.StandardFeetFKJoints = None
        self.MainFeetKinematics = None

        self.FeetControl = None
        self.FirstLimbFeetResetControl = None
        self.SecondLimbFeetControl = None
        self.SecondLimbControlResetPoint = None
        # self.StandardFeetDefJoints = None
        # self.rootStandardFeetDefJoints = None
        self.IKAttachPoint = None
        self.rootJoints = None
        self.StandardFeetJoints = None

        self.feetMainMoveIK = None

        self.rootFKJoints
Example #16
0
def get_oposite(scene_object):
    if scene_object.__class__ is list:
        return_list = True
    else:
        return_list = False
        scene_object = [scene_object]
    result_list = []
    for each_object in scene_object:
        each_object = RMRigTools.validate_pymel_nodes(each_object)
        namespace_tokens = each_object.split(':')
        if len(namespace_tokens) > 1:
            namespace = '%s:' % namespace_tokens[0]
            splitName = namespace_tokens[1]
        else:
            namespace = ''
            splitName = str(each_object)

        token_list = splitName.split('_')
        if token_list[1] in ['FR', 'MR', 'BR', 'FL','ML', 'BL', 'C', 'R','L']:
            if 'L' in token_list[1]:
                token_list[1] = token_list[1].replace('L', 'R')
            else:
                if 'R' in token_list[1]:
                    token_list[1] = token_list[1].replace('R', 'L')
            if pm.objExists('%s%s' % (namespace, '_'.join(token_list))):
                result_list.append(RMRigTools.validate_pymel_nodes('%s%s' % (namespace, '_'.join(token_list))))
            else:
                print 'no oposite found for object %s' % each_object
        else:
            if token_list[0] in ['FR', 'MR', 'BR', 'FL', 'ML', 'BL', 'C', 'R', 'L']:
                if 'L' in token_list[0]:
                    token_list[0] = token_list[0].replace('L', 'R')
                else:
                    if 'R' in token_list[0]:
                        token_list[0] = token_list[0].replace('R', 'L')
                if pm.objExists('%s%s' % (namespace, '_'.join(token_list))):
                    result_list.append(RMRigTools.validate_pymel_nodes('%s%s' % (namespace, '_'.join(token_list))))
                else:
                    print 'no oposite found for object %s' % each_object
    if return_list:
        return result_list
    else:
        if len(result_list) == 1:
            return result_list[0]
        else:
            return None
Example #17
0
    def CreateHandRig(self, PalmReferencePoint, PalmControl=None):
        self.CreateHandStructure(PalmReferencePoint)
        for fingers in self.GHS.fingers:
            self.CreateFingerSquareRig(fingers)

        self.CreatePalmRig(PalmControl=PalmControl)
        RMRigTools.RMParentArray(self.PalmControl, self.fingerControlsReset)
        palmLen = RMRigTools.RMPointDistance(self.PalmControl,
                                             self.GHS.fingerRoots[0])
        pm.parentConstraint(self.MainKinematics, self.GHS.palmJoint)
        pm.parentConstraint(self.MainKinematics, self.MainControl)

        self.NameConv.rename_set_from_name(self.GHS.palmJoint, "sknjnt",
                                           "objectType")
        for eachFinger in self.GHS.fingers:
            self.NameConv.rename_set_from_name(eachFinger, "sknjnt",
                                               "objectType")
Example #18
0
    def RMCreateClavicleJointStructure(self, ClavRefPnts):
        rootClavicle, ClavicleJoints = RMRigTools.RMCreateBonesAtPoints(
            ClavRefPnts, ZAxisOrientation="z")
        self.NameConv.rename_set_from_name(ClavicleJoints[1], "clavicle",
                                           "name")
        pm.parent(rootClavicle, self.chestJoint)

        return rootClavicle, ClavicleJoints
Example #19
0
 def ConstraintVisibility(self,
                          Objects,
                          ControlObject,
                          VisibilitySwitch='visibility',
                          visibilityType="visibility"):
     Objects = RMRigTools.validate_pymel_nodes(Objects)
     ControlObject = RMRigTools.validate_pymel_nodes(ControlObject)
     '''visibilityType  valid values are overrideVisibility, lodVisibility or visibility'''
     if (self.AddEnumParameters(ControlObject,
                                VisibilitySwitch=VisibilitySwitch)):
         for eachObject in Objects:
             RMRigTools.RMLockAndHideAttributes(eachObject, "xxxxxxxxxL")
             RMRigTools.RMLockAndHideAttributes(eachObject, "xxxxxxxxxh")
             # print ("connecting Visibility %s.%s to %s.%s"%(ControlObject,VisibilitySwitch,eachObject,visibilityType) )
             pm.connectAttr("%s.%s" % (ControlObject, VisibilitySwitch),
                            "%s.%s" % (eachObject, visibilityType))
     else:
         print "Not Valid Object"
Example #20
0
    def CreateHandJointStructure(self, Palm):
        referenceRoots = pm.listRelatives(Palm, children=True, type="transform")
        palmJoint = pm.joint(name=self.NameConv.get_from_name(Palm, "name"))

        RMRigTools.RMAlign(Palm, palmJoint, 3)
        self.NameConv.rename_based_on_base_name(Palm, palmJoint, system="rig")
        self.fingers = []

        for eachPoint in referenceRoots:
            fingerPoints = RMRigTools.RMCustomPickWalk(eachPoint, "transform", -1)
            FingerRoot, fingerJoints = self.rig_tools.RMCreateBonesAtPoints(fingerPoints)
            pm.parent(FingerRoot, palmJoint)
            self.fingerRoots.append(FingerRoot)
            self.fingers.append(fingerJoints)
        self.palmJoint = palmJoint
        if pm.listRelatives(self.palmJoint, parent=True):
            pm.parent(self.palmJoint, world=True)
        return palmJoint
Example #21
0
def orderPointsByDistance(straigtPnts, MaxDistanceDic):
    shortArray = straigtPnts
    shortArray.remove(MaxDistanceDic['points'][0])
    shortArray.remove(MaxDistanceDic['points'][1])
    distanceArray = {}
    for eachElement in shortArray:
        distanceArray[eachElement] = RMRigTools.RMPointDistance(
            MaxDistanceDic['points'][0], eachElement)
    return sorted(distanceArray, key=distanceArray.__getitem__)
Example #22
0
def average_vertex_position(vertex_list):
    position_list = []
    for each in vertex_list:
        if each.__class__ == pm.general.MeshVertex:
            for each_vertex in each:
                position = each_vertex.getPosition(space='world')
                if len(position) == 3:
                    position_list.append([position[0], position[1], position[2]])
    return RMRigTools.average(*position_list)
Example #23
0
    def __init__(self, NameConv=None):
        if not NameConv:
            self.NameConv = nameConvention.NameConvention()
        else:
            self.NameConv = NameConv

        self.rig_tools = RMRigTools.RMRigTools(NameConv=self.NameConv)
        self.palmJoint = ""
        self.fingerRoots = []
        self.fingers = []
Example #24
0
def getExtremePoints(listOfPnts):
    MaxDistanceDic = {'points': [], 'distance': 0}
    for eachPoint in listOfPnts:
        for eachOtherPoint in listOfPnts:
            distanceValue = RMRigTools.RMPointDistance(eachPoint,
                                                       eachOtherPoint)
            if distanceValue > MaxDistanceDic['distance']:
                MaxDistanceDic['points'] = [eachPoint, eachOtherPoint]
                MaxDistanceDic['distance'] = distanceValue
    return MaxDistanceDic
def clavicleSpaceSwitch():
	kinematics = cmds.ls("kinematics")[0]
	Mover01 = cmds.ls("*_MD_mover00_ctr_Rig")[0]
	rightClavicleControl = cmds.ls("*RH_clavicle00_ctr_Rig")[0]
	leftClavicleControl = cmds.ls("*LF_clavicle00_ctr_Rig")[0]
	resetLeftClavicleControl = cmds.ls("*LF_clavicle01_grp_Rig")[0]
	resetRightClavicleControl = cmds.ls("*RH_clavicle01_grp_Rig")[0]
	LimbArmRightikControl= cmds.ls("*_RH_wristIK00_ctr_Rig")[0]
	LimbArmLeftikControl= cmds.ls("*_LF_wristIK00_ctr_Rig")[0]

	NameConv = nameConvention.NameConvention()

	moverWorld = cmds.group( empty = True, name ="moverWorld")
	cmds.parent(moverWorld, kinematics)
	cmds.parentConstraint( Mover01 , moverWorld )

	SPSW = RMSpaceSwitch.RMSpaceSwitch()

	LFShoulderFK = cmds.ls("*_LF_shoulder00_grp_Limbfk")[0]
	LFFKShoulder = cmds.ls("*_LF_clavicle01_jnt_Rig")[0]
	LFControlShoulder = cmds.ls("*_LF_shoulderFK00_ctr_Rig")[0]

	RHShoulderFK = cmds.ls("*_RH_shoulder00_grp_Limbfk")[0]
	RHFKShoulder = cmds.ls("*_RH_clavicle01_jnt_Rig")[0]
	RHControlShoulder = cmds.ls("*_RH_shoulderFK00_ctr_Rig")[0]

	LFWorldFKArm = cmds.group(empty = True, name = "ArmWorld" )
	LFWorldFKArm = NameConv.rename_based_on_base_name (LFShoulderFK, LFWorldFKArm, {'name': "world", 'system': "LFKArmSpaceSwitch"})
	RMRigTools.RMAlign(LFShoulderFK, LFWorldFKArm ,3)
	cmds.parent( LFWorldFKArm, moverWorld)
	LSpaceSwitchGroup = RMRigTools.RMCreateGroupOnObj(LFShoulderFK)
	SPSW.CreateSpaceSwitchReverse(LFShoulderFK,[LSpaceSwitchGroup, LFWorldFKArm],LFControlShoulder,sswtype = "float", Name="", mo = False, constraintType = "orient")

	RHWorldFKArm = cmds.group(empty = True, name = "ArmWorld" )
	RHWorldFKArm = NameConv.rename_based_on_base_name (RHShoulderFK, RHWorldFKArm, {'name': "world", 'system': "RFKArmSpaceSwitch"})
	RMRigTools.RMAlign(RHShoulderFK, RHWorldFKArm ,3)
	cmds.parent( RHWorldFKArm, moverWorld)
	RSpaceSwitchGroup = RMRigTools.RMCreateGroupOnObj(RHShoulderFK)
	SPSW.CreateSpaceSwitchReverse(RHShoulderFK,[RSpaceSwitchGroup, RHWorldFKArm],RHControlShoulder,sswtype = "float", Name="", mo = False , constraintType = "orient")

	SPSW.AddSpaceObject(LimbArmRightikControl,moverWorld)
	SPSW.AddSpaceObject(LimbArmLeftikControl,moverWorld)
Example #26
0
    def linkJointDefinition(self, Side, jointLinkDefinition):
        control = jointLinkDefinition['control']
        if Side in ["LF", "RH"]:
            control = self.NameConv.set_from_name(
                jointLinkDefinition['control'], Side, Token='Side')

        if cmds.objExists(control):
            for eachAttribute in jointLinkDefinition['order']:
                jointsList = self.returnJointsByControl(
                    eachAttribute, jointLinkDefinition['joints'])
                for eachJoint in jointsList:
                    JointName = eachJoint
                    if Side in ["LF", "RH"]:
                        JointName = self.NameConv.set_from_name(eachJoint,
                                                                Side,
                                                                Token='Side')
                    if cmds.objExists(JointName):

                        if jointLinkDefinition['joints'][eachJoint][
                                'value'] == None:
                            cmds.connectAttr(
                                '%s.%s' %
                                (control, jointLinkDefinition['joints']
                                 [eachJoint]['connection']),
                                '%s.%s' %
                                (JointName, jointLinkDefinition['joints']
                                 [eachJoint]['inputPlug']),
                                force=True)
                        else:
                            self.AddAttributes(
                                control, eachAttribute,
                                jointLinkDefinition['attributes']
                                [eachAttribute]['min'],
                                jointLinkDefinition['attributes']
                                [eachAttribute]['max'])
                            RMRigTools.RMConnectWithLimits(
                                '%s.%s' %
                                (control, jointLinkDefinition['joints']
                                 [eachJoint]['connection']), '%s.%s' %
                                (JointName, jointLinkDefinition['joints']
                                 [eachJoint]['inputPlug']),
                                jointLinkDefinition['joints'][eachJoint]
                                ['value'])
                    else:
                        print "Joint object doesnt exists:%s" % JointName
        else:
            print "Control object doesnt exists:%s" % control
            control = self.NameConv.set_from_name(
                jointLinkDefinition['control'], Side, Token='Side')


#if __name__=="__main__":
#    Manager = BSManager()
#    Manager.AppyBlendShapeDefinition( SkinedJoints)
Example #27
0
    def RMCreateBonesBetweenPoints(self, InitialPoint, FinalPoint, NumberOfTB, AlignObject=None):
        DirectionVector  = FinalPoint-InitialPoint
        TotalLength = DirectionVector.length()
        Step = TotalLength / NumberOfTB
        StepVector = DirectionVector.normal() * Step
        locatorsList = []

        for count in range(0, NumberOfTB + 1):
            Locator = pm.spaceLocator()
            if AlignObject:
                if self.NameConv.is_name_in_format(AlignObject):
                    self.NameConv.rename_based_on_base_name(AlignObject, Locator,
                                                            name='TwistJoint%s' %
                                                            (self.NameConv.get_from_name(AlignObject,"name").capitalize()))#.capitalize()
            locatorsList.append(Locator)
            pm.xform(Locator, translation=list(InitialPoint+(StepVector*count)), worldSpace=True)
            RMRigTools.RMAlign(AlignObject, Locator, 2)
        self.TwistResetJoints, self.TwistJoints = RMRigTools.RMCreateBonesAtPoints(locatorsList)
        self.deleteList(locatorsList)
        return self.TwistResetJoints, self.TwistJoints
Example #28
0
 def AddAffectedObject(self,
                       ControlObject,
                       addObjectList,
                       VisibilitySwitch='visibility',
                       visibilityType="visibility"):
     ControlObject = RMRigTools.validate_pymel_nodes(ControlObject)
     addObjectList = RMRigTools.validate_pymel_nodes(addObjectList)
     '''visibilityType  valid values are overrideVisibility, lodVisibility or visibility'''
     for eachObject in addObjectList:
         inputConnections = pm.listConnections("%s.%s" %
                                               (eachObject, visibilityType),
                                               plugs=True,
                                               destination=True)
         if inputConnections:
             if len(inputConnections) > 0:
                 pm.disconnectAttr(inputConnections[0],
                                   "%s.%s" % (eachObject, visibilityType))
         pm.connectAttr("%s.%s" % (ControlObject, VisibilitySwitch),
                        "%s.%s" % (eachObject, visibilityType),
                        force=True)
Example #29
0
def FetTipRotationCorrect(side="RH"):
    # "Character_LF_TipGrp00_UDF_Rig"
    # "Character01_LF_ankleIK00_ctr_Rig"
    # "Character_LF_TipGrp00_grp_Rig"
    ArrayOfChildren = RMRigTools.RMRemoveChildren("Character_%s_TipGrp00_UDF_Rig" % side)
    childGroup = RMRigTools.RMCreateGroupOnObj("Character_%s_TipGrp00_UDF_Rig" % side, Type="world")
    ParentConst = cmds.listConnections("Character_%s_TipGrp00_grp_Rig" % side, type="parentConstraint")
    cmds.delete(ParentConst[0])
    cmds.makeIdentity("Character_%s_TipGrp00_grp_Rig" % side)
    loc = cmds.spaceLocator(name="ReferencePoint")[0]
    RMRigTools.RMAlign("Character_%s_TipGrp00_grp_Rig" % side, loc, 2)
    cmds.setAttr("%s.rotateX" % loc, 0)
    # cmds.setAttr( "%s.rotateX"%loc, -90)f
    cmds.setAttr("%s.rotateZ" % loc, 0)
    RMRigTools.RMAlign(loc, "Character_%s_TipGrp00_grp_Rig" % side, 2)
    cmds.parentConstraint("Character01_%s_ankleIK00_ctr_Rig" % side, "Character_%s_TipGrp00_grp_Rig" % side, mo=True,
                          name=ParentConst[0])
    cmds.parent(childGroup, "Character_%s_TipGrp00_UDF_Rig" % side)
    RMRigTools.RMParentArray(childGroup, ArrayOfChildren)
    cmds.delete(loc)
Example #30
0
    def StardardFeetFK(self, StandarFeetPointsDic, FeetControl=None):
        Side = self.NameConv.get_from_name(
            self.StandardFeetPointsDic["feet"][0], "side")
        self.rootFKJoints, StandardFeetFKJoints = self.StandardReverseFeetJointStructure(
            StandarFeetPointsDic)

        self.NameConv.rename_set_from_name(StandardFeetFKJoints,
                                           "FK",
                                           "name",
                                           mode="add")

        FootIn = self.StandardFeetPointsDic["limitIn"]
        FootOut = self.StandardFeetPointsDic["limitOut"]
        FootBK = self.StandardFeetPointsDic["limitBack"]
        Length = RMRigTools.RMPointDistance(
            self.StandardFeetPointsDic["feet"][2], FootBK)

        if not FeetControl:
            self.FirstLimbFeetResetControl, FeetControl = RMRigShapeControls.RMCircularControl(
                StandardFeetFKJoints[0], radius=Length, name="FKFeetControl")

        self.FeetControl = FeetControl

        SecondLimbfeetResetControl, SecondLimbFeetControl = RMRigShapeControls.RMCircularControl(
            StandardFeetFKJoints[1], radius=Length, name="FKTipFeetControl")

        pm.parentConstraint(FeetControl, StandardFeetFKJoints[0], mo=True)
        pm.parentConstraint(SecondLimbFeetControl,
                            StandardFeetFKJoints[1],
                            mo=True)
        pm.parentConstraint(StandardFeetFKJoints[0],
                            SecondLimbfeetResetControl,
                            mo=True)

        pm.parent(SecondLimbfeetResetControl, FeetControl)
        RMRigTools.RMLockAndHideAttributes(FeetControl, "000111000h")
        RMRigTools.RMLockAndHideAttributes(SecondLimbFeetControl, "000111000h")

        self.StandardFeetFKJoints = StandardFeetFKJoints
        self.SecondLimbFeetControl = SecondLimbFeetControl
        self.SecondLimbControlResetPoint = SecondLimbfeetResetControl