Пример #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
Пример #2
0
    def test_clusterPlane(self):
        fr = FollowRibbon.FollowRibbon(name="blah")
        plane = pm.nurbsPlane(axis=[0, 1, 0], patchesU=8, patchesV=1, lengthRatio=0.1, ch=0)[0]
        ctrls = []
        ctrls.append(pm.circle(n="blah_ctrl_01")[0].name())
        ctrls.append(pm.circle(n="blah_ctrl_02")[0].name())
        mainGrp = pm.group(em=1, name="main")

        result = fr._clusterPlane(plane=plane, controls=ctrls, mainGrp="main")

        self.testLib.assertListEqual(result, ["blah_cluster_01Handle", "blah_cluster_02Handle"])
        self.assertTrue(pm.objExists("blah_cluster_01"))
        self.assertTrue(pm.objExists("blah_cluster_02"))

        self.assertTrue(pm.listRelatives(result[0], parent=True), "main")
        self.assertTrue(pm.listRelatives(result[1], parent=True), "main")

        self.assertTrue(pm.listRelatives(result[0], parent=1)[0], "blah_ctrlsGrp")
        self.assertTrue(pm.listRelatives(result[1], parent=1)[0], "blah_ctrlsGrp")

        hist = pm.listHistory(plane)
        hitA = 0
        hitB = 0
        for each in hist:
            if each.name() == "blah_cluster_01":
                hitA = 1
            if each.name() == "blah_cluster_02":
                hitB = 1
        self.assertTrue(hitA)
        self.assertTrue(hitB)

        self.assertTrue(pm.isConnected("blah_ctrl_01.translate", "blah_cluster_01Handle.translate"))
        self.assertTrue(pm.isConnected("blah_ctrl_02.translate", "blah_cluster_02Handle.translate"))
def create_curveSphere(name, radius):
    circGrp = pm.group(n=name, em=True)
    circ1 = pm.circle(nr=[1, 0, 0], ch=True)[0]
    circ2 = pm.circle(nr=[1, 0, 0], ch=True)[0]
    circ3 = pm.circle(nr=[1, 0, 0], ch=True)[0]
    circs = [circ1, circ2, circ3]

    circGrp.overrideEnabled.set(1)
    circGrp.overrideColorRGB.set(1, 1, 0)
    circGrp.overrideRGBColors.set(1)

    pm.xform(circGrp, s=[radius, radius, radius])
    pm.xform(circ2, ro=[0, 90, 0])
    pm.xform(circ3, ro=[0, 0, 90])

    pm.makeIdentity([circ1, circ2, circ3], a=True, t=True, r=True, s=True, n=False)

    circ1_shape = pm.listRelatives(circ1, s=True)[0]
    circ2_shape = pm.listRelatives(circ2, s=True)[0]
    circ3_shape = pm.listRelatives(circ3, s=True)[0]

    pm.parent([circ1_shape, circ2_shape, circ3_shape], circGrp, r=True, s=True)
    pm.delete([circ1, circ2, circ3])

    return circGrp
Пример #4
0
def CreateBallCTRL(CTRL_name, CTRL_list, rad):

    # create nurb circles & rotate
    nurbCTRL = pm.circle(n=str(CTRL_name), nr=(1, 0, 0), c=(0, 0, 0), r=rad)
    nurbCTRL1 = pm.circle(n=str('circle1'), nr=(0, 0, 1), c=(0, 0, 0), r=rad)
    nurbCTRL2 = pm.circle(n=str('circle2'), nr=(0, 1, 0), c=(0, 0, 0), r=rad)

    nurbCTRL3 = pm.circle(n=str('circle3'), nr=(1, 0, 0), c=(0, 0, 0), r=rad)
    pm.rotate(nurbCTRL3, [0, 0, 45])

    nurbCTRL4 = pm.circle(n=str('circle4'), nr=(1, 0, 0), c=(0, 0, 0), r=rad)
    pm.rotate(nurbCTRL4, [0, 0, -45])

    # clean all history
    CleanHist(nurbCTRL[0])
    CleanHist(nurbCTRL1[0])
    CleanHist(nurbCTRL2[0])
    CleanHist(nurbCTRL3[0])
    CleanHist(nurbCTRL4[0])

    # reparent shapes
    ReparentShape(nurbCTRL4, nurbCTRL)
    ReparentShape(nurbCTRL3, nurbCTRL)
    ReparentShape(nurbCTRL2, nurbCTRL)
    ReparentShape(nurbCTRL1, nurbCTRL)

    CleanHist(nurbCTRL[0])

    # create offset GRP, parent CTRL to it and add CTRL to list
    offset_GRP = pm.group(em=True, name=str(CTRL_name) + '_offset_GRP')

    RecolourObj(CTRL_name, 'nurbsCurve')
    CTRL_list.append(offset_GRP)
Пример #5
0
def createNurbsSphere(rad = 2, oneName = "sphere_ctrl"):
    circ1 = pm.circle(ch = False, o = True, nr = [1,0,0], r = rad, name = oneName)[0]
    circ2 = pm.circle(ch = False, o = True, nr = [0,1,0], r = rad, name = oneName)[0]
    circ3 = pm.circle(ch = False, o = True, nr = [0,0,1], r = rad, name = oneName)[0]
    pm.parent(circ3.getShape(), circ2.getShape(), circ1, s = True, r = True)
    pm.delete(circ3, circ2)
    return circ1
Пример #6
0
    def bdBuildSphereController(self):
        circleA = pm.circle(n=self.ctrlName + 'A',
                            nr=(0, 1, 0),
                            c=(0, 0, 0),
                            radius=self.ctrlScale)
        circleB = pm.circle(n=self.ctrlName + 'B',
                            nr=(1, 0, 0),
                            c=(0, 0, 0),
                            radius=self.ctrlScale)
        circleC = pm.circle(n=self.ctrlName + 'C',
                            nr=(0, 0, 1),
                            c=(0, 0, 0),
                            radius=self.ctrlScale)

        circleBShape = pm.listRelatives(circleB[0], c=True)
        circleCShape = pm.listRelatives(circleC[0], c=True)
        pm.parent(circleBShape[0], circleA[0], r=True, s=True)
        pm.parent(circleCShape[0], circleA[0], r=True, s=True)
        pm.delete(circleB, circleC)
        ctrl = pm.rename(circleA[0], self.ctrlName)
        ctrlGrp = pm.group(ctrl, n=self.ctrlName + '_grp')

        pm.move(ctrlGrp, self.ctrlPos[0], self.ctrlPos[1], self.ctrlPos[2])
        pm.rotate(ctrlGrp, self.ctrlRot[0], self.ctrlRot[1], self.ctrlRot[2])

        self.ctrlGrp = ctrlGrp
Пример #7
0
    def create_circular_control(self, Obj, **kwargs):
        radius = kwargs.pop('radius', 1)
        axis = kwargs.pop('axis', config.axis_order.upper()[0])
        name = kwargs.pop('name', 'circle')

        Obj = dataValidators.as_pymel_nodes(Obj)
        if name == '':
            default_name = "circularControl"
        else:
            default_name = name
        if axis in "yY":
            control, shape = pm.circle(normal=[0, 1, 0], radius=radius, name=default_name)
        elif axis in "zZ":
            control, shape = pm.circle(normal=[0, 0, 1], radius=radius, name=default_name)
        elif axis in "xX":
            control, shape = pm.circle(normal=[1, 0, 0], radius=radius, name=default_name)

        if name == 'circularControl':
            if self.name_convention.is_name_in_format(Obj):
                self.name_convention.rename_based_on_base_name(Obj, control)
            else:
                self.name_convention.rename_name_in_format(control, name=name, objectType='control')
        else:
            self.name_convention.rename_name_in_format(control, name=name, objectType='control')
        transform.align(Obj, control)

        reset_group = self.rigTools.RMCreateGroupOnObj(control)
        self.scale_controls(reset_group)
        return reset_group, control
Пример #8
0
def createJointOffset(Offset):
    if Offset == "":
        Offset = "Offset"
    selectJoints = pm.selected()

    for joint in selectJoints: 
        offsetObjName = ""
        if prefix.getSelect() == 1: #置き換え
            offsetObjName = re.sub(r"^[a-zA-Z]*?_",Offset+"_",str(joint))
        elif prefix.getSelect() == 2: #追加
            offsetObjName = str(Offset) + "_" + str(joint)  
        offsetObj = pm.group(em = True,name = offsetObjName)
        jointName = re.sub(r"^[a-zA-Z]*?_","Rig_",offsetObjName)
        pm.circle( name=jointName )
        pm.select(jointName,r=30)
        # 回転の軸がなんでこれで(Z)いいのかわからないので確認する。
        pm.rotate(0,0,90,r = True)
        pm.scale(2,2,2)
        pm.makeIdentity(apply=True,t=1,r=1,s=1,n=0,pn=1)
        pm.parent(jointName,offsetObj)
        #AにBをコンストレイント!
        pm.parentConstraint(joint,offsetObj, weight=1)
        #必要のないコンストレイントノードの削除
        delNode = offsetObj.listRelatives(c=True,ad=True,type='constraint')
        pm.delete(delNode)
Пример #9
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
Пример #10
0
def sphereCtrlShape(name, scale=1):
    ctrlObject = pm.circle(n=name, ch=False, normal=[1, 0, 0], radius=scale)[0]
    addShape = pm.circle(n=name, ch=False, normal=[0, 0, 1], radius=scale)[0]
    pm.parent(pm.listRelatives(addShape, s=1), ctrlObject, r=1, s=1)
    pm.delete(addShape)

    common.deleteHistory(ctrlObject)
    common.freezeTranform(ctrlObject)
    return ctrlObject
Пример #11
0
def control_sphere(*arg):
    circle_1 = pm.circle(nr=[0, 1, 0], r=1, d=3, ch=0)
    circle_2 = pm.circle(nr=[1, 0, 0], r=1, d=3, ch=0)
    circle_3 = pm.circle(nr=[0, 0, 1], r=1, d=3, ch=0)

    pm.parent(pm.listRelatives(circle_2, circle_3, shapes=True), circle_1,
              s=True, r=True)
    pm.delete(circle_2, circle_3)
    return circle_1
