コード例 #1
0
ファイル: HandRig.py プロジェクト: jaredauty/Rigging
    def generate(self):
        self.m_fingers = []
        names = ["indexFing", "middleFing", "ringFing", "pinkyFing", "thumb"]
        for i in range(len(names)):
            thumb = False
            if i == (len(names) - 1):
                thumb = True
            newFinger = fing.FingerRig(
                "%s_%s" %(self.m_name, names[i]),
                self.m_handJoints.getFinger(i),
                thumb
                )
            newFinger.generate()
            cmds.parent(newFinger.getGroup(), self.m_group)
            self.m_fingers.append(newFinger)

        #create control
        self.m_control = cmds.spaceLocator(n="%s_CTRL" %(self.m_name))[0]


        rc.orientControl(self.m_control, self.m_fingers[3].getKnuckle())
        group = rg.addGroup(self.m_control, "%s_0" %(self.m_control))
        rc.lockAttrs(self.m_control, ["tx", "rotate", "scale"], True, False)
        cmds.parent(group, self.m_group)
        cmds.expression(n="%s_EXP" %(self.m_name), s=self.createExp())
コード例 #2
0
ファイル: ArmRig.py プロジェクト: jaredauty/Rigging
 def rigBlendControl(self, _parent):
     # Move and parent blend control
     rc.orientControl(self.m_blendControl, _parent)
     group = rg.addGroup(self.m_blendControl, "%s_0" %(self.m_blendControl))
     moveValue = -2
     if self.m_isMirrored:
         moveValue *= -1
     cmds.setAttr("%s.t%s" %(self.m_blendControl, self.m_twistAxis), moveValue)
     cmds.parentConstraint(_parent, group, mo=1)
     rc.lockAttrs(
         self.m_blendControl, 
         [
             "tx", 
             "ty",
             "tz", 
             "rx", 
             "ry", 
             "rz", 
             "sx", 
             "sy", 
             "sz", 
             "visibility"
         ],
         True,
         True
         )
コード例 #3
0
ファイル: FKArm.py プロジェクト: jaredauty/Rigging
    def rigElbow(self):
       #Check that shoulder has been done
       if not self.m_isShoulder:
           self.rigShoulder()
       
       #Rig for stretch
       self.m_stretchCtrl = rc.changeExt(
            self.m_joints.m_elbow1, 
            "_stretch_CTRL"
            )
       self.m_stretchCtrl = cmds.spaceLocator(
            n = self.m_stretchCtrl
            )[0]
       rc.orientControl(self.m_stretchCtrl, self.m_joints.m_shoulder)
       elbowDisplace = cmds.getAttr("%s.tx" %(self.m_joints.m_elbow1))
       groups = rg.add3Groups(self.m_stretchCtrl, ["_SDK", "_CONST", "_0"])
       cmds.parent(groups[2], self.m_shoulderGBLCtrl)
       cmds.setAttr("%s.tx" %(groups[2]), elbowDisplace)
       cmds.pointConstraint(self.m_stretchCtrl, self.m_joints.m_elbow1)

       # --- Elbow --- #
       self.m_elbowCtrl = rc.makeCTRL(
            self.m_joints.m_elbow1, 
            False, 
            True,
            ["_SDK", "_CONST", "_0"]
            )
       cmds.parent(self.m_elbowCtrl+"_0", self.m_stretchCtrl)
       #Connect up double rotations
       try:
           cmds.connectAttr(
                self.m_joints.m_elbow1+".rotate",
                self.m_joints.m_elbow2+".rotate", 
                f=1
                )
       except:
           print "Warning, double joint rotations seem to already be connected"
       
       #- lock and hide unused attributes -#
       rc.lockAttrs(
            self.m_stretchCtrl, 
            ["ty", "tz", "rx", "ry", "rz", "sx",  "sy",  "sz"]
            )

       rc.lockAttrs(
            self.m_elbowCtrl, 
            ["tx", "ty", "tz",  "sx",  "sy",  "sz"]
            )
       rc.addToLayer(self.m_sceneData, "mainCtrl", [self.m_stretchCtrl, self.m_elbowCtrl])
       #Add to controls
       rc.addToControlDict(self.m_allControls, "%s_FKElbowStretch" %(self.m_baseName), self.m_stretchCtrl)
       rc.addToControlDict(self.m_allControls, "%s_FKElbow" %(self.m_baseName), self.m_elbowCtrl)
       self.m_isElbow = True
