예제 #1
0
def create_two_point_arrow(obj_name):
    """
    creates a 4 point arrow of the given name at the origin
    :param obj_name: name of the arrow
    :type: str
    """
    cmds.curve(degree=1,
               point=[(-4, 0, 0), (-2, 2, 0), (-2, 1, 0), (2, 1, 0), (2, 2, 0),
                      (4, 0, 0), (2, -2, 0), (2, -1, 0), (-2, -1, 0),
                      (-2, -2, 0), (-4, 0, 0)],
               knot=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
               name=obj_name)

    cmds.CenterPivot()
    cmds.xform(relative=True, rotation=(90, 0, 90), scale=(3, 3, 3))
    cmds.makeIdentity(obj_name,
                      apply=True,
                      translate=True,
                      rotate=True,
                      scale=True,
                      normal=False,
                      preserveNormals=1)

    # adds the globabl attr
    cmds.addAttr('|' + obj_name,
                 longName=NamingConventionEnums.GLOBAL_ATTR_NAME,
                 attributeType='bool')

    return obj_name
예제 #2
0
 def tangentNormalAxisSet(self):  # stretch locator attatch and twist setting
     # import var "self.stPOCI_list" , "stCRV_loc"
     self.upLoc_list = list()
     self.twistLoc_list = list()
     for k in self.IKBodyJointList:
         locXform = cmds.xform(k , ws=True, q=True, t=True)
         upLoc = cmds.spaceLocator(n = k.replace(k.split('_')[-1], 'upVec_LOC') , p =(locXform[0],locXform[1],locXform[2]))[0]
         cmds.CenterPivot(upLoc)
         cmds.setAttr('%s.template' % upLoc, 1)
         twistLoc = cmds.spaceLocator(n = k.replace(k.split('_')[-1], 'twist_LOC') , p =(locXform[0],locXform[1],locXform[2]))[0]
         twistLocS = cmds.listRelatives(twistLoc , s=1)[0]
         cmds.parent(twistLoc , self.stCRV_loc[self.IKBodyJointList.index(k)])
         for j in self.XYZ:
             cmds.setAttr('%s.localPosition%s' %(twistLoc,j) , 0 )
             cmds.setAttr('%s.translate%s' %(twistLoc,j) , 0 )
             cmds.setAttr('%s.rotate%s' %(twistLoc,j) , 0 )
         cmds.setAttr('%s.template' % twistLoc, 1)
         cmds.setAttr('%s.ty' %upLoc , 20)
         self.upLoc_list.append(upLoc)
         self.twistLoc_list.append(twistLoc)
     for i in self.stCRV_loc:
         cmds.tangentConstraint(self.pathBody_crv,i,wut='object',wuo='%s' %self.upLoc_list[self.stCRV_loc.index(i)])
     for i in range(len(self.twistLoc_list)):
         cmds.parentConstraint(self.twistLoc_list[i],self.IKBodyJointList[i],mo=1)
     cmds.hide('templateJoint_GRP')
     self.twistBodySet()
     self.upVecLocControlSet()
예제 #3
0
def create_four_point_arrow(obj_name):
    """
    creates a 4 point arrow of the given name at the origin
    :param obj_name: name of the arrow
    :type: str
    """
    cmds.curve(degree=1,
               point=[(-1, 0, -2), (-2, 0, -2), (0, 0, -4), (2, 0, -2),
                      (1, 0, -2), (1, 0, 0), (3, 0, 0), (3, 0, -1), (5, 0, 1),
                      (3, 0, 3), (3, 0, 2), (1, 0, 2), (1, 0, 4), (2, 0, 4),
                      (0, 0, 6), (-2, 0, 4), (-1, 0, 4), (-1, 0, 2),
                      (-3, 0, 2), (-3, 0, 3), (-5, 0, 1), (-3, 0, -1),
                      (-3, 0, 0), (-1, 0, 0), (-1, 0, -2)],
               knot=[
                   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
               ],
               name=obj_name)
    cmds.CenterPivot()
    cmds.xform(relative=True, translation=(0, 0, -1), scale=(10, 10, 10))
    cmds.makeIdentity(obj_name,
                      apply=True,
                      translate=True,
                      rotate=True,
                      scale=True,
                      normal=False,
                      preserveNormals=1)

    # adds the globabl attr
    cmds.addAttr('|' + obj_name,
                 longName=NamingConventionEnums.GLOBAL_ATTR_NAME,
                 attributeType='bool')
예제 #4
0
def CreateWeld():
    selection = mc.ls(sl=True, fl=True, dag=True, type='stroke')

    for each in selection:
        sel1 = mc.ls(sl=True, fl=True, dag=True, )
        sel2 = mc.listConnections(sel1)
        sel3 = mc.listConnections(sel1, type='brush')
        selAll = sel1 + sel3
        import maya.mel as mel
        mel.eval('doPaintEffectsToPoly(1,0,1,1,100000);')
        mel.eval('polyMultiLayoutUV -lm 1 -sc 1 -rbf 0 -fr 1 -ps 0.05 -l 2 -gu 1 -gv 1 -psc 1 -su 1 -sv 1 -ou 0 -ov 0;')
        mc.delete(ch=True)
        mc.parent(w=True)
        sel4 = mc.ls("birchLimb*MeshGroup")
        mc.delete(selAll)
        mc.delete(sel4)
        mc.CenterPivot()
        mc.hyperShade(a="Welder_shd")
        selected_objects = mc.ls(selection=True)
        mc.toggleDisplacement()
        newname = "Weld_"
        for number, object in enumerate(selected_objects):
            print 'Old Name:', object
            print 'New Name:', '%s%02d' % (newname, number)
            mc.setAttr(object + ".aiSubdivType", 1)
            mc.setAttr(object + ".aiSubdivIterations", 2)
            mc.rename(object, ('%s%02d' % (newname, number)))
def cleanProcedure():
    cmds.undoInfo(ock=1)
    sel = cmds.ls(sl=1)
    selRelatives = cmds.listRelatives(sel)
    if selRelatives[0].startswith('instanceAlongCurveLocator'):
        selectedLocator = []
        selectedLocator=cmds.ls(sl=1)
        tempGroupName = ""
        tempGroupName=str(cmds.group(em=1, n='InstanceMesh'))
        selectedMesh = []
        selectedMeshDuplicatedShape = []
        selectedThings = []
        cmds.select(selectedLocator)
        selectedThings=cmds.listRelatives(c=1)
        selectedMesh=cmds.filterExpand(sm=12)
        cmds.select(selectedMesh)
        selectedMeshDuplicatedShape=cmds.listRelatives(c=1)
        eachOverride=selectedMeshDuplicatedShape[0] + ".overrideEnabled"
        cmds.setAttr(eachOverride, 1)
        selectedMeshDuplicated=cmds.duplicate()
        cmds.parent(selectedMeshDuplicated, tempGroupName)
        cmds.ungroup(tempGroupName)
        cmds.delete(selectedLocator)
        cmds.select(selectedMeshDuplicated)
        cmds.polyUnite(centerPivot=1, ch=1, mergeUVSets=1)
        separatedMesh = []
        separatedMesh=cmds.polySeparate(ch=1)
        cmds.CenterPivot()
        separatedMeshGroup=cmds.listRelatives(separatedMesh, p=1)
        cmds.select(separatedMeshGroup)
        cmds.select(selectedMeshDuplicated, add=1)
        cmds.ungroup()
        cmds.DeleteHistory()
        resultAll = cmds.ls(sl=1,o=1)
        result = cmds.filterExpand(resultAll,sm=12)
        toDelete = list(set(resultAll).difference(set(result)))
        cmds.delete(toDelete)

    else:
        try:
            selectedForClean=cmds.ls(sl=1)
            cmds.polyCube(sz=1, sy=1, sx=1, d=1, cuv=4, h=1, ch=1, w=1, ax=(0, 1, 0))
            temp_polyCube=cmds.ls(sl=1)
            cmds.select(selectedForClean)
            cmds.select(temp_polyCube, add=1)
            cmds.CombinePolygons()
            temp_BeforeSeparate=cmds.ls(sl=1)
            cmds.SeparatePolygon()
            temp_AfterSeparate=cmds.ls(sl=1)
            cmds.delete(temp_AfterSeparate[- 1])
            cmds.DeleteHistory()
            temp_father=cmds.listRelatives(temp_AfterSeparate[0], p=1)
            cmds.select(temp_BeforeSeparate)
            cmds.ungroup()
            cmds.delete(selectedForClean)
            cmds.CombinePolygons()
            cmds.DeleteHistory()
        except:
            pass
    cmds.undoInfo(cck=1)