Пример #12
0
    def create_ctrls(self, i, cv_loc):
        pmc.select(cl=1)
        ctrl_shape = pmc.circle(c=(0, 0, 0),
                                nr=(0, 0, 1),
                                sw=360,
                                r=3,
                                d=3,
                                s=8,
                                n="{0}_{1}_fk_CTRL_shape".format(
                                    self.model.module_name, (i + 1)),
                                ch=0)[0]
        ctrl = rig_lib.create_jnttype_ctrl(name="{0}_{1}_fk_CTRL".format(
            self.model.module_name, (i + 1)),
                                           shape=ctrl_shape,
                                           drawstyle=2,
                                           rotateorder=2)

        inv_ctrl_shape = pmc.circle(c=(0, 0, 0),
                                    nr=(0, 0, 1),
                                    sw=360,
                                    r=2.5,
                                    d=3,
                                    s=8,
                                    n="{0}_{1}_inv_fk_CTRL_shape".format(
                                        self.model.module_name, (i + 1)),
                                    ch=0)[0]
        inv_ctrl = rig_lib.create_jnttype_ctrl(
            name="{0}_{1}_inv_fk_CTRL".format(self.model.module_name, (i + 1)),
            shape=inv_ctrl_shape,
            drawstyle=2,
            rotateorder=2)

        nearest_point_on_curve = pmc.createNode("nearestPointOnCurve",
                                                n="temp_NPOC")
        self.guides[1].worldSpace >> nearest_point_on_curve.inputCurve
        cv_loc.getShape().worldPosition >> nearest_point_on_curve.inPosition
        ctrl.setAttr("translate", nearest_point_on_curve.getAttr("position"))
        inv_ctrl.setAttr("translate",
                         nearest_point_on_curve.getAttr("position"))
        pmc.delete(nearest_point_on_curve)

        pmc.parent(inv_ctrl, self.ctrl_input_grp, r=0)
        if i == 0:
            pmc.parent(ctrl, self.ctrl_input_grp, r=0)
        else:
            pmc.parent(ctrl,
                       "{0}_{1}_fk_CTRL".format(self.model.module_name, i),
                       r=0)
            pmc.reorder(ctrl, front=1)

            pmc.parent(self.created_inv_fk_ctrls[i - 1], inv_ctrl)
            pmc.reorder(self.created_inv_fk_ctrls[i - 1], front=1)

        self.created_fk_ctrls.append(ctrl)
        self.created_inv_fk_ctrls.append(inv_ctrl)
Пример #13
0
def rigMake(mayaFalse):
    #check
    if not pm.ls(
            'Locator_Pivot'
    ):  #first, perform a check to see if locatorMake() has been performed.
        pm.confirmDialog(title=u'SER 武器リグ', message=u'先ず、ピボット設定をしてください。')
        return

    #rest of rig start
    constrLoc = pm.spaceLocator(
        name="Locator_Constraint")  #creating locator to constraint the bone to

    weapJoint = pm.ls('*Joint_Weapon', type='joint')[0]
    pm.xform(
        constrLoc, ws=True, t=pm.xform(weapJoint, q=True, t=True, ws=True)
    )  #moving the newly created constraint locator to the translation position of the joint

    pm.parentConstraint(constrLoc, weapJoint, mo=False)
    contr1 = pm.circle(name='Controller_Weapon_Global', r=9, nr=[0, 1, 0])
    contr2 = pm.circle(name='Controller_Weapon_Local', r=7, nr=[0, 1, 0])

    pm.parent(contr2[0], contr1[0])
    pm.xform(contr1,
             ws=True,
             t=pm.xform('Locator_Pivot', q=True, t=True, ws=True),
             ro=pm.xform('Locator_Pivot', q=True, ro=True, ws=True))
    pm.delete(
        'Locator_Pivot'
    )  #deleting locator pivot after rig controllers have been created.
    pm.parent(constrLoc, contr2[0])

    R_Constr = pm.parentConstraint(
        pm.ls('*Helper_Weapon1')[0],
        contr1[0],
        name='Constraint_Weapon_Global')  #parent constraint to right hand
    L_Constr = pm.parentConstraint(pm.ls('*Helper_Weapon2')[0],
                                   contr1[0])  #parent constraint to left hand
    pm.setAttr(
        'Constraint_Weapon_Global.%s' %
        pm.listAttr('Constraint_Weapon_Global', k=True)[-1], 0)

    pm.setKeyframe('Controller_Weapon_Global')
    pm.setKeyframe('Controller_Weapon_Global',
                   v=1,
                   at='blendWeaponGlobal',
                   itt='auto',
                   ott='step')
    pm.setKeyframe('Constraint_Weapon_Global',
                   v=1,
                   at=pm.listAttr('Constraint_Weapon_Global',
                                  k=True)[-2])  #sets RH constraint to 1
    pm.setKeyframe('Constraint_Weapon_Global',
                   v=0,
                   at=pm.listAttr('Constraint_Weapon_Global',
                                  k=True)[-1])  #sets LH constraint to 0
Пример #14
0
def ballCtrl(radius=20.0, name=''):
    ctrl = pmc.circle(name=name, r=radius, ch=0, o=1, s=8, nr=(0, 1, 0))[0]
    dup1 = pmc.circle(name=name, r=radius, ch=0, o=1, s=8, nr=(1, 0, 0))[0]
    dup2 = pmc.circle(name=name, r=radius, ch=0, o=1, s=8, nr=(0, 0, 1))[0]
    shape = pmc.listRelatives(dup1, shapes=True)[0]
    pmc.parent(shape, ctrl, s=1, r=1)
    shape = pmc.listRelatives(dup2, shapes=True)[0]
    pmc.parent(shape, ctrl, s=1, r=1)
    pmc.delete([dup1, dup2])

    return ctrl
Пример #15
0
    def test_match_object(self):
        a = pm.circle()[0]
        b = pm.circle()[0]

        b.rx.set(75)
        b.ry.set(75)
        b.rz.set(75)

        self.assertFalse(transforms.assertOrientationMatches(a, b))
        control.match_object(a, b)
        self.assertTrue(transforms.assertOrientationMatches(a, b))
Пример #16
0
def create_wire_sphere(name="", color=0):
    wire_sphere = pm.circle(name=name, nr=(0, 0, 1))
    temp1 = pm.circle(name=name + '#', nr=(1, 0, 0))
    temp2 = pm.circle(name=name + '#', nr=(0, 1, 0))

    pm.parent(temp1[0] + "Shape", wire_sphere[0], s=True, r=True)
    pm.parent(temp2[0] + "Shape", wire_sphere[0], s=True, r=True)
    pm.delete(temp1)
    pm.delete(temp2)
    if color > 0:
        color_controller(wire_sphere[0], color)
    return wire_sphere[0]
def LipsBuild():
	pm.select(cl=True)
	lipLocs = pm.listRelatives("lipGrp",c=True)
	lipJntGrp = pm.group(n = "LipJnt_Grp")
	for i in range(len(lipLocs)):
		pm.select(cl=True)
		jntName = lipLocs[i].split("_")
		lipJnt = pm.joint(n=jntName[0]+"Jnt_"+jntName[1])
		pm.delete(pm.parentConstraint(lipLocs[i],lipJnt))
		pm.parent(lipJnt,lipJntGrp)

	### Lips Ctrl Created on Locators ###
	lipJntHier = pm.listRelatives(lipJntGrp,c=True)
	pm.select(cl=True)
	lipCtrlGrp = pm.group(n="LipCtrl_Grp")
	for i in range(len(lipJntHier)):
		pm.select(cl=True)
		jntCtrlName = lipJntHier[i].split("Jnt")
		offsetJnt = pm.joint(n="FKOffset"+jntCtrlName[0]+jntCtrlName[1])
		pm.setAttr(offsetJnt+".drawStyle",2)
		pm.select(cl=True)
		extraGrp = pm.group(n="FKExtra"+jntCtrlName[0]+jntCtrlName[1])
		pm.parent(extraGrp,offsetJnt)
		pm.select(cl=True)
		ctrl = pm.circle(n="FK"+jntCtrlName[0]+jntCtrlName[1]+"_CTRL",r=.2,ch=False)
		fkxJnt = pm.joint(n="FKX"+jntCtrlName[0]+jntCtrlName[1])
		pm.setAttr(fkxJnt+".drawStyle",2)
		pm.parent(ctrl[0],extraGrp)
		pm.parent(offsetJnt,lipCtrlGrp)
		pm.delete(pm.parentConstraint(lipJntHier[i],offsetJnt))
		pm.parentConstraint(fkxJnt,lipJntHier[i])
	pm.select(cl=True)
	lipGrp = pm.group(n = "LipGrp")
	pm.parent([lipCtrlGrp,lipJntGrp],lipGrp)
	pm.select(cl=True)
	if not pm.objExists("FacialGroup"):
		facialgrp = pm.group(n = "FacialGroup")
	pm.parent(lipGrp,"FacialGroup")
	
	pm.delete("lipGrp")
	pm.select(cl=True)
	### Lip Mover......
	lipmoverGrp = pm.group(n="LipMoverGrp")
	lipmoverCtrl = pm.circle(n="LipMover_CTRL",ch=False)
	pm.parent(lipmoverCtrl,lipmoverGrp)
	pm.delete(pm.parentConstraint("LipGrp",lipmoverGrp))
	pm.xform("LipMoverGrp",t=[0,0,1])
	pm.parentConstraint(lipmoverCtrl,"LipGrp",mo=True)
	pm.parent(lipmoverGrp,"FacialGroup")
	
	
	print ("Lips Build......."),