コード例 #4
0
ファイル: IKArm.py プロジェクト: jaredauty/Rigging
    def setupPoleVec(self):
        middleName = rg.stripMiddle(self.m_joints.m_shoulder, 0, 3)
        desiredName = self.m_name+"PoleVec_LOC"
        self.m_poleVec = cmds.spaceLocator(n = desiredName)[0]
        # Add to controls
        rc.addToControlDict(self.m_allControls, "%s_IKPoleVec" %(self.m_baseName), self.m_poleVec)
        rc.addToLayer(self.m_sceneData, "mainCtrl", self.m_poleVec)
        cmds.addAttr(
            self.m_poleVec, 
            ln=self.m_poleVecPinAttr, 
            min=0, 
            max=1, 
            k=True, 
            dv=0
            )
        cmds.addAttr(
            self.m_poleVec, 
            ln=self.m_maxStretchAttr, 
            at = "float", 
            min=0, 
            dv=10, 
            k=1
            )
        self.m_maxStretch = "%s.%s" %(self.m_poleVec, self.m_maxStretchAttr)
        rc.orientControl(self.m_poleVec, self.m_joints.m_elbow1)
        groups = rg.add3Groups(self.m_poleVec, ["_SDK", "_CONST", "_0"])
        cmds.poleVectorConstraint(self.m_poleVec, self.m_ikHandle)
        cmds.parent(groups[-1], self.m_group, r=1)
        # Lock unused attributes
        rc.lockAttrs(
            self.m_poleVec,
            ["scale", "rotate"],
            True,
            False
            )


        axis , offset = self.getPoleVecAxis(2)
        if axis != "":
            cmds.setAttr("%s.t%s" %(groups[1], axis), offset) 

        #Create line
        midGroup = cmds.group(em=1, n=self.m_name+"PoleVec_GRP")
        cmds.parent(midGroup, self.m_group)
        cmds.pointConstraint(self.m_joints.m_elbow1, midGroup)
        cmds.pointConstraint(self.m_joints.m_elbow2, midGroup)
        lineNodes = rc.createLine([self.m_poleVec, midGroup], self.m_sceneData, "mainCtrl")
        cmds.parent(lineNodes[0], self.m_group)
コード例 #5
0
ファイル: FKArm.py プロジェクト: jaredauty/Rigging
 def rigShoulder(self):
    try:
        # --- Shoulder --- #
        #Create shoulder controls
        gimbalCtrls = rc.makeGimbalCTRL(
             self.m_joints.m_shoulder, 
             False, 
             True
             )
        self.m_shoulderGBLCtrl = gimbalCtrls[0]
        self.m_shoulderCtrl = gimbalCtrls[1]    
        # Add to controls
        rc.addToControlDict(self.m_allControls, "%s_FKShoulder" %(self.m_baseName), self.m_shoulderCtrl)
        rc.addToControlDict(
           self.m_allControls,
           "%s_FKShoulderGBL" %(self.m_baseName),
           self.m_shoulderGBLCtrl
           )
        rc.addToLayer(self.m_sceneData, "mainCtrl", gimbalCtrls)      
        self.m_isShoulder = True
        cmds.parent(self.m_shoulderCtrl+"_0", self.m_group, r=1)
        cmds.pointConstraint(
             self.m_shoulderGBLCtrl, 
             self.m_joints.m_shoulder
             )
        #Sort out scaling
        cmds.scaleConstraint(
             self.m_shoulderGBLCtrl, 
             self.m_joints.m_shoulder
             )
         
        #Lock unused attributes
        rc.lockAttrs(
             self.m_shoulderCtrl,
             ["translate", "scale"],
             True,
             False
             )
        rc.lockAttrs(
             self.m_shoulderGBLCtrl,
             ["translate", "scale"],
             True,
             False
             )
    except:
        print "WARNING: FK Shoulder setup was unsuccessful!"
        self.m_isShoulder = False
