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
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()
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')
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)
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"
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))
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)
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'
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
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!")
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()
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()
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()
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()
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
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)
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"
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)
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)
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()
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))
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()
def centerPivot(self): mc.CenterPivot() print ">> Center Pivot"
def centerPivot(): mc.CenterPivot()
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)
def _centerPivot(self): cmds.CenterPivot()
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")
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))