Пример #18
0
    def build_tweek_ctrls(self, follicles):
        """ 
        Args:
            None
        Returns (None)
        """
        base_name = '%s_flexiPlane' % self.flexiPlaneNameField.getText()
        follicle_prefix = '%s_flexiPlane_' % self.flexiPlaneNameField.getText()
        mainCTRLGRP = self.flexiPlaneNameField.getText() + '_flexiPlane_main_CTRLCon_GRP'
        main_crv_name =  '%s_main_CTRL' % base_name
        tweekCTRLGRP = pm.group( em = True, name = self.flexiPlaneNameField.getText() + '_flexiPlane_tweakCTRL_GRP' )
        tweekCTRLGRP.setAttr( 'inheritsTransform', 0 )
        pm.parent( tweekCTRLGRP, mainCTRLGRP )
        

        for index,follicle in enumerate(follicles):
            tweek_crv_name = self.format_string.format(PREFIX = self.flexiPlaneNameField.getText(),
                                                 INDEX = 'flexiPlane_tweak%03d' % (index+1),
                                                 SUFFIX = 'CTRL')
            pm.circle( c = (0, 0, 0 ), nr = ( 0, 1, 0 ), sw = 360, r = 1, d = 3, ut = 0, tol = 0.000129167, s = 8, n = tweek_crv_name, ch = 0 )
            pm.setAttr( tweek_crv_name + '.scaleX', .5 )
            pm.setAttr( tweek_crv_name + '.scaleY', .5 )
            pm.setAttr( tweek_crv_name + '.scaleZ', .5 )
            pm.setAttr( tweek_crv_name + '.overrideEnabled', 1 )
            pm.setAttr( tweek_crv_name + '.overrideColor', 17 )
            pm.makeIdentity( tweek_crv_name, apply=True, translate=True, rotate=True, scale=True )
            pm.setAttr( tweek_crv_name + '.overrideEnabled', 1 )
            pm.setAttr( tweek_crv_name + '.overrideColor', 17 )
            
            pm.duplicate( tweek_crv_name, n= tweek_crv_name + 'A' )
            pm.setAttr( tweek_crv_name + 'A.rotateZ', -90 )
            pm.makeIdentity( tweek_crv_name + 'A', apply=True, translate=True, rotate=True, scale=True )
            
            pm.duplicate( tweek_crv_name, n= tweek_crv_name + 'B' )
            pm.setAttr( tweek_crv_name + 'B.rotateZ', -90 )
            pm.setAttr( tweek_crv_name + 'B.rotateX', -90 )
            pm.makeIdentity( tweek_crv_name + 'B', apply=True, translate=True, rotate=True, scale=True )
            
            pm.parent( tweek_crv_name + 'AShape', tweek_crv_name + 'BShape', tweek_crv_name, add = True, shape = True )
            pm.delete( tweek_crv_name + 'A', tweek_crv_name + 'B')
            
            pm.select(tweek_crv_name, r=True)
            offSetGRP.add_offset_grps()
            conGRP.add_con_grps()
            pm.select(clear = True)
            
            pm.connectAttr( follicle + '.translate', tweek_crv_name + 'Offset_GRP.translate' )
            pm.connectAttr( follicle + '.rotate', tweek_crv_name + 'Offset_GRP.rotate' )
            pm.parent( tweek_crv_name + 'Offset_GRP', tweekCTRLGRP )
            pm.scaleConstraint( main_crv_name, tweek_crv_name + 'Offset_GRP' )
 
            pm.select( clear = True)
Пример #19
0
 def makeCtrl(self, name):
         c1 = pm.circle(r=1, s=8, n="{}_CTR".format(name))[0]
         c2 = pm.circle(r=1, s=8, n="{}A_CTR".format(name))[0]
         c3 = pm.circle(r=1, s=8, n="{}B_CTR".format(name))[0]
         pm.parent(c2.getShape(), c1, s=1, r=1)
         pm.parent(c3.getShape(), c1, s=1, r=1)
         pm.delete(c2)
         pm.delete(c3)
         s = c1.getShape().split("_")
         pm.select("{}A_{}.cv[0:7]".format(s[0], s[1]), r=1)
         pm.rotate(0, 0, 90)
         pm.select("{}B_{}.cv[0:7]".format(s[0], s[1]), r=1)
         pm.rotate(0, 90, 0)
         pm.select(cl=1)
         return c1
Пример #20
0
def CtrlForThis(createZeroGroup=False, dist=1):

    ctrls = []  # ctrls names for return

    objsToPutCtrlOn = pm.ls(sl=True)

    # for every selected object create ctrl curves

    for i in range(len(objsToPutCtrlOn)):
        objToPutCtrlOn = objsToPutCtrlOn[i]
        # create circle, find the proper name for the contorl curve and name the circle
        if str(objToPutCtrlOn)[-3:] == "jnt":
            ctrl = pm.circle(nr=(1, 0, 0),
                             r=dist,
                             ch=False,
                             name=str(objToPutCtrlOn).replace("jnt", "ctrl"))
        else:
            ctrl = pm.circle(nr=(1, 0, 0),
                             r=dist,
                             ch=False,
                             name=(str(objToPutCtrlOn) + "_ctrl"))

        # parent curve to corisponding joint
        pm.parent(ctrl[0], objToPutCtrlOn)

        #reset tranform values on circles
        pm.xform(ctrl[0], t=(0, 0, 0), ro=(0, 0, 0))

        firstParent = pm.listRelatives(objToPutCtrlOn,
                                       fullPath=True,
                                       parent=True)

        # parent ctrls to their firstgrandparent
        if firstParent:
            pm.parent(ctrl[0], firstParent[0])
        else:
            pm.parent(ctrl[0], world=True)

        pm.parent(objToPutCtrlOn, ctrl[0])

        ctrls.append(ctrl[0])

    # create zero groups if needed - add zero groups as well to return value
    if createZeroGroup == True:
        pm.select(ctrls)
        ctrls.extend(ZeroGrp())

    return ctrls
Пример #21
0
    def bdCreateCircleZCon(self):
        print 'Circle Z Controller'
        animConName = self.bdGetConName()
        if animConName != '':
            conSize = self.inputConSize.text()
            overrideColor = self.conColors[str(
                self.inputConSide.currentText())]
            if not conSize:
                conSize = 1

            selection = pm.ls(sl=True)
            selPos = [0, 0, 0]
            selRot = [0, 0, 0]
            if selection:
                selPos = selection[0].getTranslation(space='world')
                selRot = selection[0].getRotation(space='world')

            circleCon = pm.circle(n=animConName,
                                  nr=(0, 1, 0),
                                  c=(0, 0, 0),
                                  radius=int(conSize))[0]
            circleCon.getShape().overrideEnabled.set(1)
            circleCon.getShape().overrideColor.set(overrideColor)

            circleConGrp = pm.group(circleCon, name=circleCon.name() + '_GRP')
            conCvs = circleCon.cv
            zDirectionPos = conCvs[5].getPosition(space='world')
            zDirectionPos[2] = zDirectionPos[2] * 1.25
            print zDirectionPos
            conCvs[5].setPosition(zDirectionPos)

            circleConGrp.setTranslation(selPos, space='world')
            circleConGrp.setRotation(selRot, space='world')
        else:
            pm.warning('Need a name, aborting')
Пример #22
0
def build_upper_halfbox(type, label=[], connections=True):
    if not pm.objExists(type + "_Prnt"):
        mainDict = {}

        squareShape = [[-1.0, 1.0, 0.0],
                       [-1.0, 0.0043876273513161479, 0.0],
                       [1.0, 0.0043876273513161479, 0.0],
                       [1.0, 1.0, 0.0],
                       [-1.0, 1.0, 0.0]]

        box = pm.curve(d=1, p=squareShape, n=type + "_Prnt")
        boxShape = box.getShape()
        boxShape.overrideEnabled.set(1)
        boxShape.overrideDisplayType.set(1)
        ctrl = pm.circle(nr=[0, 0, 0], r=0.2, ch=0, n=type + "_Ctrl")[0]
        pm.parent(ctrl, box)
        pm.transformLimits(ctrl, tx=[-1, 1], etx=[1, 1], ety=[1, 1], ty=[0, 1])
        libUtilities.lockAttr(str(ctrl), ["tz", "rx", "ry", "rz", "sx", "sy", "sz", "v"])

        mainDict["border"] = box
        mainDict["ctrl"] = ctrl

        if connections:
            connect_dict = {}
            connect_dict["TopLeftCorner"] = build_left_top_corner(type, ctrl)
            connect_dict["TopRightCorner"] = build_right_top_corner(type, ctrl)
            mainDict["connections"] = connect_dict

        if label:
            mainDict["label"] = build_label(label, box)

        return mainDict
    else:
        raise Exception(type + " setup already exists")
Пример #23
0
    def test_create_heirarchy(self):
        # Test on object with parent
        jnts = []
        jnts.append(pm.joint(p=(1, 1, 1)))
        jnts.append(pm.joint(p=(2, 2, 2)))
        crv = pm.circle()[0]
        pm.delete(pm.parentConstraint(jnts[-1], crv, mo=0))
        pm.parent(crv, jnts[-1])

        grps = control.create_heirarchy('temp', crv, 5)

        count = 0
        for g in grps:
            self.assertTrue(
                transforms.assertLocationsMatch(g, crv))
            self.assertTrue(
                transforms.assertDefaultScale(g))
            if count > 0:
                self.assertTrue(
                    transforms.assertAllZero(g))
                self.assertTrue(
                    transforms.assertParentIs(g, grps[count-1]))
            count += 1

        self.assertEqual(grps[0].name(), 'temp_top_node')
        self.assertEqual(grps[-1].name(), 'temp_btm_node')
        self.assertTrue(transforms.assertParentIs(crv,
                                                  grps[-1]))
        self.assertTrue(transforms.assertParentIs(grps[0],
                                                  jnts[-1]))
        self.assertTrue(transforms.assertAllZero(crv))
        self.assertTrue(transforms.assertDefaultScale(crv))