コード例 #6
0
ファイル: FKFoot.py プロジェクト: jaredauty/Rigging
    def createToe(self):
        if not self.m_ankleGenerated:
            self.createAnkle()
        self.m_toeCtrl = cmds.circle(
            n="%s_toe_CTRL" %(self.m_name),
            nr=(1, 0, 0)
            )[0]
        rc.addToControlDict(self.m_allControls, "%s_FKToe" %(self.m_baseName), self.m_toeCtrl)
        rc.addToLayer(self.m_sceneData, "mainCtrl", self.m_toeCtrl)
        rc.orientControl(self.m_toeCtrl, self.m_joints[1])
        groups = rg.add3Groups(self.m_toeCtrl, ["_SDK", "_CONST", "_0"])
        cmds.parentConstraint(self.m_toeCtrl, self.m_joints[1])
        cmds.parent(groups[-1], self.m_ankleCtrl)

        self.m_toeGenerated = True
        #Lock unused attributes
        rc.lockAttrs(self.m_toeCtrl, ["translate", "scale"], True, False)
コード例 #7
0
ファイル: FKArm.py プロジェクト: jaredauty/Rigging
 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
コード例 #8
0
ファイル: FingerRig.py プロジェクト: jaredauty/Rigging
    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
コード例 #9
0
ファイル: StretchChain.py プロジェクト: jaredauty/Rigging
    def createTwist(self):
        numJoints = len(self.m_bindJoints)
        if numJoints == 0:
            raise Exception, "No joints, cannot create twist setup"
        
        #Create twist controls
        # Twist 1
        self.m_twistControl1 = cmds.spaceLocator(
            n="%s_upperTwist_CTRL" %(self.m_name)
            )[0]
        #cmds.parent(self.m_twistControl1, self.m_parent1, r=1)
        
        # Twist 2
        self.m_twistControl2 = cmds.spaceLocator(
            n="%s_lowerTwist_CTRL" %(self.m_name)
            )[0]
        #cmds.parent(self.m_twistControl2, self.m_parent2, r=1)

        for control, parent in map(
                                    None, 
                                    [self.m_twistControl1, self.m_twistControl2],
                                    [self.m_parent1, self.m_parent2]
                                    ): 
            rc.orientControl(control, parent)
            groups = rg.add3Groups(control, ["_SDK", "_CONST", "_0"])
            if self.m_isMirrored:
                cmds.setAttr(
                    "%s.t%s" %(groups[0], self.m_twistAxis),
                    1
                    )
            else:
                cmds.setAttr(
                    "%s.t%s" %(groups[0], self.m_twistAxis),
                    -1
                    )
            if self.m_isParentTwist:
                cmds.parentConstraint(parent, groups[1], mo=1)
            cmds.parent(groups[2], self.m_group)
            rc.lockAttrs(
                control,
                ["rotate", "scale", "visibility"],
                True,
                False
                )

        cmds.setAttr("%s.dTwistControlEnable" %(self.m_ikHandle), 1)
        cmds.setAttr("%s.dWorldUpType" %(self.m_ikHandle), 2)
        cmds.setAttr("%s.dTwistValueType" %(self.m_ikHandle), 1)

        if self.m_twistAxis == "y":
            if self.m_isMirrored:
                cmds.setAttr("%s.dWorldUpAxis" %(self.m_ikHandle), 0)
            else:
                cmds.setAttr("%s.dWorldUpAxis" %(self.m_ikHandle), 1)
        else:
            if self.m_isMirrored:
                cmds.setAttr("%s.dWorldUpAxis" %(self.m_ikHandle), 3)
            else:
                cmds.setAttr("%s.dWorldUpAxis" %(self.m_ikHandle), 4)
        
        cmds.connectAttr(
            "%s.worldMatrix[0]" %(self.m_twistControl1),
            "%s.dWorldUpMatrix" %(self.m_ikHandle),
            f = True
            )
        cmds.connectAttr(
            "%s.worldMatrix[0]" %(self.m_twistControl2),
            "%s.dWorldUpMatrixEnd" %(self.m_ikHandle),
            f = True
            )
        rc.addToLayer(self.m_sceneData, "detailCtrl", [self.m_twistControl1, self.m_twistControl2])

        #Add to controls
        rc.addToControlDict(self.m_allControls, "%s_topTwist" %(self.m_baseName), self.m_twistControl1)
        rc.addToControlDict(self.m_allControls, "%s_lowTwist" %(self.m_baseName), self.m_twistControl2)