예제 #6
0
def B_BakeC(*args):
    
    selection = mc.ls(sl = True, fl = True, dag = True, type= 'stroke')
         
    
    for each in selection:
        sel1 = mc.ls(sl= True, fl = True, dag = True)
        sel2 = mc.listConnections(sel1)
        sel2 = mc.listConnections(sel1, type= 'stroke')
        sel3 = mc.listConnections(sel1, type= 'transform')
        import maya.mel as mel    
        mel.eval('doPaintEffectsToPoly(1,0,1,1,100000);')
        mel.eval('polyMultiLayoutUV -lm 1 -sc 1 -rbf 0 -fr 1 -ps 0.05 -l 2 -gu 1 -gv 1 -psc 1 -su 1 -sv 1 -ou 0 -ov 0;')
        mc.delete(ch= True)
        mc.parent(w= True)
        sel4 = mc.ls("birchLimb*MeshGroup")
        mc.delete(sel1)
        mc.delete(sel2)
        mc.delete(sel3)
        mc.delete(sel4)
        mc.CenterPivot()
        mc.hyperShade( a= "lambert1")
        selected_objects = mc.ls(selection=True)
        newname = "Cable_"
        for number, object in enumerate(selected_objects):
            print 'Old Name:', object
            print 'New Name:', '%s%02d' % (newname, number)
            mc.rename(object, ('%s%02d' % (newname, number)))
            
    print "Done"
예제 #7
0
def createIsoparm(width,cvSet):
	##Global Var mainPath
	global nameCurveSelect
	global listIsoparm 
	listIsoparm = []
	##index if not exist the first Group
	indexGRP = 1
	##check if exist and new Create empty Group
	while True:
		if not cmds.objExists(nameCurveSelect + '_TC_GRP_' + str(indexGRP)):
			cmds.group(em = True, name = nameCurveSelect + '_TC_GRP_' + str(indexGRP))
			break
		else:
			indexGRP += 1	
	# plus one because it is the last Isoparm to follow StartLocator
	numberIso = (cvSet * resRib )+ 1
	##Create Curve degree three
	for i in range (0, numberIso):
		curveAux = cmds.curve(name = nameCurveSelect + "Isop" + str(i),\
		 p=[(0, 0, 0), (float(width)/3.0, 0, 0),(float(width*2)/3.0, 0, 0),\
		 (width, 0, 0)])
		listIsoparm.append(curveAux)
		cmds.select(curveAux)
		cmds.CenterPivot()
		cmds.select(d = True)
		##Attach the curve in the Group 
		cmds.parent (curveAux,nameCurveSelect + '_TC_GRP_' + str(indexGRP))
예제 #8
0
def B_BtoC(*args):
    
    getSelect=mc.ls(sl=True)
    
    for each in getSelect:
        #mc.select(each)        
        #mc.ConvertSelectionToEdgePerimeter()
        #sel = mc.ls(sl= True)
        #selA = mc.select(sel[1])
        #mc.SelectEdgeLoopSp()
        #mc.CreateCluster()
        #mc.rename("ClusterTps")
        #selClu = mc.ls(sl= True)
        mc.select(each)        
        mc.ConvertSelectionToEdgePerimeter()
        mc.ConvertSelectionToFaces()
        mc.ConvertSelectionToContainedEdges()
        sel = mc.ls(sl= True)
        selO = mc.ls(os= True)
        selA = mc.select(selO[1])
        mc.SelectEdgeLoopSp()
        mc.polyToCurve(form= 2,degree= 1,conformToSmoothMeshPreview= 0)      
        mc.CenterPivot()
        mc.DeleteHistory()
        mc.rename("Curve_0")
        selCurv = mc.ls(sl= True)
        posX = mc.getAttr(selCurv[0]+".controlPoints[0].xValue")
        posY = mc.getAttr(selCurv[0]+".controlPoints[0].yValue")
        posZ = mc.getAttr(selCurv[0]+".controlPoints[0].zValue")
        mc.move(posX, posY, posZ, selCurv[0] + ".scalePivot", selCurv[0] + ".rotatePivot", absolute=True)
예제 #9
0
def MESH_center_pivot():
    ''' reset pivot of transforms meshes '''
    sel = cmds.ls(sl=True)
    if sel is None:
        return "Select Meshes to center pivot first.", 0
    for each in sel:
        if cmds.nodeType(each) == "transform":
            cmds.CenterPivot(each)
    return "Pivot Centered on ({}) transform nodes".format(len(sel))