Пример #24
0
def addJacketCollarRig():
    # jacket collar rig
    collarjnts = pm.ls(sl=True)
    # add hm, grp and auto nulls
    for jnt in collarjnts:
        ctl = pm.circle(r=0.5, sweep=359, normal=(1,0,0), n=jnt.replace('_jnt', '_ctl'))
        auto = pm.group(ctl, n=jnt.replace('_jnt', '_auto'))
        grp = pm.group(auto, n=jnt.replace('_jnt', '_grp'))
        hm = pm.group(grp, n=jnt.replace('_jnt', '_hm'))
        wMat = jnt.getMatrix(worldSpace=True)
        hm.setMatrix(wMat, worldSpace=True)
        collarparent = jnt.getParent()
        collarparent | hm
        auto | jnt
    # auto
    import rigger.modules.poseReader as poseReader
    reload(poseReader)
    xfo = nt.Joint(u'Mathilda_neck_jnt')
    poseReader.radial_pose_reader(xfo, (1,0,0), (1,0,0))
    # connect auto to sdks
    import utils.rigging as rt
    import rigger.utils.modulate as modulate
    angleMult = pm.PyNode('Mathilda_neck_jnt.vectorAngle')
    # Left collar A
    rt.connectSDK('Mathilda_neck_jnt.param', 'LT_collarA_auto.rz',
                    {3.25:0, 4.6:50, 5.5:0})
    mod = modulate.multiplyInput(pm.PyNode('LT_collarA_auto.rz'), 0, '_angle')
    angleMult >> mod
    # Letf collar B
    rt.connectSDK('Mathilda_neck_jnt.param', 'LT_collarB_auto.rz',
                    {4:0, 5:180, 6:180, 7:0})
    mod = modulate.multiplyInput(pm.PyNode('LT_collarB_auto.rz'), 0, '_angle')
    angleMult >> mod
    # Letf collar C
    rt.connectSDK('Mathilda_neck_jnt.param', 'LT_collarC_auto.rz',
                    {0:200, 1.4:0, 4:0, 5.5:200, 6.6:280, 8:0})
    mod = modulate.multiplyInput(pm.PyNode('LT_collarC_auto.rz'), 0, '_angle')
    angleMult >> mod
    # center collar
    rt.connectSDK('Mathilda_neck_jnt.param', 'CT_collar_auto.rz',
                    {0:320, 2.5:0, 5.5:0, 8:320})
    mod = modulate.multiplyInput(pm.PyNode('CT_collar_auto.rz'), 0, '_angle')
    angleMult >> mod
    # right collar A
    rt.connectSDK('Mathilda_neck_jnt.param', 'RT_collarA_auto.rz',
                    {4.75:0, 3.4:50, 2.5:0})
    mod = modulate.multiplyInput(pm.PyNode('RT_collarA_auto.rz'), 0, '_angle')
    angleMult >> mod
    # right collar B
    rt.connectSDK('Mathilda_neck_jnt.param', 'RT_collarB_auto.rz',
                    {4:0, 3:180, 2:180, 1:0})
    mod = modulate.multiplyInput(pm.PyNode('RT_collarB_auto.rz'), 0, '_angle')
    angleMult >> mod
    # right collar C
    rt.connectSDK('Mathilda_neck_jnt.param', 'RT_collarC_auto.rz',
                    {0:200, 6.6:0, 4:0, 2.5:200, 1.4:280, 8:0})
    mod = modulate.multiplyInput(pm.PyNode('RT_collarC_auto.rz'), 0, '_angle')
    angleMult >> mod
    
    pm.select(pm.PyNode(u'Mathilda_neck_jnt.param').outputs())
Пример #25
0
def build_y_halfbox(type, label=[]):
    if not pm.objExists(type + "_Prnt"):
        mainDict = {}

        squareShape = [[-0.112423266524, 1.0, 0.0],
                       [-0.112423266524, -1.0, 0.0],
                       [0.112423266524, -1.0, 0.0],
                       [0.112, 1.0, 0.0],
                       [-0.112423266524, 1.0, 0.0]]

        box = pm.curve(d=1, p=squareShape, n=type + "_Prnt")
        boxShape = box.getShape()
        boxShape.overrideEnabled.set(1)
        boxShape.overrideDisplayType.set(1)

        ctrl = pm.circle(nr=[0, 0, 0], r=0.2, ch=0, n=type + "_Ctrl")[0]
        pm.parent(ctrl, box)
        pm.transformLimits(ctrl, tx=[0, 0], etx=[1, 1], ety=[1, 1], ty=[-1, 1])
        libUtilities.lockAttr(str(ctrl), ["tz", "tx", "rx", "ry", "rz", "sx", "sy", "sz", "v"])

        mainDict["border"] = box
        mainDict["ctrl"] = ctrl

        if label:
            mainDict["label"] = build_label(label, box)

        return mainDict

    else:
        raise Exception(type + " setup already exists")
Пример #26
0
def strokePath(node, radius=.1):
    """
    Create a nurbs surface from a curve control
    """
    curveNodes = separateShapes(node)
    for curveNode in curveNodes:
        shape = curveNode.listRelatives(type='nurbsCurve')[0]
        t = pm.pointOnCurve(shape, p=0, nt=1)
        pos = pm.pointOnCurve(shape, p=0)
        cir = pm.circle(r=radius)[0]
        pm.xform(cir, t=pos, ws=1)

        #align the circule along the curve
        l = pm.spaceLocator()
        pm.xform(l, t=[pos[0]+t[0], pos[1]+t[1], pos[2]+t[2]], ws=1)
        pm.delete(pm.aimConstraint(l, cir, aimVector=[0,0,1]))
        pm.delete(l)

        newxf = pm.extrude(cir, curveNode, rn=False, po=0, et=2, ucp=1,
                            fpt=1, upn=1, scale=1, rsp=1, ch=1)[0]
        pm.delete(cir)
        pm.delete(curveNode.listRelatives(type='nurbsCurve'))
        parentShape(curveNode, newxf)
    if len(curveNodes) > 1:
        for i in range(1, len(curveNodes)):
            parentShape(curveNodes[0], curveNodes[i])
    return curveNodes[0]
Пример #27
0
def create_ctrl(node=None):

    tgt = "NAME"

    if node:
        tgt = node.name()

    else:
        sel = pm.selected(type="transform")
        if sel:
            ctrls = []
            for node in sel:
                ctrls.append(create_ctrl(node))
            return ctrls

    ctrl_name = get_unique_name(tgt + "_CTRL")
    ctrl = pm.circle(normal=[1, 0, 0], name=ctrl_name)[0]
    offset_grp = pm.group(empty=True, name=ctrl_name + "_offsetGrp")
    spaces_grp = pm.group(empty=True, name=ctrl_name + "_spacesGrp")
    spaces_grp.setParent(offset_grp)
    ctrl.setParent(spaces_grp)
    if node:
        pm.matchTransform(offset_grp, tgt)
        pm.parentConstraint(ctrl, tgt)

    ctrl.setAttr("scaleX", lock=True, keyable=False)
    ctrl.setAttr("scaleY", lock=True, keyable=False)
    ctrl.setAttr("scaleZ", lock=True, keyable=False)
    ctrl.setAttr("visibility", lock=True, keyable=False)

    return ctrl
Пример #28
0
def makeFk(sel, inputRoot):

	currentChain = pm.ls(selection = True, dag = True)

	if sel == False:
		currentChain = pm.ls(inputRoot, dag = True)

	controlList = []
	primeList = []
	createPad(currentChain[0])

	for j, item in enumerate(currentChain):
		if j != len(currentChain) - 1:
			
			index = item.rfind('_')
			newName = item[:index] + '_ctrl'
			newControl = pm.circle(nr = [1,0,0], r = 1, n = newName)[0]
			newPrime = createPrime(item, newControl)
			pm.orientConstraint(newControl, item, mo = False)
			controlList.append(newControl)
			primeList.append(newPrime)

	for x, item in enumerate(primeList):
		if x != len(primeList) - 1:
			pm.parent(primeList[x + 1], controlList[x])
Пример #29
0
 def createFkControl(self, name=None, jnt=None):
     ''' Create a curve, parent shape to joint, lock translations. '''
     temp = pm.circle(name='%s_%s_FK_ctrl' % (name, jnt))
     pm.delete(pm.parentConstraint(jnt, temp[0], mo=0))
     shape = temp[0].getShape()
     pm.parent(shape, jnt, shape=True, r=1)
     pm.delete(temp[0])
Пример #30
0
def priming(*args):
	jointChain = pm.ls(sl = True, dag = True)[:-1]

	iconList = []
	topGroup = []

	i = 0

	for jointName in jointChain:
	    iconName = jointName.replace("bind", "ctrl")
	    primeIcon = pm.circle(nr = [1, 0, 0], n = iconName)

	    groupOneName = jointName.replace('bind', 'prime3')
	    groupOne = pm.group(primeIcon, n = groupOneName)

	    groupTwoName = jointName.replace('bind', 'prime2')
	    groupTwo = pm.group(groupOne, n = groupTwoName)

	    groupThreeName = jointName.replace('bind', 'prime1')
	    groupThree = pm.group(groupTwo, n = groupThreeName)

	    tempConstraint = pm.parentConstraint(jointName, groupThree, mo = False)
	    pm.delete(tempConstraint)

	    pm.makeIdentity(primeIcon, a = True, t = True, r = True, s = True)
	    pm.parentConstraint(primeIcon, jointName, mo = True)

	    iconList.append(primeIcon)
	    topGroup.append(groupThree)
		
	    if (i > 0):
	        pm.parent(topGroup[i], iconList[i-1])
	        
	    i = i + 1
Пример #31
0
 def circle(self):
     """Create a nurbsCurve circle"""
     if self._guide:
         self.srt = pm.circle(n=self._guide.replace('guide', 'ctrl'),
                              nr=[1, 0, 0])[0]
     else:
         self.srt = pm.circle(n='%s_ctrl_srt' % self._component.name,
                              nr=[1, 0, 0])[0]
     if self.buffers:
         self.srt.setParent(self.buffers[-1])
     else:
         self.srt.setParent(self.hrc)
     if self._guide:
         pac = pm.parentConstraint(self._guide, self.hrc, mo=False)
         pm.delete(pac)
     self._set_default_colors()
Пример #32
0
def rig_joint(joint):
    '''
    '''
    #- create
    ctl = pm.createNode('transform', name='XXnamespaceXX_ctl_0')
    cth = pm.createNode('transform', name='XXnamespaceXX_cth_0')
    ctg = pm.createNode('transform', name='XXnamespaceXX_ctg_0')
    grp = pm.createNode('transform', name='XXnamespaceXX_grp_0')

    #- parent
    pm.parent(ctl, cth)
    pm.parent(cth, ctg)
    pm.parent(ctg, grp)

    #- match positions
    pm.delete(pm.parentConstraint(joint, grp))

    #- constraint
    pm.parentConstraint(ctl, joint)

    #- control shape
    circle = pm.circle(nr=(1, 0, 0), ch=False)[0]
    pm.parent(circle.getShape(), ctl, s=True, r=True)
    pm.delete(circle)

    return ctl, cth, ctg, grp
Пример #33
0
def organize():
	"""
	Create group structure to hold the helpers rig
	"""

	rigHelpersGrp = pm.group(name='rigHelpers_grp', em=True)

	for side in ['L', 'R']:
		pm.parent(side + '_leg_0_rigHelper', rigHelpersGrp)
		pm.parent(side + '_arm0_rigHelper', rigHelpersGrp)

	pm.parent('M_spine0_rigHelper', rigHelpersGrp)

	crvsGrp = pm.group(n='crvs_grp', em=True)

	for side in ['L','R']:
		pm.parent(side + '_leg_helper_grp', crvsGrp)
		pm.parent(side + '_arm_helper_grp', crvsGrp)

	pm.parent('M_spine_helper_grp', crvsGrp)

	scaleCtrl = pm.circle(n='scale_ctrl', r=1, nr=(0,1,0))
	rigUtils.setControlColor(scaleCtrl[0])

	pm.parent(rigHelpersGrp, scaleCtrl[0])

	helpersGrp = pm.group(n='helpers_grp', em=True)
	pm.parent(crvsGrp, helpersGrp)
	pm.parent(scaleCtrl[0], helpersGrp)
Пример #34
0
    def bdCreateCircleCon(self):
        print 'Circle Controller'
        test = mui.MQtUtil.findControl('createConBtn1')
        print test

        animConName = self.bdGetConName()
        if animConName != '':
            conSize = self.inputConSize.text()
            overrideColor = self.conColors[str(
                self.inputConSide.currentText())]

            if not conSize:
                conSize = 1

            selection = pm.ls(sl=True)
            selPos = [0, 0, 0]
            selRot = [0, 0, 0]
            if selection:
                selPos = selection[0].getTranslation(space='world')
                selRot = selection[0].getRotation(space='world')

            circleCon = pm.circle(n=animConName,
                                  nr=(0, 1, 0),
                                  c=(0, 0, 0),
                                  radius=float(conSize))[0]
            circleCon.getShape().overrideEnabled.set(1)
            circleCon.getShape().overrideColor.set(overrideColor)
            circleConGrp = pm.group(circleCon, name=circleCon.name() + '_GRP')
            circleConGrp.setTranslation(selPos)
            circleConGrp.setRotation(selRot)
        else:
            pm.warning('Need a name, aborting')
Пример #35
0
    def create_manipulator(self, selected_node):
        """
        Create manipulator for given node.
        """

        #selected_node_name
        selected_node_name = selected_node.name()

        #grp_manipulator_node
        grp_manipulator_node = pm.group(
            em=True, n='grp_manip_{0}'.format(selected_node_name))
        pm.select(cl=True)

        #manipulator_node
        manipulator_node = pm.circle(
            nr=(0, 1, 0),
            c=(0, 0, 0),
            s=32,
            ch=False,
            n='manip_{0}'.format(selected_node_name))[0]
        pm.select(cl=True)

        #parent
        pm.parent(manipulator_node, grp_manipulator_node)
        pm.select(cl=True)

        #return
        return manipulator_node
Пример #36
0
def circleCtrlShape(name, normalDirection=[1, 0, 0], scale=1):
    ctrlObject = pm.circle(n=name,
                           ch=False,
                           normal=normalDirection,
                           radius=scale)[0]

    return ctrlObject
	def vis_orbits(self):
		global vis_orbGrp
		vis_orbGrp = pm.group(n='olp_visOrbits', em=True)

		intervValue = self.interv_int.value()
		distValue = self.distance_float.value()
		orbitValue = self.orbit_int.value()

		global all_orbitObjs
		all_orbitObjs = []
		for orbit in range(orbitValue):
			orbitRot = orbit * 360/float(orbitValue*2)
			
			orbit_visObject = pm.circle(n='olp_orbCircle{0}'.format(orbit+1), r=distValue, s=intervValue*2, nr=[1, 0, 0], ch=True)[0]
			pm.parent(orbit_visObject, vis_orbGrp)

			orbit_visObject.overrideEnabled.set(1)
			orbit_visObject.overrideColorRGB.set(0, 1, 1)
			orbit_visObject.overrideRGBColors.set(1)

			pm.xform(orbit_visObject, ro=[0, 0, orbitRot])

			all_orbitObjs.append(orbit_visObject)

		pm.xform(vis_orbGrp, a=True, t=sel_center)
		pm.parent(vis_orbGrp, vis_mainGrp)
		pm.select(sel_objects, r=True)
		return vis_orbGrp
Пример #38
0
    def __createNode__(self, size=None, normal=(1,0,0), multiplier=1.0, refs=None, offset=None, geometries=None, *args, **kwargs):
        """
        Create a simple circle nurbsCurve.
        size: The maximum dimension of the controller.
        """
        # Hack: Ensure geometries are hashable
        if isinstance(geometries, list):
            geometries = tuple(geometries)

        # Resolve size automatically if refs are provided.
        ref = next(iter(refs), None) if isinstance(refs, collections.Iterable) else refs
        if size is None:
            if ref is not None:
                size = libRigging.get_recommended_ctrl_size(ref, geometries=geometries) * multiplier
            else:
                size = 1.0

        transform, make = pymel.circle()
        make.radius.set(size)
        make.normal.set(normal)

        # Expose the rotateOrder
        # transform.rotateOrder.setKeyable(True)

        return transform
Пример #39
0
def create_single_rotation_ctrl(joint_node):
    cc = pm.circle()[0]
    cc.rename(TEMP_NAME)
    cc.getShape().rename(joint_node.nodeName() + "Shape")
    pm.select(cc.getShape(), joint_node)
    pm.parent(shape=True, relative=True)
    pm.delete(cc.nodeName())
Пример #40
0
    def buildIK(self, *args):
        """
            Build the IK
        """
        #Setup variables
        if self.normal == 1:
            self.normal = (1, 0, 0)
        if self.normal == 2:
            self.normal = (0, 1, 0)
        if self.normal == 3:
            self.normal = (0, 0, 1)   

        #Create IK control
        self.ikControl = pm.circle(nr=self.normal, r=self.radius, n='%s_ikCnt'%self.prefix)
        pm.select(self.ikControl[0], r=True)
        pm.mel.eval("DeleteHistory;")
        pm.delete( pm.parentConstraint(self.ikChain[2], self.ikControl[0], mo=0) )
        self.zero(self.ikControl[0])               

        #Create RP IK
        self.arm_ikHandle = pm.ikHandle(sj=self.ikChain[0], ee=self.ikChain[2], solver='ikRPsolver', name=(self.prefix + '_armIkHandle'))
        pm.setAttr(self.arm_ikHandle[0] + '.visibility', 0)

        #Parent IK Handle to the ikWrist_cnt
        pm.parent(self.arm_ikHandle[0], self.ikControl[0])

        # Creates: self.pv_cnt
        self.createPoleVector()
Пример #41
0
	def bdCreateCircleCon(self):
		print 'Circle Controller'
		test = mui.MQtUtil.findControl('createConBtn1')
		print test
		
		animConName = self.bdGetConName()
		if animConName != '':
			conSize = self.inputConSize.text()
			overrideColor = self.conColors[str(self.inputConSide.currentText())]
	
			if not conSize:
				conSize=1
				
			selection = pm.ls(sl = True)
			selPos = [0,0,0]
			selRot = [0,0,0]
			if selection:
				selPos = selection[0].getTranslation(space='world')
				selRot = selection[0].getRotation(space='world')
						
			circleCon = pm.circle(n = animConName ,nr=(0, 1, 0), c=(0, 0, 0),radius=float(conSize) ) [0]
			circleCon.getShape().overrideEnabled.set(1)
			circleCon.getShape().overrideColor.set(overrideColor)
			circleConGrp = pm.group(circleCon,name = circleCon.name() + '_GRP')
			circleConGrp.setTranslation(selPos)
			circleConGrp.setRotation(selRot)
		else:
			pm.warning('Need a name, aborting')
Пример #42
0
	def bdCreateCircleZCon(self):
		print 'Circle Z Controller'
		animConName = self.bdGetConName()
		if animConName!='':
			conSize = self.inputConSize.text()
			overrideColor = self.conColors[str(self.inputConSide.currentText())]
			if not conSize:
				conSize=1
				
			selection = pm.ls(sl = True)
			selPos = [0,0,0]
			selRot = [0,0,0]
			if selection:
				selPos = selection[0].getTranslation(space='world')
				selRot = selection[0].getRotation(space='world')
						
			circleCon = pm.circle(n = animConName ,nr=(0, 1, 0), c=(0, 0, 0),radius=int(conSize) )[0]
			circleCon.getShape().overrideEnabled.set(1)
			circleCon.getShape().overrideColor.set(overrideColor)
			
			circleConGrp = pm.group(circleCon,name = circleCon.name() + '_GRP')
			conCvs = circleCon.cv
			zDirectionPos = conCvs[5].getPosition(space = 'world')
			zDirectionPos[2] = zDirectionPos[2] * 1.25
			print zDirectionPos
			conCvs[5].setPosition(zDirectionPos)
			
			circleConGrp.setTranslation(selPos,space='world')
			circleConGrp.setRotation(selRot,space='world')
		else:
			pm.warning('Need a name, aborting')
Пример #43
0
def bdAddFkCtrls(scale=1, color=1):
    selection = pm.ls(sl=1, type='joint')
    pm.select(cl=1)
    if selection:
        for rootJnt in selection:
            chainJnt = rootJnt.listRelatives(type='joint', ad=True, f=True)
            # chainJnt.reverse()
            chainJnt.append(rootJnt)

            for jnt in chainJnt:
                pos = jnt.getTranslation(space='world')
                rot = jnt.getRotation(space='world')
                pm.select(cl=1)
                ctrl = pm.circle(name=jnt.name() + '_ctrl',
                                 c=[0, 0, 0],
                                 nr=[1, 0, 0],
                                 ch=0,
                                 radius=scale)[0]
                ctrlGrp = pm.group(ctrl, n=ctrl.name() + '_grp')
                pm.select(cl=1)
                ctrlGrp.setTranslation(pos, space='world')
                ctrlGrp.setRotation(rot, space='world')

                ctrl.getShape().overrideEnabled.set(1)
                ctrl.getShape().overrideColor.set(color)