def createCube(*args):
    cmds.curve(d=1, p=[ (0.5, 0.126219, -0.5), (0.5, 0.126219, 0.5) ,(0.5, 1.126219, 0.5), (0.5, 1.126219, -0.5),
                       (0.5, 0.126219, -0.5) ,(-0.5, 0.126219, -0.5) ,(-0.5, 1.126219, -0.5) ,(0.5, 1.126219, -0.5),
                       (-0.5, 1.126219, -0.5) ,(-0.5, 1.126219, 0.5) ,(-0.5, 0.126219, 0.5) ,(-0.5, 0.126219, -0.5),
                       (-0.5, 1.126219, -0.5), (-0.5, 1.126219, 0.5) ,(0.5, 1.126219, 0.5) ,(0.5, 0.126219, 0.5),
                       (-0.5, 0.126219, 0.5)], k=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
    cmds.CenterPivot()
    cmds.select(cl=True)

    print 'Created a Solid Nurbs Cube'
예제 #11
0
def getFaceCenter(name, makeLocators=False):
    ''' Calculates the center of each face and returns a list of [x,y,z]
        name : Object name
        makeLocators : If set to True, generate locators for each vertex position and face center
    '''
    faceIndices = cmds.polyEvaluate(name, f=True)
    # Store (x,y,z) lists for each face's centre
    faceCenters = []
    mesh = [
        cmds.xform('%s.f[%s]' % (name, i), ws=True, q=True, t=True)
        for i in range(faceIndices)
    ]

    for face in mesh:
        centrePos = [0, 0, 0]
        vertexCount = len(face)

        for vertex in xrange(0, vertexCount, 3):
            pos = face[vertex:vertex + 3]
            centrePos[0] += pos[0]
            centrePos[1] += pos[1]
            centrePos[2] += pos[2]

            if makeLocators:
                cmds.spaceLocator(p=pos)
                cmds.CenterPivot()
                cmds.scale(0.1, 0.1, 0.1)

        # Find the face center by dividing by the number of vertices
        centrePos = map(lambda x: x / (vertexCount / 3), centrePos)

        faceCenters.append(centrePos)

        if makeLocators:
            avgLocator = cmds.spaceLocator(p=centrePos)[0]
            cmds.CenterPivot()
            cmds.scale(0.05, 0.05, 0.05)
            # Set the face average locator to a red colour
            cmds.setAttr("%s.overrideEnabled" % avgLocator, 1)
            cmds.setAttr("%s.overrideColor" % avgLocator, 13)

    return faceCenters
예제 #12
0
def ncsc_center_pivot(all=False):
    """Centers the pivot
    """

    sel = mc.ls(sl=True)

    if all is True:
        sel = mc.ls(geometry=True, transforms=True)
        for obj in sel:
            mc.select(obj)
            mc.CenterPivot()
        mc.select(clear=True)
        om.MGlobal.displayInfo("## Centered pivot on all nodes")
    elif sel:
        for obj in sel:
            mc.select(obj)
            mc.CenterPivot()
        om.MGlobal.displayInfo("## Centered pivot on selected node(s)")
    else:
        mc.warning("No nodes have been selected!")
예제 #13
0
    def Loc_Generate(self):
        cmds.select(self.Rig_Obj_Text.text())
        boundingBox = cmds.polyEvaluate(boundingBox=True)

        x = (boundingBox[0][0] + boundingBox[0][1]) / 2
        y = (boundingBox[1][0] + boundingBox[1][1]) / 2
        z = (boundingBox[2][0] + boundingBox[2][1]) / 2

        if self.X_RadioButton.isChecked():
            cmds.spaceLocator(p=(boundingBox[0][0], y, z))
            cmds.CenterPivot()
            self.Get_Start_JNT()
            cmds.spaceLocator(p=(boundingBox[0][1], y, z))
            cmds.CenterPivot()
            self.Get_End_JNT()
        if self.Y_RadioButton.isChecked():
            cmds.spaceLocator(p=(x, boundingBox[1][0], z))
            cmds.CenterPivot()
            self.Get_Start_JNT()
            cmds.spaceLocator(p=(x, boundingBox[1][1], z))
            cmds.CenterPivot()
            self.Get_End_JNT()
        if self.Z_RadioButton.isChecked():
            cmds.spaceLocator(p=(x, y, boundingBox[2][0]))
            cmds.CenterPivot()
            self.Get_Start_JNT()
            cmds.spaceLocator(p=(x, y, boundingBox[2][1]))
            cmds.CenterPivot()
            self.Get_End_JNT()
예제 #14
0
def Startup(self):
    # Set linear units to cm
    cmds.currentUnit(linear='cm')

    # Change grid size to 1000 length and width, 10 grids every line, and 1 subdivision
    cmds.grid(size=500, spacing=10, d=1)
    cmds.optionVar(fv=("gridDivisions", 1))
    cmds.optionVar(fv=("gridSize", 500))
    cmds.optionVar(fv=("gridSpacing", 10))

    # Make a reference cube that is 1/1/1
    cmds.polyCube(sx=1, sy=1, sz=1, h=100, w=100, d=100)
    cmds.CenterPivot()
예제 #15
0
    def setSoftIK(self):
        #softIK and StretchIK
        softIK_asset = ''
        stretchIK_asset = ''
        tempRef = {
            1: [
                'L_template_hand_JNT', 'L_template_foreArm_JNT',
                'L_template_upArm_JNT'
            ],
            2: [
                'R_template_hand_JNT', 'R_template_foreArm_JNT',
                'R_template_upArm_JNT'
            ],
            3: [
                'L_template_foot_JNT', 'L_template_lowLeg_JNT',
                'L_template_leg_JNT'
            ],
            4: [
                'R_template_foot_JNT', 'R_template_lowLeg_JNT',
                'R_template_leg_JNT'
            ]
        }
        refPos = dict()
        for i in range(1, 5):
            refPos[i] = dict()
            for j in range(len(tempRef[i])):
                print j
                rN = tempRef[i][j].replace('template', 'ref')
                rNA = rN.replace('JNT', 'LOC')
                refPos[i][rNA] = dict()
                tempPos = cmds.xform(tempRef[i][j], q=1, t=1, ws=1)
                for t in range(len(tempPos)):
                    tempPos[t] = round(tempPos[t], 5)
                refPos[i][rNA] = tempPos

        for i in range(1, 5):
            for j in refPos[i]:
                print j
                print refPos[i][j]
                tempLoc = cmds.spaceLocator(n='%s' % j)[0]
                cmds.setAttr('%s.tx' % tempLoc, refPos[i][j][0])
                cmds.setAttr('%s.ty' % tempLoc, refPos[i][j][1])
                cmds.setAttr('%s.tz' % tempLoc, refPos[i][j][2])
                cmds.CenterPivot(tempLoc)
        self.softIKDefaultSet('L')
        self.softIKDefaultSet('R')
        self.setDistanceConnect('L')
        self.setDistanceConnect('R')
        self.deleteAttr('L')
        self.deleteAttr('R')
        self.setHierachyGroup()
예제 #16
0
def GroupWheel():
    wheels = cmd.ls(sl=True, l=True, type="transform")
    if len(wheels) <= 0:
        return
    cmd.makeIdentity(apply=True, t=1, r=1, s=1, n=0, pn=1)
    cmd.CenterPivot()
    parent = cmd.listRelatives(wheels[0], parent=True, fullPath=True)[0]
    center = 0
    if parent:
        #如果有父物体,中心为父物体中心
        pt = xxt.Transform()
        xxt.getWorldTransfrom(parent, pt)
        center = pt.t[0]
    l = []
    r = []
    print("一共%d个轮子" % len(wheels))
    for w in wheels:
        t = xxt.Transform()
        xxt.getWorldTransfrom(w, t)
        #以中心为界左右分组
        if t.t[0] < center:
            l.append([w, t])
        else:
            r.append([w, t])
    l.sort(lambda a, b: cmp(a[1].t[2], b[1].t[2]), reverse=True)  #按z从大到小排序
    r.sort(lambda a, b: cmp(a[1].t[2], b[1].t[2]), reverse=True)  #按z从大到小排序
    count = min(len(l), len(r))
    print("一共%d排轮子" % (count))
    ws = []
    for i in range(count):
        w = cmd.polyUnite([l[i][0], r[i][0]], name="Wheel%d" % (i))[0]
        cmd.delete(w, ch=True)
        w = cmd.parent(w, parent)[0]
        ws.append(w)
    cmd.select(ws, r=True)
    cmd.makeIdentity(apply=True, t=1, r=1, s=1, n=0, pn=1)
    cmd.CenterPivot()
예제 #17
0
def addPointOnCurve():
    """This function adds locators that control the curve"""

    epList = cmds.ls("{}.ep[*]".format(data.treadCircle), flatten=True)
    
    locatorList = []
    
    for ep in epList:
        cmds.select(ep, replace=True)

        # Append locators generated on constraint to their list
        locatorList.append(cmds.pointCurveConstraint(constructionHistory=True, replaceOriginal=True)[0])
        cmds.CenterPivot()

    return locatorList
예제 #18
0
def makeLoc(*args):
    """This function creates locators based on the number specified by the user"""

    # We query the number of arms given by the user
    start.armsValue = cmds.intSliderGrp(start.numArms, q=True, v=True)
    # We iterate over this number
    for i in range(1, start.armsValue+2):
        # We create a locator AND add it to the locator list
        start.locList.append(cmds.spaceLocator(n="ArmLocator%i"%i if i<=(start.armsValue) else "BucketLocator", p=(0,0,0), a=True))
        # Center locator's pivot
        cmds.CenterPivot()
        # Move locator in world space so the user does not have to deal with local space
        cmds.move(0,0,(i-1)*5)
    
    # Modifies the UI so the buttons get enabled or disabled
    updateUI(True)
예제 #19
0
def B_History(*args):
    
    selection = mc.ls(sl = True, fl = True, dag = True, type= 'stroke')
    
    for each in selection:
        mc.select(each)
        import maya.mel as mel    
        mel.eval('doPaintEffectsToPoly(1,0,1,1,100000);')
        mel.eval('polyMultiLayoutUV -lm 1 -sc 1 -rbf 0 -fr 1 -ps 0.05 -l 2 -gu 1 -gv 1 -psc 1 -su 1 -sv 1 -ou 0 -ov 0;')
        mc.CenterPivot()
        mc.hyperShade( a= "lambert1")
        selected_objects = mc.ls("birchLimb*MeshGroup")
        newname = "Cable_Hist_"
        for number, object in enumerate(selected_objects):
            print 'Old Name:', object
            print 'New Name:', '%s%02d' % (newname, number)
            mc.rename(object, ('%s%02d' % (newname, number)))
        
    print "Done"
예제 #20
0
    def heyWitch_jntFromLoop(self, *args):
        loopyJointPrompt = cmds.promptDialog(message="Enter name ",
                                             button=['OK', 'Cancel'],
                                             defaultButton='OK',
                                             cancelButton='Cancel',
                                             dismissString='Cancel')

        if loopyJointPrompt == 'OK':
            loopyJoint = cmds.promptDialog(query=True, text=True)
            cmds.DetachComponent()
            cmds.CreateCurveFromPoly()
            newCurve = cmds.ls(sl=True, type='transform')
            for x in newCurve:
                cmds.delete(x, ch=True)
                cmds.makeIdentity(x, apply=True, t=1, r=1, s=1, n=0)
                cmds.CenterPivot()
                cmds.select(clear=True)
                cmds.joint(name=loopyJoint)
                cmds.pointConstraint(x, loopyJoint)
                cmds.delete((loopyJoint + "_pointConstraint1"), x)
예제 #21
0
    def selection_base(cls, *args, **kwargs):
        """
        @param *point_array : (list) Each element of the list need to be a vector value (x,y,z)
                                     and it will be unpack
        @param name        : (String)

        # example
        points =[[0.0, 0.0, 0.0],[-2.54, 4.68, -0.96],[2.66, 4.66, -6.16], [0.66, 8.22, -6.83]]
        test = adbLoc.Locator.selection_base()
        """

        name = kwargs.pop('name', 'locator1')

        locs_array = []
        for sel in pm.selected():
            loc_align = pm.spaceLocator(n=name)
            locs_array.append(loc_align)
            pm.matchTransform(loc_align, sel, pos=True)
            pm.select(locs_array, add=True)
            mc.CenterPivot()

        return cls(locs_array)
예제 #22
0
def edo_attatchBlendShapeAsSkinCluster():
    mesh=cmds.ls(sl=1)[0]
    sks=edo_findNodeFromHis(mesh,'skinCluster')[0]
    infs=cmds.skinCluster(sks,q=1,inf=1)
    if not cmds.objExists('GRP_'+mesh+'TARGETS'):
        cmds.createNode('transform',n='GRP_'+mesh+'TARGETS')
    bsms=[]
    for i in infs:
        #i=infs[0]
        bsm=cmds.duplicate(sels,n='BS_'+i+'_'+mesh)[0]
        cmds.parent(bsm,'GRP_'+mesh+'TARGETS')
        cmds.select(bsm,r=1)
        cmds.CenterPivot()
        cmds.setAttr(bsm+'.sx',0.1)
        cmds.setAttr(bsm+'.sy',0.1)
        cmds.setAttr(bsm+'.sz',0.1)
        cmds.delete(cmds.parentConstraint(i,bsm,mo=0))
        bsms.append(bsm)
    cmds.select(bsms,r=1)
    cmds.select(mesh,add=1)
    cmds.blendShape(n='BS_'+sks)
    cmds.select(mesh,r=1)
    edo_makeBlendShapeWeightNormalizePaintable()
예제 #23
0
파일: base.py 프로젝트: krexspace/mcake
def freeze_and_center_by_name(obj):
    cmds.makeIdentity(obj, apply=True, t=1, r=1, s=1, n=0, pn=1)
    cmds.CenterPivot(obj)
    print("Freeze and Center done for {0}".format(obj))
예제 #24
0
    def pathCurveSet(self, plusLength):
        self.nearParam_list = list()
        self.getLength_list = list()
        self.pathCrv_attLoc_list = list()
        self.upPathLoc_list = list()

        cmds.addAttr('root_CON', ln='run', at='double', dv=0)
        cmds.setAttr('root_CON.run', e=True, k=True)
        cmds.createNode('transform', n='pathSet_GRP', p='noneTransform_GRP')
        cvStartPos = self.customBodyJointsPos[0]
        setLength = self.disDMS + plusLength
        curvePos = [0, cvStartPos[1], setLength]
        pathSet_crv = cmds.curve(p=[cvStartPos, curvePos], d=1)

        cmds.rebuildCurve(pathSet_crv, d=3, s=10)
        self.pathSet_crv = cmds.rename(pathSet_crv, 'pathSet_CRV')
        self.pathSet_crvShp = cmds.listRelatives(self.pathSet_crv, s=1)[0]
        pathSet_CIF = cmds.createNode('curveInfo', n='pathSet_CIF')

        for i in self.FKNull:
            nearDCM = cmds.createNode('decomposeMatrix')
            nearestNode = cmds.createNode('nearestPointOnCurve')
            arcLengthDMS = cmds.arcLengthDimension('%s.u[0]' %
                                                   self.pathSet_crv)
            curveShape = cmds.listRelatives(self.pathSet_crv, s=1)[0]
            cmds.connectAttr('%s.worldMatrix[0]' % i,
                             '%s.inputMatrix' % nearDCM)
            cmds.connectAttr('%s.worldSpace[0]' % curveShape,
                             '%s.inputCurve' % nearestNode)
            cmds.connectAttr('%s.outputTranslate' % nearDCM,
                             '%s.inPosition' % nearestNode)
            nearParam = cmds.getAttr('%s.parameter' % nearestNode)
            self.nearParam_list.append(nearParam)
            cmds.setAttr('%s.uParamValue' % arcLengthDMS, nearParam)
            getLength = cmds.getAttr('%s.arcLength' % arcLengthDMS)
            self.getLength_list.append(getLength)
            cmds.delete(nearDCM, nearestNode, arcLengthDMS)
            #return getLength
            print '%s.param = "%s"' % (i, nearParam)
            print '%s.length = "%s"' % (i, getLength)
            #return getLength,nearParam
            pathCrv_attLoc = cmds.spaceLocator(
                n=self.FKNull[self.FKNull.index(i)] + '_attatch_LOC')[0]
            self.pathCrv_attLoc_list.append(pathCrv_attLoc)
            cmds.setAttr('%s.template' % pathCrv_attLoc, 1)
            cmds.hide(pathCrv_attLoc)
            adl = cmds.createNode('addDoubleLinear',
                                  n=pathCrv_attLoc.replace(
                                      pathCrv_attLoc.split('_')[-1], 'ADL'))
            clp = cmds.createNode('curveLength2ParamU',
                                  n=pathCrv_attLoc.replace(
                                      pathCrv_attLoc.split('_')[-1], 'CLP'))
            poci = cmds.createNode('pointOnCurveInfo',
                                   n=pathCrv_attLoc.replace(
                                       pathCrv_attLoc.split('_')[-1], 'POCI'))
            cmds.connectAttr('root_CON.run', '%s.input2' % adl)
            cmds.setAttr('%s.input1' % adl, getLength)
            cmds.connectAttr('%s.output' % adl, '%s.inputLength' % clp)
            cmds.connectAttr('%s.worldSpace[0]' % self.pathSet_crvShp,
                             '%s.inputCurve' % clp)
            cmds.connectAttr('%s.worldSpace[0]' % self.pathSet_crvShp,
                             '%s.inputCurve' % poci)
            cmds.connectAttr('%s.outputParamU' % clp, '%s.parameter' % poci)
            cmds.connectAttr('%s.position' % poci,
                             '%s.translate' % pathCrv_attLoc)

        # reverse variable
        pathCrv_attLoc_list_rev_range = list()
        self.pathCrv_attLoc_list_rev = list(
        )  # pathCurve attatch Locator list reverse variable
        FKNull_rev_range = list()
        self.FKNull_rev = list()  # fk null reverse variable
        for j in self.pathCrv_attLoc_list:
            pathCrv_attLoc_list_rev_range.append(
                self.pathCrv_attLoc_list.index(j))
        pathCrv_attLoc_list_rev_range.reverse()
        for i in pathCrv_attLoc_list_rev_range:
            self.pathCrv_attLoc_list_rev.append(self.pathCrv_attLoc_list[i])
        for j in self.FKNull:
            FKNull_rev_range.append(self.FKNull.index(j))
        FKNull_rev_range.reverse()
        for i in FKNull_rev_range:
            self.FKNull_rev.append(self.FKNull[i])

        for k in self.pathCrv_attLoc_list_rev:  # controller upVec set and < pathCrv_attLoc connect to FKNull >
            locXform = cmds.xform(k, ws=True, q=True, t=True)
            upPathLoc = cmds.spaceLocator(
                n=k.replace(k.split('_')[-1], 'upVec_LOC'),
                p=(locXform[0], locXform[1], locXform[2]))[0]
            self.upPathLoc_list.append(upPathLoc)
            cmds.CenterPivot(upPathLoc)
            cmds.setAttr('%s.template' % upPathLoc, 1)
            cmds.setAttr('%s.ty' % upPathLoc, 20)
            temp_MMX = cmds.createNode('multMatrix',
                                       n=k.replace(k.split('_')[-1], 'MMX'))
            temp_DCM = cmds.createNode('decomposeMatrix',
                                       n=k.replace(k.split('_')[-1], 'DCM'))
            if self.pathCrv_attLoc_list_rev.index(k) is 0:
                cmds.connectAttr('%s.worldMatrix[0]' % k,
                                 '%s.matrixIn[0]' % temp_MMX)
                cmds.connectAttr('root_CON.worldInverseMatrix[0]',
                                 '%s.matrixIn[1]' % temp_MMX)
                cmds.connectAttr('%s.matrixSum' % temp_MMX,
                                 '%s.inputMatrix' % temp_DCM)
                cmds.connectAttr(
                    '%s.outputTranslate' % temp_DCM, '%s.translate' %
                    self.FKNull_rev[self.pathCrv_attLoc_list_rev.index(k)])
                cmds.connectAttr(
                    '%s.outputRotate' % temp_DCM, '%s.rotate' %
                    self.FKNull_rev[self.pathCrv_attLoc_list_rev.index(k)])
            elif self.pathCrv_attLoc_list_rev.index(k) is not 0:
                cmds.connectAttr('%s.worldMatrix[0]' % k,
                                 '%s.matrixIn[0]' % temp_MMX)
                cmds.connectAttr(
                    '%s.worldInverseMatrix[0]' % self.pathCrv_attLoc_list_rev[
                        self.pathCrv_attLoc_list_rev.index(k) - 1],
                    '%s.matrixIn[1]' % temp_MMX)
                cmds.connectAttr('%s.matrixSum' % temp_MMX,
                                 '%s.inputMatrix' % temp_DCM)
                cmds.connectAttr(
                    '%s.outputTranslate' % temp_DCM, '%s.translate' %
                    self.FKNull_rev[self.pathCrv_attLoc_list_rev.index(k)])
                cmds.connectAttr(
                    '%s.outputRotate' % temp_DCM, '%s.rotate' %
                    self.FKNull_rev[self.pathCrv_attLoc_list_rev.index(k)])
        # IKSub_loc_list , for curveVis locator
        self.IKSub_loc_list = list()
        for i in self.IKSubCon:
            IKSub_loc = cmds.spaceLocator(
                n=i.replace(i.split('_')[-1], 'LOC'))[0]
            cmds.parentConstraint(i, IKSub_loc, mo=0)
            self.IKSub_loc_list.append(IKSub_loc)
            cmds.parent(IKSub_loc, 'upVecVisCurve_GRP')
            cmds.toggle(IKSub_loc, template=True)
            cmds.hide(IKSub_loc)
        self.IKSub_loc_list.reverse()
        # set upvec con
        self.upVecPathLocControlSet()
        # tangent constraint
        for i in self.pathCrv_attLoc_list:
            cmds.tangentConstraint(
                self.pathSet_crv,
                i,
                aim=[0.0, 0.0, 1.0],
                u=[0.0, 1.0, 0.0],
                wut='object',
                wuo='%s' %
                self.upPathLoc_list[self.pathCrv_attLoc_list_rev.index(i)])
        # set root matrix
        self.addRootMatrix()
        # set node hierachy structure
        self.setNodeHierachy_second()
예제 #25
0
파일: kTool.py 프로젝트: 3d-kmax/kTools
 def centerPivot(self):
     mc.CenterPivot()
     print ">> Center Pivot"
예제 #26
0
def centerPivot():
	mc.CenterPivot()
예제 #27
0
def edo_addSkeletonBall(jnt,
                        autoConstraint=0,
                        parents=None,
                        rotation=None,
                        axis=4):
    #sel,1,pajnt,rotation
    #jnt='joint2'
    #parents=None
    #rotation=None
    #autoConstraint=1
    #axis=8
    dbs = cmds.sphere(ch=1,
                      o=1,
                      po=0,
                      ax=[1, 0, 0],
                      r=1.0,
                      nsp=4,
                      esw=180,
                      n=jnt + '_dn_drivenBall')
    dnball = dbs[0]
    cmds.delete(dbs[1])
    dbs = cmds.sphere(ch=1,
                      o=1,
                      po=0,
                      ax=[1, 0, 0],
                      r=1.0,
                      nsp=4,
                      ssw=180,
                      esw=360,
                      n=jnt + '_up_drivenBall')
    upball = dbs[0]
    cmds.delete(dbs[1])
    #edo_gdcfrig2012_createCtrl(jnt+'_FRAME',shape='box',colorid=17)
    edo_createFacialCtrl.edo_addFacialCtrlCmd(jnt, '', 1, '_CONNECT')
    #cmds.file(filepath,i=1)
    cmd = 'source "' + filepath + '"'
    mel.eval(cmd)
    cmds.setAttr('GRP_' + jnt + '_FRAME.rx', 90)
    curveshapes = cmds.listRelatives('SKELETONBALL_FRAME', s=1, pa=1)
    cmds.parent(curveshapes, jnt + '_FRAME', r=1, s=1)
    #cmds.setAttr(jnt+'_FRAME.sx',2)
    #cmds.setAttr(jnt+'_FRAME.sy',2)
    #cmds.setAttr(jnt+'_FRAME.sz',2)
    for cs in curveshapes:
        cmds.rename(cs, cs.replace('SKELETONBALL_FRAME', jnt + '_FRAME'))
    curveshapes = cmds.listRelatives('SKELETONBALL_FRAME', s=1, pa=1)
    cmds.makeIdentity(jnt + '_FRAME', apply=1, t=1, r=1, s=1, n=0)
    cmds.connectAttr(jnt + '_FRAME.sy', jnt + '_FRAME.sx', f=1)
    cmds.connectAttr(jnt + '_FRAME.sy', jnt + '_FRAME.sz', f=1)
    cmds.setAttr(jnt + '_FRAME.sx', e=1, k=0)
    cmds.setAttr(jnt + '_FRAME.sz', e=1, k=0)
    cmds.aliasAttr('globalScale', jnt + '_FRAME.sy')
    cmds.addAttr(jnt + '_FRAME', ln='front', at='double')
    cmds.setAttr(jnt + '_FRAME.front', e=1, k=0)
    cmds.addAttr(jnt + '_FRAME', ln='back', at='double')
    cmds.setAttr(jnt + '_FRAME.back', e=1, k=0)
    cmds.addAttr(jnt + '_FRAME', ln='left', at='double')
    cmds.setAttr(jnt + '_FRAME.left', e=1, k=0)
    cmds.addAttr(jnt + '_FRAME', ln='right', at='double')
    cmds.setAttr(jnt + '_FRAME.right', e=1, k=0)
    cmds.addAttr(jnt + '_FRAME', ln='tip', at='double')
    cmds.setAttr(jnt + '_FRAME.tip', e=1, k=1)
    cmds.addAttr(jnt + '_FRAME', ln='frontValue', at='double')
    cmds.setAttr(jnt + '_FRAME.frontValue', e=1, k=1)
    cmds.addAttr(jnt + '_FRAME', ln='backValue', at='double')
    cmds.setAttr(jnt + '_FRAME.backValue', e=1, k=1)
    cmds.addAttr(jnt + '_FRAME', ln='leftValue', at='double')
    cmds.setAttr(jnt + '_FRAME.leftValue', e=1, k=1)
    cmds.addAttr(jnt + '_FRAME', ln='rightValue', at='double')
    cmds.setAttr(jnt + '_FRAME.rightValue', e=1, k=1)
    cmds.addAttr(jnt + '_FRAME', ln='maxAngle', at='double', min=45, max=180)
    cmds.setAttr(jnt + '_FRAME.maxAngle', e=1, k=1)
    cmds.setAttr(jnt + '_FRAME.maxAngle', 150)
    cmds.addAttr(jnt + '_FRAME', ln='maxAngleRange', at='double')
    cmds.setAttr(jnt + '_FRAME.maxAngleRange', e=1, k=0)
    ar = cmds.createNode('multiplyDivide', n=jnt + '_angleMultiplyDivide')
    cmds.setAttr(jnt + '_angleMultiplyDivide.input1X', 180)
    cmds.connectAttr(jnt + '_FRAME.maxAngle',
                     jnt + '_angleMultiplyDivide.input2X',
                     f=1)
    cmds.setAttr(jnt + '_angleMultiplyDivide.operation', 2)
    cmds.connectAttr(jnt + '_angleMultiplyDivide.outputX',
                     jnt + '_FRAME.maxAngleRange',
                     f=1)
    #addLoactor
    #fl=cmds.spaceLocator(n=jnt+'_frontLoc',p=[0,0,1])[0]
    #bl=cmds.spaceLocator(n=jnt+'_backLoc',p=[0,0,-1])[0]
    #ll=cmds.spaceLocator(n=jnt+'_leftLoc',p=[1,0,0])[0]
    #rl=cmds.spaceLocator(n=jnt+'_rightLoc',p=[-1,0,0])[0]
    tl = cmds.spaceLocator(n=jnt + '_tipLoc', p=[0, 1, 0])[0]
    dbl = cmds.spaceLocator(n=jnt + '_dnBallLoc', p=[0, -1, 0])[0]
    ubl = cmds.spaceLocator(n=jnt + '_upBallLoc', p=[0, 0, 1])[0]
    cl = cmds.spaceLocator(n=jnt + '_centerLoc', p=[0, 0, 0])[0]
    #cmds.select([fl,bl,ll,rl,tl,dbl,ubl,cl],r=1)
    cmds.select([tl, dbl, ubl, cl], r=1)
    cmds.CenterPivot()
    cmds.geometryConstraint(dnball, dbl)
    cmds.parentConstraint(cl, dbl, mo=1)
    cmds.setAttr(cl + '.rx', -90)
    cmds.geometryConstraint(upball, ubl)
    cmds.parentConstraint(cl, ubl, mo=1)
    #== add 8 axis function
    if axis == 8:
        print '8 axis model...'
        cmds.addAttr(jnt + '_FRAME',
                     ln='Axis_4_or_8',
                     at='float',
                     dv=1,
                     minValue=0,
                     maxValue=1)
        cmds.setAttr(jnt + '_FRAME.Axis_4_or_8', e=1, k=1)
        eap = edo_createEightDirPlane.edo_createEightDirPlane(jnt)
        cmds.setAttr(eap + '.ry', -90)
        cmds.setAttr(eap + '.rx', 180)
        cmds.parent(eap, jnt + '_FRAME')
        #add 4up 8up
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.up_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.connectAttr(eap + '.up_Weight_4', md + '.input1Y')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2Y')
        cmds.connectAttr(md + '.outputY', bd + '.input[0]')
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.up', f=1)
        #add 4lf 8lf
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.lf_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.connectAttr(eap + '.lf_Weight_4', md + '.input1Y')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2Y')
        cmds.connectAttr(md + '.outputY', bd + '.input[0]')
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.lf', f=1)
        #add 4dn 8dn
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.dn_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.connectAttr(eap + '.dn_Weight_4', md + '.input1Y')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2Y')
        cmds.connectAttr(md + '.outputY', bd + '.input[0]')
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.dn', f=1)
        #add 4rt 8rt
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.rt_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.connectAttr(eap + '.rt_Weight_4', md + '.input1Y')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2Y')
        cmds.connectAttr(md + '.outputY', bd + '.input[0]')
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.rt', f=1)
        #add 4lfup 8lfup
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.lfup_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.setAttr(bd + '.input[0]', 0)
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.lfup', f=1)
        #add 4lfdn 8lfdn
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.lfdn_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.setAttr(bd + '.input[0]', 0)
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.lfdn', f=1)
        #add 4rtup 8rtup
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.rtup_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.setAttr(bd + '.input[0]', 0)
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.rtup', f=1)
        #add 4rtdn 8rtdn
        md = cmds.createNode('multiplyDivide')
        bd = cmds.createNode('blendTwoAttr')
        cmds.connectAttr(jnt + '_FRAME.Axis_4_or_8', bd + '.attributesBlender')
        cmds.connectAttr(eap + '.rtdn_Weight_8', md + '.input1X')
        cmds.connectAttr(jnt + '_FRAME.tip', md + '.input2X')
        cmds.setAttr(bd + '.input[0]', 0)
        cmds.connectAttr(md + '.outputX', bd + '.input[1]')
        cmds.connectAttr(bd + '.output', jnt + '_FRAME.rtdn', f=1)
        #breakUnusedAttr
        cmds.setAttr(jnt + '_FRAME.fourAxis_up', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_dn', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_lf', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_rt', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_up_Vis', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_dn_Vis', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_lf_Vis', e=1, cb=0)
        cmds.setAttr(jnt + '_FRAME.fourAxis_rt_Vis', e=1, cb=0)
        cmds.deleteAttr(jnt + '_FRAME.frontValue')
        cmds.deleteAttr(jnt + '_FRAME.backValue')
        cmds.deleteAttr(jnt + '_FRAME.leftValue')
        cmds.deleteAttr(jnt + '_FRAME.rightValue')
        cmds.deleteAttr(jnt + '_FRAME.maxAngle')
        #clearUpNode
        cmds.setAttr('GRP_' + jnt + '_CONNECT.visibility', 0)
        #cmds.delete(jnt+'_CTRL_fourAxisup',jnt+'_CTRL_fourAxisdn',jnt+'_CTRL_fourAxislf',jnt+'_CTRL_fourAxisrt')
        loc = eap.replace('curve', 'CLoc')
        cmds.setAttr(loc + '.tx', 1)
        cmds.parentConstraint(dbl, loc, mo=0)
        cmds.connectAttr(jnt + '_FRAME.globalScale', eap + '.globalScale')
        cmds.setAttr(loc + '.visibility', 0)
        #add record attributes
        cmds.addAttr(jnt + '_FRAME', ln='up_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='dn_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='lf_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='rt_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='lfup_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='lfdn_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='rtup_data', dt='string')
        cmds.addAttr(jnt + '_FRAME', ln='rtdn_data', dt='string')
    cmds.setAttr(cl + '.rx', 0)
    tdis = edo_createDistanceNode(ubl, tl, disname=jnt + '_tipDis')
    #fdis=edo_createDistanceNode(dbl,fl,disname=jnt+'_frontDis')
    #bdis=edo_createDistanceNode(dbl,bl,disname=jnt+'_backDis')
    #ldis=edo_createDistanceNode(dbl,ll,disname=jnt+'_leftDis')
    #rdis=edo_createDistanceNode(dbl,rl,disname=jnt+'_rightDis')
    #addTipSetRangeValue
    tdism = cmds.createNode('multiplyDivide', n=jnt + '_tipDisMultiply')
    dis = cmds.getAttr(tdis + '.distance')
    tiprange = cmds.createNode('setRange', n=jnt + '_tipRange')
    cmds.connectAttr(tdis + '.distance', tiprange + '.valueX', f=1)
    cmds.setAttr(tiprange + '.minX', 2)
    cmds.setAttr(tiprange + '.maxX', 1)
    cmds.connectAttr(tiprange + '.outValueX', jnt + '_FRAME.tip')
    cmds.connectAttr(jnt + '_FRAME.sy', tdism + '.input1Y', f=1)
    cmds.setAttr(tdism + '.input2Y', dis)
    cmds.connectAttr(tdism + '.outputY', tiprange + '.oldMaxX', f=1)
    #addFrontSetRangeValue
    #fdism=cmds.createNode('multiplyDivide',n=jnt+'_frontDisMultiply')
    #dis=cmds.getAttr(fdis+'.distance')
    #frontrange=cmds.createNode('setRange',n=jnt+'_frontRange')
    #cmds.connectAttr(fdis+'.distance',frontrange+'.valueX',f=1)
    #cmds.setAttr(frontrange+'.minX',1)
    #cmds.connectAttr(frontrange+'.outValueX',jnt+'_FRAME.front',f=1)
    #fm=cmds.createNode('multiplyDivide',n=jnt+'_frontMultiply')
    #cmds.connectAttr(jnt+'_FRAME.front',fm+'.input1X',f=1)
    #cmds.connectAttr(jnt+'_FRAME.tip',fm+'.input2X',f=1)
    #cmds.connectAttr(fm+'.outputX',frontrange+'.valueY',f=1)
    #cmds.setAttr(frontrange+'.oldMinY',0)
    #cmds.setAttr(frontrange+'.oldMaxY',2)
    #cmds.connectAttr(frontrange+'.outValueY',jnt+'_FRAME.frontValue',f=1)
    #cmds.connectAttr(jnt+'_FRAME.maxAngleRange',frontrange+'.maxY',f=1)
    #cmds.connectAttr(jnt+'_FRAME.sy',fdism+'.input1Y',f=1)
    #cmds.setAttr(fdism+'.input2Y',dis)
    #cmds.connectAttr(fdism+'.outputY',frontrange+'.oldMaxX',f=1)
    #addBackSetRangeValue
    #bdism=cmds.createNode('multiplyDivide',n=jnt+'_backDisMultiply')
    #dis=cmds.getAttr(bdis+'.distance')
    #backrange=cmds.createNode('setRange',n=jnt+'_backRange')
    #cmds.connectAttr(bdis+'.distance',backrange+'.valueX',f=1)
    #cmds.setAttr(backrange+'.minX',1)
    #cmds.connectAttr(backrange+'.outValueX',jnt+'_FRAME.back',f=1)
    #bm=cmds.createNode('multiplyDivide',n=jnt+'_backMultiply')
    #cmds.connectAttr(jnt+'_FRAME.back',bm+'.input1X',f=1)
    #cmds.connectAttr(jnt+'_FRAME.tip',bm+'.input2X',f=1)
    #cmds.connectAttr(bm+'.outputX',backrange+'.valueY',f=1)
    #cmds.setAttr(backrange+'.oldMinY',0)
    #cmds.setAttr(backrange+'.oldMaxY',2)
    #cmds.connectAttr(backrange+'.outValueY',jnt+'_FRAME.backValue',f=1)
    #cmds.connectAttr(jnt+'_FRAME.maxAngleRange',backrange+'.maxY',f=1)
    #cmds.connectAttr(jnt+'_FRAME.sy',bdism+'.input1Y',f=1)
    #cmds.setAttr(bdism+'.input2Y',dis)
    #cmds.connectAttr(bdism+'.outputY',backrange+'.oldMaxX',f=1)
    #addLeftSetRangeValue
    #ldism=cmds.createNode('multiplyDivide',n=jnt+'_leftDisMultiply')
    #dis=cmds.getAttr(ldis+'.distance')
    #leftrange=cmds.createNode('setRange',n=jnt+'_leftRange')
    #cmds.connectAttr(ldis+'.distance',leftrange+'.valueX',f=1)
    #cmds.setAttr(leftrange+'.minX',1)
    #cmds.connectAttr(leftrange+'.outValueX',jnt+'_FRAME.left',f=1)
    #lm=cmds.createNode('multiplyDivide',n=jnt+'_leftMultiply')
    #cmds.connectAttr(jnt+'_FRAME.left',lm+'.input1X',f=1)
    #cmds.connectAttr(jnt+'_FRAME.tip',lm+'.input2X',f=1)
    #cmds.connectAttr(lm+'.outputX',leftrange+'.valueY',f=1)
    #cmds.setAttr(leftrange+'.oldMinY',0)
    #cmds.setAttr(leftrange+'.oldMaxY',2)
    #leftblend=cmds.createNode('blendColors',n=leftrange+'_blend')
    #cmds.connectAttr(leftrange+'.outValueY',leftblend+'.color2R',f=1)
    #cmds.connectAttr(leftblend+'.outputR',jnt+'_FRAME.leftValue',f=1)
    #cmds.connectAttr(jnt+'_FRAME.maxAngleRange',leftrange+'.maxY',f=1)
    #cmds.connectAttr(jnt+'_FRAME.sy',ldism+'.input1Y',f=1)
    #cmds.setAttr(ldism+'.input2Y',dis)
    #cmds.connectAttr(ldism+'.outputY',leftrange+'.oldMaxX',f=1)
    #addRightSetRangeValue
    #rdism=cmds.createNode('multiplyDivide',n=jnt+'_rightDisMultiply')
    #dis=cmds.getAttr(rdis+'.distance')
    #rightrange=cmds.createNode('setRange',n=jnt+'_rightRange')
    #cmds.connectAttr(rdis+'.distance',rightrange+'.valueX',f=1)
    #cmds.setAttr(rightrange+'.minX',1)
    #cmds.connectAttr(rightrange+'.outValueX',jnt+'_FRAME.right',f=1)
    #rm=cmds.createNode('multiplyDivide',n=jnt+'_rightMultiply')
    #cmds.connectAttr(jnt+'_FRAME.right',rm+'.input1X',f=1)
    #cmds.connectAttr(jnt+'_FRAME.tip',rm+'.input2X',f=1)
    #cmds.connectAttr(rm+'.outputX',rightrange+'.valueY',f=1)
    #cmds.setAttr(rightrange+'.oldMinY',0)
    #cmds.setAttr(rightrange+'.oldMaxY',2)
    #rightblend=cmds.createNode('blendColors',n=rightrange+'_blend')
    #cmds.connectAttr(rightrange+'.outValueY',rightblend+'.color2R',f=1)
    #cmds.connectAttr(rightblend+'.outputR',jnt+'_FRAME.rightValue',f=1)
    #cmds.connectAttr(jnt+'_FRAME.maxAngleRange',rightrange+'.maxY',f=1)
    #cmds.connectAttr(jnt+'_FRAME.sy',rdism+'.input1Y',f=1)
    #cmds.setAttr(rdism+'.input2Y',dis)
    #cmds.connectAttr(rdism+'.outputY',rightrange+'.oldMaxX',f=1)
    #addYZplaneMirrorAttr
    #cmds.addAttr(jnt+'_FRAME',ln='direction',at='enum',en='left:right')
    #cmds.setAttr(jnt+'_FRAME.direction',e=1,k=1)
    #cmds.setAttr(jnt+'_FRAME.direction',e=1,k=1)
    #cmds.connectAttr(rightrange+'.outValueY',leftblend+'.color1R',f=1)
    #cmds.connectAttr(leftrange+'.outValueY',rightblend+'.color1R',f=1)
    #cmds.connectAttr(jnt+'_FRAME.direction',leftblend+'.blender',f=1)
    #cmds.connectAttr(jnt+'_FRAME.direction',rightblend+'.blender',f=1)
    #Dag
    cmds.parent(jnt + '_FRAME', w=1)
    cmds.delete('GRP_' + jnt + '_FRAME')
    #cmds.parent(fl,jnt+'_FRAME')
    #cmds.parent(bl,jnt+'_FRAME')
    #cmds.parent(ll,jnt+'_FRAME')
    #cmds.parent(rl,jnt+'_FRAME')
    cmds.parent(tl, jnt + '_FRAME')
    cmds.parent(ubl, jnt + '_FRAME')
    cmds.parent(dbl, jnt + '_FRAME')
    cmds.parent(cl, jnt + '_FRAME')
    cmds.parent(upball, jnt + '_FRAME')
    cmds.parent(dnball, jnt + '_FRAME')
    cmds.select(jnt + '_FRAME', r=1)
    #connect driving frame
    #dvpl=cmds.createNode('plusMinusAverage',n=jnt+'_drivingPL')
    #cmds.connectAttr(jnt+'_FRAME.leftValue',dvpl+'.input3D[0].input3Dx',f=1)
    #cmds.connectAttr(jnt+'_FRAME.frontValue',dvpl+'.input3D[0].input3Dy',f=1)
    #cmds.setAttr(dvpl+'.operation',2)
    #cmds.connectAttr(jnt+'_FRAME.rightValue',dvpl+'.input3D[1].input3Dx',f=1)
    #cmds.connectAttr(jnt+'_FRAME.backValue',dvpl+'.input3D[1].input3Dy',f=1)
    #cmds.connectAttr(dvpl+'.output3Dx',jnt+'_CTRL.tx',f=1)
    #cmds.connectAttr(dvpl+'.output3Dy',jnt+'_CTRL.ty',f=1)
    #hideLocator
    cmds.setAttr(upball + '.v', 0)
    cmds.setAttr(dnball + '.v', 0)
    #cmds.setAttr(fl+'.v',0)
    #cmds.setAttr(bl+'.v',0)
    #cmds.setAttr(ll+'.v',0)
    #cmds.setAttr(rl+'.v',0)
    cmds.setAttr(tl + '.v', 0)
    cmds.setAttr(ubl + '.v', 0)
    cmds.setAttr(dbl + '.v', 0)
    cmds.setAttr(cl + '.overrideEnabled', 1)
    cmds.setAttr(cl + '.ovc', 13)
    #cmds.setAttr(jnt+'_CTRL.v',0)
    #addglobalScaleAttr
    edo_addSkeletonBallGlobalScaleAttr(jnt + '_FRAME')
    cmds.setAttr(jnt + '_FRAME_globalScaleLoc.v', 0)
    #delete nodes
    cmds.delete('SKELETONBALL_FRAME')
    if cmds.objExists(jnt):
        #cmds.parent()
        #position
        cmds.parent(jnt + '_FRAME', jnt)
        cmds.setAttr(jnt + '_FRAME.tx', 0)
        cmds.setAttr(jnt + '_FRAME.ty', 0)
        cmds.setAttr(jnt + '_FRAME.tz', 0)
        cmds.setAttr(jnt + '_FRAME.rx', 0)
        cmds.setAttr(jnt + '_FRAME.ry', 90)
        cmds.setAttr(jnt + '_FRAME.rz', 0)
        cmds.parent(jnt + '_FRAME', w=1)
        if not rotation == None:
            for r in rotation:
                #r=rotation[1]
                if str(type(r)) == "<type 'str'>":
                    if cmds.objExists(r):
                        cmds.delete(
                            cmds.orientConstraint(r, jnt + '_FRAME', mo=0))
                else:
                    cmds.rotate(float(r[0]),
                                float(r[1]),
                                float(r[2]),
                                jnt + '_FRAME',
                                r=1,
                                os=1)
        if not parents == None:
            if cmds.objExists(parents):
                cmds.parent(jnt + '_FRAME', parents)
        if autoConstraint == 1:
            cmds.orientConstraint(jnt, cl, mo=1)
예제 #28
0
 def _centerPivot(self):
     cmds.CenterPivot()
예제 #29
0
def makeTreadObj(*args):
    """This function makes a tread out of the selected object"""

    usePreMade = cmds.radioButton("premadeGeo", query=True, select=True)
    
    if usePreMade:
        renamePreMade()
        return
    
    useProxy = cmds.checkBox("useProxy", query=True, value=True)
    
    if useProxy:
        if cmds.objExists("TreadProxyGeo"):
            userObj = "TreadProxyGeo"
        else:
            userObj = makeProxyGeo()
    else:
        userObj = cmds.textFieldButtonGrp("treadName", query=True, text=True)
        
        if not userObj:
            cmds.confirmDialog(t="Select a piece", m="Please choose a piece to build a tread or tick proxy option")
            return
    
    cmds.select(userObj, replace=True)
    
    # Verify if we want to use the actual measures of the object
    useBbox = cmds.checkBox("bboxCheck", q=True, v=True)
    
    if useBbox:
    
        bbox = cmds.exactWorldBoundingBox(userObj)
        radius = data.curveRadius
        perimeter = 2*3.14159*radius
        bboxDistance = abs(bbox[2]-bbox[-1])
        bboxDistance*=.85
        amount = round(perimeter / bboxDistance)
        
    else:
        amount = cmds.intSliderGrp("treadAmount", q=True, v=True)
     
    
    cmds.select(data.treadCircle, add=True)
    pathAnimation = cmds.pathAnimation(fm=True, f=True, fa="z", ua="y", stu=1, etu=amount, wu=(0,1,0), iu=False)
    
    # Adjust animCurve
    cmds.selectKey("{}_uValue".format(pathAnimation), time=(1,amount))
    cmds.keyTangent(itt="linear", ott="linear")
    
    #Creating snapshot
    cmds.snapshot(n="TreadSnapShot", ch=False, i=1, st=1, et=amount, update="animCurve")
    cmds.DeleteMotionPaths()
    cmds.select("TreadSnapShotGroup", r=True)
    
    if not amount == 1:
        data.treadMesh = cmds.polyUnite(n="TreadMesh", ch=False)[0]
        data.treadMesh = checkDuplicatedName(data.treadMesh)
        
    else:
        piece = cmds.listRelatives(cmds.ls(selection=True))[0]
        cmds.select(piece)
        cmds.parent(world=True)
        piece = cmds.rename("TreadMesh")
        cmds.DeleteHistory()
        
    cmds.delete("TreadSnapShotGroup")
        
    cmds.select(data.treadMesh, r=True)
    cmds.CenterPivot()
    
    # Hide original geo
    cmds.setAttr("%s.visibility"%userObj, False)

    # Delete Proxy geo if used
    if cmds.objExists("TreadProxyGeo"):
        cmds.delete("TreadProxyGeo")
예제 #30
0
파일: base.py 프로젝트: krexspace/mcake
def freeze_and_center():
    objs = cmds.ls(sl=True)
    for obj in objs:
        cmds.makeIdentity(obj, apply=True, t=1, r=1, s=1, n=0, pn=1)
        cmds.CenterPivot(obj)
        print("Freeze and Center done for {0}".format(obj))