Пример #44
0
    def addMainCtrl(self):
        pos = self.ikJntList[0].getTranslation(space='world')

        ctrl = pm.circle(name=self.name + '_main_ctrl',
                         radius=self.width * 2)[0]
        pm.delete(ctrl, ch=1)

        ctrlGrp = pm.group(ctrl, name=ctrl.name() + '_grp')
        pm.parent(ctrlGrp, self.mainGrp)

        print pos
        ctrlGrp.setTranslation(pos, space='world')
        pm.parentConstraint(ctrl, self.jntGrp, mo=1)

        self.mainCtrl = ctrl
        pm.addAttr(self.mainCtrl,
                   shortName='stretch',
                   minValue=0.0,
                   maxValue=1.0,
                   defaultValue=0.0,
                   keyable=1)
        self.stretchRev = pm.shadingNode('reverse',
                                         name=self.name + '_stretch_rev',
                                         asUtility=1)
        self.mainCtrl.stretch >> self.stretchRev.inputX

        pm.parentConstraint(self.mainCtrl, self.allCtrlGrp, mo=1)
Пример #45
0
def shapeGenerate(shape="circle",name="new_controller"):
	'''
	generate controller shape
	general rule is 1 controller fit 15 unit tall figure
	'''
	if shape == "circle":
		c = pm.circle(nr=[1,0,0],ch=False,n=name)[0]
	elif shape == "square":
		c = pm.curve(d=1, p=[(-1,0,1), (-1,0,-1), (1,0,-1), (1,0,1), (-1,0,1)], k=[0,1,2,3,4],n=name )
	elif shape == "sphere":
		c = pm.curve(d=1, p=[(-1,0,0),(-0.66,0,-0.66),(0,0,-1),(0.66,0,-0.66),(1,0,0),(0.66,0,0.66),(0,0,1),(-0.66,0,0.66),(-1,0,0),(-0.66,0.66,0),(0,1,0),(0.66,0.66,0),(1,0,0),(0.66,-0.66,0),(0,-1,0),(-0.66,-0.66,0),(-1,0,0),(-0.66,0.66,0),(0,1,0),(0,0.66,0.66),(0,0,1),(0,-0.66,0.66),(0,-1,0),(0,-0.66,-0.66),(0,0,-1),(0,0.66,-0.66),(0,1,0)], 
								k=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],n=name  )
	elif shape == "cube":
		c= pm.curve(d=1, p=[(1,-1,1),(1,-1,-1),(-1,-1,-1),(-1,-1,1),(1,-1,1),(1,1,1),(1,1,-1),(-1,1,-1),(-1,1,1),(1,1,1),(-1,1,1),(-1,-1,1),(-1,-1,-1),(-1,1,-1),(1,1,-1),(1,-1,-1)], 
								k=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],n=name  )
	elif shape == "arrow":
		c= pm.curve(d=1, p=[(-0.5,0,-1),(-0.5,0,0.25),(-1,0,0.25),(0,0,1),(1,0,0.25),(0.5,0,0.25),(0.5,0,-1),(-0.5,0,-1)], 
								k=[0,1,2,3,4,5,6,7],n=name )
	elif shape == "cross":
		c = pm.curve(d=1, p=[(-0.33333,0,1),(-0.33333,0,0.333333),(-1,0,0.333333),(-1,0,-0.333333),(-0.33333,0,-0.333333),(-0.33333,0,-1),(0.333333,0,-1),(0.333333,0,-0.333333),(1,0,-0.333333),(1,0,0.333333),(0.333333,0,0.333333),(0.333333,0,1),(-0.33333,0,1)], 
								k=[0,1,2,3,4,5,6,7,8,9,10,11,12],n=name )
	elif shape == "diamond":
		c = pm.curve(d=1, p=[(0,0,1),(-1,0,0),(0,0,-1),(1,0,0),(0,0,1),(0,1,0),(0,0,-1),(0,-1,0),(0,0,1),(1,0,0),(0,1,0),(-1,0,0),(0,-1,0),(1,0,0)], 
								k=[0,1,2,3,4,5,6,7,8,9,10,11,12,13],n=name )
	else:
		c=None
	return c
Пример #46
0
def create_control(control, module):
    """ Creates a control for the rig, checking for existing controls or creating
    Args:
        control (str, pm.nt.Transform): can be anything really, just as long as it exists
    Returns:
        (pm.nt.Transform): the resulting transform of the control
    """
    is_new = False
    # Check if default control was created
    if pm.objExists('grow_CTRL') and not pm.objExists(control):
        control = pm.PyNode('grow_CTRL')
    
    # Create the control if control doesn't exist
    elif not pm.objExists(control):
        control = pm.circle(n='grow_CTRL')
        # Flat control in Y...
        control[1].normalY.set(1)
        control[1].normalZ.set(0)
        control = control[0]
        is_new = True
        
    # If it's a string and we weren't passed a PyNode we need to check existing nodes
    elif isinstance(control, basestring):
        control = pm.PyNode(control)
        
    setup_control_global_attrs(control, module)
    
    return control, is_new
Пример #47
0
def makeFkChain(jnts=None):
    """Select joints in an FK chain starting with the root.
    This creates a simple FK chain of controls for it."""
    prev = None
    ctrls = []
    if not jnts:
        jnts = pmc.selected(type="joint")
    for j in jnts:
        n = j.split("_")
        n[-1] = "{0}"
        n = "_".join(n)
        ctrl = pmc.circle(nr=(1, 0, 0), n=n.format("ctrl"), ch=0)[0]
        ctrls.append(ctrl)
        ctrlGrp = pmc.group(n=n.format("offset"))
        ctrlGrp.setParent(prev)
        prev = ctrl
        pmc.matchTransform(ctrlGrp, j)
        mm = pmc.nt.MultMatrix(n=n.format("fkMtx"))
        ctrl.wm >> mm.i[0]
        ctrlGrp.pim >> mm.i[1]
        dm = pmc.nt.DecomposeMatrix(n=n.format("fkXform"))
        mm.o >> dm.imat
        dm.outputTranslate >> j.t
        dm.outputRotate >> j.r

        #
        j.addAttr("control", at="message")
        ctrl.addAttr("joint", at="message")
        ctrl.joint >> j.control
        j.addAttr("fk_xforms", at="message")
        dm.message >> j.fk_xforms

    return ctrls
def FTV_createMainFluidTextViewControl( inputsGrp , fluidSpaceTransform):
	''' creation of the main control for the viewer'''
	circle = pm.circle( n='fluidTextureViewerCtrl#', c=(0,0,0), nr=(0,1,0), sw=360, r=1, ut=False,s=8, ch=False )
	pm.parent(circle[0],fluidSpaceTransform,r=True)

	size = 0.5
	ptList = [(-size,-size,-size), (size,-size,-size), (size,-size,size), (-size,-size,size), (-size,-size,-size), (-size,size,-size), (size,size,-size), (size,size,size), (-size,size,size), (-size,size,-size), (size,size,-size),(size,-size,-size),(size,-size,size),(size,size,size),(-size,size,size),(-size,-size,size)]
	cube = pm.curve( p = ptList, d=1, n='tempNameCubeNurbs#')

	grpDummyTransform = pm.group(em=True,n='dummyFluidSizeToMatrix#')

	pm.connectAttr( inputsGrp+'.dimensionsW', grpDummyTransform+'.scaleX')
	pm.connectAttr( inputsGrp+'.dimensionsH', grpDummyTransform+'.scaleY')
	pm.connectAttr( inputsGrp+'.dimensionsD', grpDummyTransform+'.scaleZ')
	FTV_lockAndHide( grpDummyTransform, ['tx','ty','tz','rx','ry','rz','sx','sy','sz','v'])

	circleShape = FTV_createTransformedGeometry(circle,'local', 'create',grpDummyTransform)
	cubeShape = FTV_createTransformedGeometry(cube,'local', 'create',grpDummyTransform)
	pm.setAttr(cubeShape+'.template',True)
	allCubeShapes = pm.listRelatives(cube,s=True)
	parentShapeRes = pm.parent(allCubeShapes, circle, add=True, s=True)

	pm.delete(cube)
	pm.rename( parentShapeRes[0],'BBFluidShapeSrc#' )
	retShape = pm.rename( parentShapeRes[1],'BBFluidShape#' )

	FTV_lockAndHide(circle[0], ['rx','ry','rz','sx','sy','sz','v'])

	# attributes connections
	addMainAttributesToObject(circle[0],True)
	FTV_multiConnectAutoKeyableNonLocked( circle[0], inputsGrp, ['translateX','translateY','translateZ'])

	pm.parent(grpDummyTransform,fluidSpaceTransform,r=True)

	return circle[0], retShape
Пример #49
0
def create_VarFkCtrls( IdName, guideSurface, numberOfCtrls ):
    # create controls
    ctrlGrp = pm.group( name = IdName + '_ctrls', empty = True, world = True)
    ctrlGrp.inheritsTransform.set(0)
    
    listOfCtrls = []
    
    for currentCtrlIndex in range(numberOfCtrls):
        if numberOfCtrls > 1:
            FolliclePos = ( 1.0 / (numberOfCtrls-1) ) * currentCtrlIndex
        else: 
            FolliclePos = ( 1.0 / (numberOfCtrls) ) * currentCtrlIndex
        
        # create controlshape
        currentCtrl = pm.circle( name = ( 'ctrl_vFK' + str( currentCtrlIndex+1 )+ '_' + IdName ), c=(0,0,0), nr=(1,0,0), sw=360, r=1.5, d=3, ut=0, tol=0.01, s=8, ch=False)
        currentCtrl[0].overrideEnabled.set(True)
        currentCtrl[0].overrideColor.set(4)
        # lock'n hide translates + scaleX
        currentCtrl[0].translateX.set( lock = True, keyable = False, channelBox = False )
        currentCtrl[0].translateY.set( lock = True, keyable = False, channelBox = False )
        currentCtrl[0].translateZ.set( lock = True, keyable = False, channelBox = False )
        currentCtrl[0].scaleX.set( lock = True )
        # add strength, position, radius attributes
        pm.addAttr( longName='rotateStrength', attributeType='float', keyable=True, defaultValue=1 )
        pm.addAttr( longName='position', attributeType='float', keyable=True, min=0-FolliclePos, max=1-FolliclePos )
        pm.addAttr( longName='radius', attributeType='float', keyable=True, min=0.0001, defaultValue=0.3 )
        
        # position min/max relative to defaultposition so ctrl can be zeroed out. Is remapped later back to 0 to 1 when connected to Follicle
        currentFollicle = create_follicle( guideSurface[0], uPos=FolliclePos, vPos=0.5 )
        currentFollicle.simulationMethod.set(0)
        currentFollicle.collide.set(0)
        currentFollicle.flipDirection.set( True )
        currentFollicle = pm.listRelatives( currentFollicle, parent=True )
        
        # connect to strength multiplier
        rotateStrengthMultiplier = pm.shadingNode( 'multiplyDivide', asUtility = True, n = str( currentCtrl[0] ) + '_strength_mult' )
        currentCtrl[0].rotate >> rotateStrengthMultiplier.input1
        pm.connectAttr( currentCtrl[0] + '.rotateStrength', rotateStrengthMultiplier + '.input2X', f=1 )
        pm.connectAttr( currentCtrl[0] + '.rotateStrength', rotateStrengthMultiplier + '.input2Y', f=1 )
        pm.connectAttr( currentCtrl[0] + '.rotateStrength', rotateStrengthMultiplier + '.input2Z', f=1 )
        
        # compensate position zero value by current follicle position
        jntposZeroCompensate = pm.shadingNode( 'plusMinusAverage', asUtility = True, n=currentCtrl[0] + '_jntposZeroCompensate' )
        pm.setAttr( jntposZeroCompensate + '.input1D[0]', pm.getAttr( currentFollicle[0].getShape() + '.parameterU' ) )
        pm.connectAttr( currentCtrl[0] + '.position', jntposZeroCompensate + '.input1D[1]', f=1 )
        pm.connectAttr( jntposZeroCompensate + '.output1D', currentFollicle[0].getShape() + '.parameterU', f=1 )

        # grouping
        buf = createBufGrp( currentCtrl )[0]
        pm.parent( buf, ctrlGrp, relative = True )
        pm.parent( currentFollicle, ctrlGrp )
        
        # connect follicle position to control buffer
        currentFollicle[0].translate >> buf.translate

        listOfCtrls.append( currentCtrl[0] )
        pm.select( clear = 1 )
        print( 'Successfully created ' + currentCtrl[0] )
    return listOfCtrls
Пример #50
0
def addControl(inputObject):
	newControl = pm.circle(n = str(inputObject) + '_control', c = [0,0,0], nr = [0,1,0], sw = 360, r = 1, d = 3, s = 16, ch = 1)[0]
	tempPConstr = pm.pointConstraint( inputObject, newControl)
	tempOConst = pm.orientConstraint(inputObject, newControl)
	pm.delete(tempOConst, tempPConstr)
	newControlPad = createPad(newControl)
	pm.parent(inputObject, newControl)
	return newControlPad, newControl
Пример #51
0
def makeThickFkCtrl(radius=1.0, name="FK_CTRL"):
	offset = (radius*1.05) - radius
	c1 = pmc.circle(r=(radius*1.05), nr=(1, 0, 0))
	c2 = pmc.circle(r=(radius*0.95), nr=(1, 0, 0))
	c3 = pmc.circle(r=radius, nr=(1, 0, 0))
	pmc.move(offset, 0, 0)
	pmc.makeIdentity(apply=True)
	pmc.xform(c3, sp=(0, 0, 0), rp=(0, 0, 0), ws=True)
	c4 = pmc.circle(r=radius, nr=(1, 0, 0))
	pmc.move(-offset, 0, 0)
	pmc.makeIdentity(apply=True)
	pmc.xform(c4, sp=(0, 0, 0), rp=(0, 0, 0), ws=True)

	pmc.select(c4, c3, c2, c1)
	ctrl = mergeShapes()
	ctrl.rename(name)
	return ctrl
Пример #52
0
def create_icon_1():
    # Just creating a control icon.
    icon = pm.circle(nr=[0,1,0])  
    # Create the nurbs circle returns references to the circle's transform and history node.
    # Result: [nt.Transform(u'nurbsCircle1'), nt.MakeNurbCircle(u'makeNurbCircle1')] #
    # icon is a varable used to store the results of creating the nurbs circle.    
    
    print 'Circle control created:', icon
Пример #53
0
 def sphereCnt(self):
     '''
     create a sphere control
     '''
     self.__buildName()
     if self.controlName:
         circle = pm.circle(name = self.controlName, ch = 0, o=1 , nr=[1,0,0], r = 0.1)[0]
         circley = pm.circle(name = self.controlName, ch = 0, o = True, nr = [0, 1, 0], r = 0.1)[0]
         pm.parent(circley.getShape(), circle, shape = 1, add = 1 )
         pm.delete(circley)
         circlez = pm.circle(name = self.controlName, ch = 0, o = True, nr = [0, 0, 1], r = 0.1)[0]
         pm.parent(circlez.getShape(), circle, shape = 1, add = 1 )
         pm.delete(circlez)
         self.control = circle
         for s in self.control.getShapes():
             pm.move(0, 0.1, 0, s.cv, r=1)
     self.__finalizeCnt()
Пример #54
0
 def createFKControls(self, name=None, joints=None):
     ''' Create a curve, parent shape to joint. '''
     for jnt in joints:
         temp = pm.circle(name='%s_%s_tweak_ctrl' % (name, jnt))
         pm.delete(pm.parentConstraint(jnt, temp[0], mo=0))
         shape = temp[0].getShape()
         pm.parent(shape, jnt, shape=True, r=1)
         pm.delete(temp[0])
Пример #55
0
    def setStyle(self, style):

        self._deleteShape()
        #Circle
        if style == Control.Circle:
            tempA = pm.circle(nr=[1, 0, 0], sw=360, r=5, d=3, ch=False)[0]
            pm.parent([tempA.getShape()], self.node, r=True, s=True)
            pm.delete([tempA])

        #Sphere
        if style == Control.Sphere:
            tempA = pm.mel.eval("curve -d 1 -p 0 5 0 -p 1.545085 4.755283 0 -p 2.938926 4.045085 0 -p 4.045085 2.938926 0 -p 4.755283 1.545085 0 -p 5 0 0 -p 4.755283 -1.545085 0 -p 4.045085 -2.938926 0 -p 2.938926 -4.045085 0 -p 1.545085 -4.755283 0 -p 0 -5 0 -p -1.545085 -4.755283 0 -p -2.938927 -4.045085 0 -p -4.045086 -2.938926 0 -p -4.755284 -1.545085 0 -p -5.000001 0 0 -p -4.755284 1.545085 0 -p -4.045086 2.938926 0 -p -2.938927 4.045085 0 -p -1.545085 4.755283 0 -p 0 5 0 -p -4.60471e-08 4.755283 1.545085 -p -8.75868e-08 4.045085 2.938926 -p -1.20553e-07 2.938926 4.045085 -p -1.41718e-07 1.545085 4.755283 -p -1.49012e-07 0 5 -p -1.545085 0 4.755283 -p -2.938927 0 4.045085 -p -4.045086 0 2.938927 -p -4.755284 0 1.545085 -p -5.000001 0 0 -p -4.755284 0 -1.545085 -p -4.045086 0 -2.938927 -p -2.938927 0 -4.045086 -p -1.545086 0 -4.755285 -p 0 0 -5.000002 -p 1.545086 0 -4.755285 -p 2.938928 0 -4.045087 -p 4.045088 0 -2.938928 -p 4.755286 0 -1.545086 -p 5 0 0 -p 4.755283 0 1.545085 -p 4.045085 0 2.938926 -p 2.938926 0 4.045085 -p 1.545085 0 4.755283 -p -1.49012e-07 0 5 -p -1.41718e-07 -1.545085 4.755283 -p -1.20553e-07 -2.938926 4.045085 -p -8.75868e-08 -4.045085 2.938926 -p -4.60471e-08 -4.755283 1.545085 -p 0 -5 0 -p 0 -4.755283 -1.545086 -p 0 -4.045085 -2.938928 -p 0 -2.938926 -4.045087 -p 0 -1.545085 -4.755285 -p 0 0 -5.000002 -p 0 1.545085 -4.755285 -p 0 2.938926 -4.045087 -p 0 4.045085 -2.938928 -p 0 4.755283 -1.545086 -p 0 5 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24 -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 -k 33 -k 34 -k 35 -k 36 -k 37 -k 38 -k 39 -k 40 -k 41 -k 42 -k 43 -k 44 -k 45 -k 46 -k 47 -k 48 -k 49 -k 50 -k 51 -k 52 -k 53 -k 54 -k 55 -k 56 -k 57 -k 58 -k 59 -k 60 ;")
            pm.parent([pm.nt.Transform(tempA).getShape()], self.node, r=True, s=True)
            pm.delete(tempA)

        #Cube
        if style == Control.Cube:
            tempA = pm.mel.eval("curve -d 1 -p -5 5 5 -p 5 5 5 -p 5 -5 5 -p -5 -5 5 -p -5 5 5 -p -5 5 -5 -p 5 5 -5 -p 5 -5 -5 -p -5 -5 -5 -p -5 5 -5 -p -5 5 5 -p -5 -5 5 -p -5 -5 -5 -p 5 -5 -5 -p 5 -5 5 -p 5 5 5 -p 5 5 -5 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 ;")
            pm.parent([pm.nt.Transform(tempA).getShape()], self.node, r=True, s=True)
            pm.delete(tempA)

        #Square
        if style == Control.Square:
            tempA = pm.mel.eval("curve -d 1 -ch 0 -p 0 0 0 -p 0 15 0 -k 0 -k 1 ;")
            pm.parent([pm.nt.Transform(tempA).getShape()], self.node, r=True, s=True)
            pm.delete([tempA])

        #Handle
        if style == Control.Handle:
            tempA = pm.mel.eval("curve -d 1 -p 0 15 0 -p 1.545085 15.244717 0 -p 2.938926 15.954915 0 -p 4.045085 17.061074 0 -p 4.755283 18.454915 0 -p 5 20 0 -p 4.755283 21.545085 0 -p 4.045085 22.938926 0 -p 2.938926 24.045085 0 -p 1.545085 24.755283 0 -p 0 25 0 -p -1.545085 24.755283 0 -p -2.938927 24.045085 0 -p -4.045086 22.938926 0 -p -4.755284 21.545085 0 -p -5.000001 20 0 -p -4.755284 18.454915 0 -p -4.045086 17.061074 0 -p -2.938927 15.954915 0 -p -1.545085 15.244717 0 -p 0 15 0 -p -4.60471e-08 15.244717 1.545085 -p -8.75868e-08 15.954915 2.938926 -p -1.20553e-07 17.061074 4.045085 -p -1.41718e-07 18.454915 4.755283 -p -1.49012e-07 20 5 -p 1.545085 20 4.755283 -p 2.938926 20 4.045085 -p 4.045085 20 2.938926 -p 4.755283 20 1.545085 -p 5 20 0 -p 4.755286 20 -1.545086 -p 4.045088 20 -2.938928 -p 2.938928 20 -4.045087 -p 1.545086 20 -4.755285 -p 0 20 -5.000002 -p -1.545086 20 -4.755285 -p -2.938927 20 -4.045086 -p -4.045086 20 -2.938927 -p -4.755284 20 -1.545085 -p -5.000001 20 0 -p -4.755284 20 1.545085 -p -4.045086 20 2.938927 -p -2.938927 20 4.045085 -p -1.545085 20 4.755283 -p -1.49012e-07 20 5 -p -1.41718e-07 21.545085 4.755283 -p -1.20553e-07 22.938926 4.045085 -p -8.75868e-08 24.045085 2.938926 -p -4.60471e-08 24.755283 1.545085 -p 0 25 0 -p 0 24.755283 -1.545086 -p 0 24.045085 -2.938928 -p 0 22.938926 -4.045087 -p 0 21.545085 -4.755285 -p 0 20 -5.000002 -p 0 18.454915 -4.755285 -p 0 17.061074 -4.045087 -p 0 15.954915 -2.938928 -p 0 15.244717 -1.545086 -p 0 15 0 -p 0 0 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24 -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 -k 33 -k 34 -k 35 -k 36 -k 37 -k 38 -k 39 -k 40 -k 41 -k 42 -k 43 -k 44 -k 45 -k 46 -k 47 -k 48 -k 49 -k 50 -k 51 -k 52 -k 53 -k 54 -k 55 -k 56 -k 57 -k 58 -k 59 -k 60 -k 61 ;")
            pm.parent(pm.nt.Transform(tempA).getShape(), self.node, r=True, s=True)
            pm.delete(tempA)

        #Arrow
        if style == Control.Arrow:
            tempA = pm.mel.eval("curve -d 1 -p 1 0 -4 -p -1 0 -4 -p -1 0 1 -p -2 0 1 -p 0 0 4 -p 2 0 1 -p 1 0 1 -p 1 0 -4 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 ;")
            pm.parent(pm.nt.Transform(tempA).getShape(), self.node, r=True, s=True)
            pm.delete(tempA)

        #Moveall
        if style == Control.MoveAll:
            tempA = pm.curve(d = 1, p = [(0, 0, -6.314364), (1.952926, 0, -4.7925),(1.05164, 0, -4.792499),
                (1.952926, 0, -1.952926), (4.7925, 0, -1.594463), (4.7925, 0, -1.952926),
                (6.725978, 0, 0), (4.7925, 0, 1.952926), (4.7925, 0, 1.594463), (1.952926, 0, 1.952926),
                (1.261715, 0, 4.699687), (1.952926, 0, 4.7925), (0, 0, 7.08783), (-1.952926, 0, 4.7925),
                (-1.261715, 0, 4.699687), (-1.952926, 0, 1.952926), (-4.7925, 0, 1.594463), (-4.7925, 0, 1.952926),
                (-6.725978, 0, 0), (-4.7925, 0, -1.952926), (-4.7925, 0, -1.594463), (-1.952926, 0, -1.952926),
                (-1.05164, 0, -4.792499), (-1.952926, 0, -4.7925), (0, 0, -6.314364)],
                k = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24],
                n = newName, ch=0)[0]
            pm.parent(tempA.getShape(), self.node, r=True, s=True)
            pm.delete(tempA)

        #Pyramid
        if style == Control.Arrow:
            tempA = pm.curve(n = name, d = 1,p = [(0,0,0.5), (-0.5, 0.5, -0.5), (0.5,0.5,-0.5), (0.5,-0.5,-0.5), (-0.5,-0.5,-0.5), (-0.5,0.5,-0.5), (0,0,0.5), (0.5,0.5,-0.5), (0.5,-0.5,-0.5), (0,0,0.5), (-0.5,-0.5,-0.5)], k = [0,1,2,3,4,5,6,7,8,9,10])
            pm.parent(pm.nt.Transform(tempA).getShape(), self.node, r=True, s=True)
            pm.delete(tempA)
Пример #56
0
def CtrlForThis(  createZeroGroup=False , dist=1):

	ctrls = [] # ctrls names for return

	objsToPutCtrlOn =  pm.ls ( sl = True )

	# for every selected object create ctrl curves

	for i in range (len(objsToPutCtrlOn)):
		objToPutCtrlOn = objsToPutCtrlOn[i]
		# create circle, find the proper name for the contorl curve and name the circle
		if str(objToPutCtrlOn)[-3:] == "jnt":
			ctrl = pm.circle(nr = (1 , 0 , 0) , r= dist, ch=False,  name =   str(objToPutCtrlOn).replace("jnt", "ctrl") )
		else:
			ctrl = pm.circle(nr = (1 , 0 , 0) , r= dist, ch=False,   name =  (str(objToPutCtrlOn) + "_ctrl") )


		# parent curve to corisponding joint
		pm.parent ( ctrl[0] , objToPutCtrlOn )

		#reset tranform values on circles
		pm.xform (ctrl[0] , t = (0,0,0) , ro= (0,0,0))

		firstParent = pm.listRelatives ( objToPutCtrlOn , fullPath = True , parent = True )

		# parent ctrls to their firstgrandparent
		if firstParent  :
			pm.parent ( ctrl[0] , firstParent[0] )
		else :
			pm.parent ( ctrl[0] , world = True  )


		pm.parent ( objToPutCtrlOn , ctrl[0] )

		ctrls.append ( ctrl[0] )
		



	# create zero groups if needed - add zero groups as well to return value
	if createZeroGroup == True:
		pm.select (ctrls)
		ctrls.extend (  ZeroGrp()  )

	return ctrls
Пример #57
0
    def setupFKControls(self, *args):
        """
            Create FK controllers
        """

        #shoulder
        temp = pm.PyNode(pm.circle(nr=self.normal, r=self.radius)[0])
        pm.parent(temp, self.fkChain[0]) #Parent transform under fk joint
        pm.move(0, 0, 0, temp) #Zero it so it snaps to FK position/orientation
        pm.parent(temp.getShape(), self.fkChain[0], s=True, r=True) #Parent shape to joints transform
        pm.delete(temp)   #Delete empty transform

        #elbow
        temp = pm.PyNode(pm.circle(nr=self.normal, r=self.radius)[0])
        pm.parent(temp, self.fkChain[1]) #Parent transform under fk joint
        pm.move(0, 0, 0, temp) #Zero it so it snaps to FK position/orientation
        pm.parent(temp.getShape(), self.fkChain[1], s=True, r=True) #Parent shape to joints transform
        pm.delete(temp)   #Delete empty transform

        #wrist
        temp = pm.PyNode(pm.circle(nr=self.normal, r=self.radius)[0])
        pm.parent(temp, self.fkChain[2]) #Parent transform under fk joint
        pm.move(0, 0, 0, temp) #Zero it so it snaps to FK position/orientation
        pm.parent(temp.getShape(), self.fkChain[2], s=True, r=True) #Parent shape to joints transform
        pm.delete(temp)   #Delete empty transform

        #
        # FK Length attributes setup/ Done using the translates of the child to avoid skewing that
        # occurs with scaling in a non-uniform manner (1,2,1)
        #
        pm.addAttr(self.fkChain[0], ln='length', min=0, dv=1, k=True)
        pm.addAttr(self.fkChain[1], ln='length', min=0, dv=1, k=True)

        #Get current translates value to set the max SDK as twice the default length
        val1 = pm.getAttr('%s.translate%s' % (self.fkChain[1], self.aim))
        val2 = pm.getAttr('%s.translate%s' % (self.fkChain[2], self.aim))

        #SDK to connect them
        pm.setDrivenKeyframe(self.fkChain[1], cd='%s.length' % self.fkChain[0], at='translate%s' % self.aim, dv=1) #Set default with current value in .tx
        pm.setDrivenKeyframe(self.fkChain[1], cd='%s.length' % self.fkChain[0], at='translate%s' % self.aim, dv=0, v=0)         #Set min
        pm.setDrivenKeyframe(self.fkChain[1], cd='%s.length' % self.fkChain[0], at='translate%s' % self.aim, dv=2, v=(val1 * 2)) #Set max

        pm.setDrivenKeyframe(self.fkChain[2], cd='%s.length' % self.fkChain[1], at='translate%s' % self.aim, dv=1) #Set default with current value in .tx
        pm.setDrivenKeyframe(self.fkChain[2], cd='%s.length' % self.fkChain[1], at='translate%s' % self.aim, dv=0, v=0)         #Set min
        pm.setDrivenKeyframe(self.fkChain[2], cd='%s.length' % self.fkChain[1], at='translate%s' % self.aim, dv=2, v=(val2 * 2))#Set max
Пример #58
0
 def _make_ctrl(self,name, radius=1.0, normal=[1,0,0]):
     '''makes a controller at the origin'''
     ctrl = pm.circle(
             #constructionHistory=True,
             object=True,
             name=name,
             normal=normal,
             radius=radius)[0]
     return ctrl
Пример #59
0
    def circle_ctrl(self):
        """
        Builds a circle control.
        """
        self._build_name()
        if self.ctrl_name:
            self.ctrl = pm.circle(n=self.ctrl_name, ch=0, o=1, nr=[1, 0, 0])[0]

        self._finalize_ctrl()