def ctrl_orb(): mel.eval('circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 1 -d 3 -ut 0 -tol 0.01 -s 8 -ch 1') base_circle = cmds.ls(sl=True) cmds.duplicate(rr=True) dup1 = cmds.ls(sl=True) cmds.setAttr(dup1[0] + '.rotateX', 90) cmds.duplicate(rr=True) dup2 = cmds.ls(sl=True) cmds.setAttr(dup2[0] + '.rotateY', 90) cmds.duplicate(rr=True) dup3 = cmds.ls(sl=True) cmds.setAttr(dup3[0] + '.rotateY', 45) print 'Curves have been created and positioned.' cmds.select(base_circle, dup1, dup2, dup3) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) print 'Freezing transforms on curves.' cmds.select(dup1, dup2, dup3, r=True) curves = cmds.ls(sl=True) cmds.pickWalk(d='Down') cmds.select(base_circle, add=True) cmds.parent(r=True, s=True) print 'Curve list has been parented into single curve.' cmds.select(curves, r=True) mel.eval('doDelete') print 'Unused groups have been deleted.' cmds.select(base_circle) mel.eval('CenterPivot') print ('End result curve have been selected and its pivot has been centered.')
def ctrl_move_all(): base_circle = mel.eval('circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 1.5 -d 3 -ut 0 -tol 0.01 -s 8 -ch 0') arrow_list = [] arrow1 = mel.eval('curve -d 1 -p 1.75625 0 0.115973 -p 1.75625 0 -0.170979 -p 2.114939 0 -0.170979 -p 2.114939 0 -0.314454 -p 2.473628 0 -0.0275029 -p 2.114939 0 0.259448 -p 2.114939 0 0.115973 -p 1.75625 0 0.115973 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7') arrow2 = mel.eval('curve -d 1 -p 0.143476 0 -1.783753 -p 0.143476 0 -2.142442 -p 0.286951 0 -2.142442 -p 0 0 -2.501131 -p -0.286951 0 -2.142442 -p -0.143476 0 -2.142442 -p -0.143476 0 -1.783753 -p 0.143476 0 -1.783753 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7') arrow3 = mel.eval('curve -d 1 -p -1.75625 0 -0.170979 -p -2.114939 0 -0.170979 -p -2.114939 0 -0.314454 -p -2.473628 0 -0.0275029 -p -2.114939 0 0.259448 -p -2.114939 0 0.115973 -p -1.75625 0 0.115973 -p -1.75625 0 -0.170979 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7') arrow4 = mel.eval('curve -d 1 -p -0.143476 0 1.728747 -p -0.143476 0 2.087436 -p -0.286951 0 2.087436 -p 0 0 2.446125 -p 0.286951 0 2.087436 -p 0.143476 0 2.087436 -p 0.143476 0 1.728747 -p -0.143476 0 1.728747 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7') arrow_list.append(arrow1) arrow_list.append(arrow2) arrow_list.append(arrow3) arrow_list.append(arrow4) print 'Curves have been created and positioned.' cmds.select(arrow_list) cmds.pickWalk(d='Down') cmds.select(base_circle, add=True) cmds.parent(r=True, s=True) print 'Curve list has been parented into single curve.' cmds.select(arrow_list, r=True) mel.eval('doDelete') print 'Unused groups have been deleted.' cmds.select(base_circle) mel.eval('CenterPivot') print ('End result curve have been selected and its pivot has been centered.')
def badname(self, arg=None): cmds.select(d=True) if cmds.objExists("badNames")==True: cmds.delete("badNames") cmds.sets(n="badNames", co=5) for each in badNameList: if cmds.objExists(each+'*'): cmds.select (each+'*', hierarchy=False, add=True) cmds.sets( fe="badNames") # if cmds.objExists('pSphere*'): # cmds.select ('pSphere*', hierarchy=False, add=True) # cmds.sets( fe="badNames") # # if cmds.objExists('curve*'): # cmds.select ('curve*', hierarchy=False, add=True) # cmds.sets( fe="badNames") # # # if cmds.objExists('polySurface*'): # cmds.select ('polySurface*', hierarchy=False, add=True) # cmds.sets( fe="badNames") if cmds.objExists('badNames'): cmds.select('badNames', r=True, ne=True) shoo=cmds.ls(sl=True) cmds.pickWalk (d='up') pete=cmds.ls(sl=True) if (len(pete))>0: print("The selected object(s) don't have very descriptive names.") else: cmds.select(cl=True) print(" no bad names exists.") cmds.delete(shoo)
def singlePoly(self, arg=None): selObj=self.selection_grab() if selObj: pass else: print "select a polygon object" return if "." in selObj[0]: print "You need to select a polygon object to interogate.(check that you are not in component mode)" return else: pass cmds.select(cl=True) if cmds.objExists("PolyIssues")==True: cmds.delete("PolyIssues") cmds.sets(n="PolyIssues", co=5) cmds.select(selObj) errorFound=cmds.polyInfo(selObj, lf=True, nme=True, nmv=True ) cmds.select (errorFound) cmds.ConvertSelectionToVertices(errorFound) if errorFound>0: print "Polygon error found" cmds.sets( fe='PolyIssues') cmds.select('PolyIssues', r=True, ne=True) cmds.pickWalk(d='Up') errorFound=cmds.ls(sl=True) if (len(errorFound))==0: cmds.delete("PolyIssues")
def splitJoint (): _newBoneNum = cmds.intSlider ( 'boneNum', query = 1, value = 1 ) _bone = cmds.ls ( selection = 1, long = 1 ) _childJoint = cmds.listRelatives ( children = 1 ) if len(_bone) > 0: if type(_childJoint) is not NoneType: # print; print; print '>>> SO FAR SO GOOD'; print # <<< DEBUG ONLY LINE, CAN BE DELETED <<< ########## _bone = _bone[0] _childJoint = _childJoint[0] _childTranslateX = cmds.getAttr ( _childJoint + '.translateX' ) _childTranslateY = cmds.getAttr ( _childJoint + '.translateY' ) _childTranslateZ = cmds.getAttr ( _childJoint + '.translateZ' ) _newX = _childTranslateX / ( _newBoneNum + 1.0 ) _newY = _childTranslateY / ( _newBoneNum + 1.0 ) _newZ = _childTranslateZ / ( _newBoneNum + 1.0 ) for _k in range ( _newBoneNum ): _bone = cmds.insertJoint ( _bone ) cmds.toggle ( localAxis = 1 ) cmds.xform ( _bone + '.scalePivot', _bone + '.rotatePivot', relative = 1, objectSpace = 1, translation = ( _newX, _newY, _newZ ) ) for _k in range ( _newBoneNum ): cmds.pickWalk ( direction = 'up' ) else: raiseWarning ( 'select the bone, not a single joint' ) else: raiseWarning ( 'select the bone' )
def badname(self): cmds.select(d=True) if cmds.objExists("badNames")==True: cmds.delete("badNames") cmds.sets(n="badNames", co=5) if cmds.objExists('pSphere*'): cmds.select ('pSphere*', hierarchy=False, add=True) cmds.sets( fe="badNames") if cmds.objExists('curve*'): cmds.select ('curve*', hierarchy=False, add=True) cmds.sets( fe="badNames") if cmds.objExists('polySurface*'): cmds.select ('polySurface*', hierarchy=False, add=True) cmds.sets( fe="badNames") if cmds.objExists('badNames'): cmds.select('badNames', r=True, ne=True) shoo=cmds.ls(sl=True) cmds.pickWalk (d='up') pete=cmds.ls(sl=True) if (len(pete))>0: print("you must give the selected object(s) descriptive names.") else: cmds.select(cl=True) print(" no bad names exists.") cmds.delete(shoo)
def create_Joints(): src_joint = cmds.ls(sl=True) cmds.select(hi=True) findselAmt = cmds.ls(sl=True) if (len(findselAmt)<2): cmds.warning("select atleast 2 joints") else: noOfjoints = cmds.textField("Number",query=True,text=True) num_jnts = float(noOfjoints) cmds.pickWalk(d="down") childjnt = cmds.ls(sl=True) cmds.select(childjnt) pos_child = cmds.xform(childjnt[0],query=True,translation=True,ws=True) pos_start = cmds.xform(src_joint[0],query=True,translation=True,ws=True) splitPos_x = pos_child[0] - pos_start[0] splitPos_y = pos_child[1] - pos_start[1] splitPos_z = pos_child[2] - pos_start[2] splitPos = [(splitPos_x/num_jnts),(splitPos_y/num_jnts),(splitPos_z/num_jnts)] num_joints = int(num_jnts) cmds.pickWalk(d="up") if(noOfjoints<2): cmds.warning("Must create atleast 1 segment") else: for jnt in range(1,num_joints): newJoint = cmds.insertJoint(src_joint) newJoint = cmds.rename(newJoint, "tempName"+ str(jnt)) cmds.move(splitPos[0],splitPos[1],splitPos[2],newJoint+".scalePivot",newJoint+".rotatePivot",ws=True,r=True) src_joint = newJoint cmds. select(newJoint)
def asignMaterial(*args): cmds.pickWalk( d = "down" ) sel = cmds.ls( sl = True ) for i in sel: mat = cmds.getAttr(i + '.mtoa_constant_mMat') matSG = mat + 'SG' asign = cmds.sets(i, e =1, forceElement = matSG)
def postProcessControl ( _control, _function, _controlled ): # <<< string, string, list lockHideAttributes ( _control ) if (cmds.objExists('anim_control_set') == False): cmds.createNode('objectSet',name='anim_control_set',skipSelect=True) cmds.sets ( _control, addElement = 'anim_control_set' ) cmds.toggle ( localAxis = 1 ) if len ( _controlled ) == 0: _control = cmds.rename ( '_' + _function + '_control' ) _control = cmds.group ( world = 1, name = '_' + _function + '_control_offSet' ) cmds.move ( 0, 0, 0, _control + '.rotatePivot', _control + '.scalePivot' ) lockHideAttributes ( _control ) else: _k = _controlled[0].rfind ( '|' ) _control = _controlled[0][_k+1:] cmds.rename ( _control + '_' + _function + '_control' ) _control = cmds.group ( world = 1, name = _control + '_' + _function + '_control_offSet' ) cmds.move ( 0, 0, 0, _control + '.rotatePivot', _control + '.scalePivot' ) lockHideAttributes ( _control ) cmds.select ( _controlled[0], toggle = True ) cmds.parent () cmds.xform ( translation = ( 0, 0, 0 ), rotation = ( 0, 0, 0 ) ) cmds.parent ( world = 1 ) cmds.pickWalk ( direction = "down" )
def splitJoint (): _newBoneNum = cmds.intSlider ('boneNum', query = 1, value = 1) _bone = cmds.ls (selection = 1, long = 1) _childJoint = cmds.listRelatives (children = 1) if (len (_bone) > 0) and (type(_childJoint) is not NoneType) \ and (cmds.nodeType(_bone[0]) == 'joint') and (cmds.nodeType(_childJoint) == 'joint'): _childTranslateX = cmds.getAttr ( _childJoint[0] + '.translateX' ) _childTranslateY = cmds.getAttr ( _childJoint[0] + '.translateY' ) _childTranslateZ = cmds.getAttr ( _childJoint[0] + '.translateZ' ) _newX = _childTranslateX / ( _newBoneNum + 1.0 ) _newY = _childTranslateY / ( _newBoneNum + 1.0 ) _newZ = _childTranslateZ / ( _newBoneNum + 1.0 ) for _k in range ( _newBoneNum): _bone = cmds.insertJoint ( _bone ) cmds.toggle (localAxis =1) cmds.xform (_bone + '.scalePivot', _bone + '.rotatePivot', relative = 1, objectSpace = 1, translation = ( _newX, _newY, _newZ ) ) for _k in range ( _newBoneNum ): cmds.pickWalk ( direction = 'up' ) else: raiseWarning ( 'select a bone! You can do it!' )
def ctrl_text(var): """ Creates letters and text made from multipe curves. """ cmds.textCurves(ch=0, f='Times New Roman', t=var) cmds.ungroup() cmds.ungroup() print 'Curves have been ungrouped.' curves = cmds.ls(sl=True) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) print 'Freezing transforms on curves.' cmds.pickWalk(d='Down') shapes = cmds.ls(sl=True) print 'Creating a list of curve shape nodes.' parent_shapes = shapes[1:] delete_curves = curves[1:] print 'Slicing lists for parenting and deleting purposes.' cmds.select(parent_shapes, r=True) cmds.select(curves[0], add=True) cmds.parent(r=True, s=True) print 'Curve list has been parented into single curve.' cmds.select(delete_curves, r=True) mel.eval('doDelete') print 'Unused groups have been deleted.' cmds.select(curves[0]) mel.eval('CenterPivot') print ('End result curve have been selected and its pivot has been centered.')
def ctrl_pointer(): mel.eval('curve -d 1 -p -1 0 0 -p 1 0 0 -p 1 1 0 -p 1 2 0 -p 1 3 0 -p 2 3 0 -p 0 5 0 -p -2 3 0 -p -1 3 0 -p -1 2 0 -p -1 1 0 -p -1 0 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11') ctrl = cmds.ls(sl=True) cmds.duplicate(rr=True) ctrl2 = cmds.ls(sl=True) cmds.setAttr(ctrl2[0] + '.rotateY', 90) print 'Curves have been positioned.' cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) print 'Freezing transforms on curves.' cmds.select(ctrl, r=True) cmds.pickWalk(d='Down') cmds.select(ctrl2, add=True) cmds.parent(r=True, s=True) print 'Curves have been parented into single curve.' cmds.select(ctrl, r=True) mel.eval('doDelete') print 'Unsuded groups have been deleted.' cmds.select(ctrl2) mel.eval('CenterPivot') print 'Curve has been selected and its pivot has been centered.'
def __init__(self): # define camera print "[define camera class]" _selection = cmds.ls(selection=True) _panel = cmds.getPanel(withFocus=True) _typeOfPanel = mm.eval("getPanel -typeOf " + _panel) _cameraSelected = False # check for selected camera print "[checking selection for camera]" if len(_selection) != 0: # selection not empty _camera = _selection[0] _cameraShape = cmds.pickWalk(direction="down")[0] if cmds.nodeType(_cameraShape) != "camera": # selection is not a camera print "[selecton or first leselcted object is not camera]" else: # selection is a camera if _camera == _cameraShape: # if cameraShape is selected get camera transform _camera = cmds.pickWalk(direction="up")[0] _cameraSelected = True else: # no selection print "[no selection. checking active panel for camera.]" if _typeOfPanel == "modelPanel": # panel is modeling panel with camera _camera = cmds.modelPanel(_panel, query=True, camera=True) cmds.select(_camera) _cameraShape = cmds.pickWalk(direction="down")[0] _cameraSelected = True else: # no modeling panel with camera is selected print "[active panel is not modeling panel with camera]" if _cameraSelected: # camera is extracted, get properties print "[camera OK]" print "-> camera: " + _camera print "-> cameraShape: " + _cameraShape self.camera = _camera self.cameraShape = _cameraShape self.aperture_h = cmds.camera(_camera, query=True, horizontalFilmAperture=True) self.aperture_v = cmds.camera(_camera, query=True, verticalFilmAperture=True) self.fieldOfView_h = cmds.camera(_camera, query=True, horizontalFieldOfView=True) self.fieldOfView_v = cmds.camera(_camera, query=True, verticalFieldOfView=True) self.filmOffset_h = cmds.camera(_camera, query=True, horizontalFilmOffset=True) self.filmOffset_v = cmds.camera(_camera, query=True, verticalFilmOffset=True) self.overscan = cmds.camera(_camera, query=True, overscan=True) else: # no camera print "[could not extract camera]"
def connectShader(self, selectedObject, nameShader): """ This method connects the shader to an object. """ mc.select( selectedObject ); mc.pickWalk( d='down' ); selectedObjectList = mc.ls( sl=True ); mc.sets( selectedObjectList[0], edit=True, forceElement=nameShader + 'SG' ); mc.select( clear=True )
def getMaterial(*args): cmds.pickWalk( d = "down" ) sel = cmds.ls(sl=1,long=1) for i in sel: shadingGroup = cmds.listConnections(i ,type='shadingEngine') mat = (shadingGroup[0])[:-2] cmds.setAttr( i + '.mtoa_constant_mMat', mat, type = 'string')
def delColorAttr(*args): floatAttrName = cmds.textFieldGrp( 'colorText', q = True, text = True ).split(' ') cmds.pickWalk( d = "down" ) selected = cmds.ls(sl=1,long=1) for member in selected: for i in floatAttrName: if cmds.attributeQuery( "mtoa_constant_" + i, node = member, exists = True ): cmds.deleteAttr(member + '.mtoa_constant_' + i) else: print 'attribute ' + i + ' not exist!'
def addStringAttr(*args): stringAttrName = cmds.textFieldGrp( 'stringText', q = True, text = True ).split(' ') cmds.pickWalk( d = "down" ) selected = cmds.ls(sl=1,long=1) for member in selected: for i in stringAttrName: if cmds.attributeQuery( "mtoa_constant_" + i, node = member, exists = True ): print 'attribute ' + i + ' already exist!' else: cmds.addAttr(member, ln = "mtoa_constant_" + i, nn = i, dt = 'string')
def aiSmoothOff(*args): cmds.pickWalk( d = "down" ) sel = cmds.ls(sl=1,long=1) for i in sel: cmds.setAttr(i + ".useSmoothPreviewForRender", lock = 0) cmds.setAttr(i + ".useSmoothPreviewForRender", 0) cmds.setAttr(i + ".smoothLevel", 2) cmds.setAttr(i + ".renderSmoothLevel", 0) cmds.setAttr(i + ".renderSmoothLevel", lock = 1)
def parentJoints(endEffectorName): old=endEffectorName parents=[] curParent=cmds.pickWalk(endEffectorName,d='up') assert( len(curParent) == 1) while( old!=curParent[0] ): parents.append(curParent[0]) old=curParent[0] curParent=cmds.pickWalk(curParent[0],d='up') assert( len(curParent) == 1) cmds.select(cl=True) return parents
def parentJnts(self, endEffector): old = endEffector parentJntList = [] currentParent = mc.pickWalk(endEffector, d="up") assert len(currentParent) == 1 while old != currentParent[0]: parentJntList.append(currentParent[0]) old = currentParent[0] currentParent = mc.pickWalk(currentParent[0], d="up") assert len(currentParent) == 1 mc.select(cl=True) return parentJntList
def addColorAttr(*args): colorAttrName = cmds.textFieldGrp( 'colorText', q = True, text = True ).split(' ') cmds.pickWalk( d = "down" ) selected = cmds.ls(sl=1,long=1) for member in selected: for i in colorAttrName: if cmds.attributeQuery( "mtoa_constant_" + i, node = member, exists = True ): print 'attribute ' + i + ' already exist!' else: cmds.addAttr(member, ln = "mtoa_constant_" + i, nn = i , uac = 1, at ="float3" ) cmds.addAttr(member, ln = "red_" + i, at = "float", p = "mtoa_constant_" + i ) cmds.addAttr(member, ln = "grn_" + i, at = "float", p = "mtoa_constant_" + i ) cmds.addAttr(member, ln = "blu_" + i, at = "float", p = "mtoa_constant_" + i )
def SundayControllerToolApply(locatorType): joints = cmds.ls(selection = True) if len(joints) != 0: ctrls = [] locatorUp = '0 0 0' if cmds.radioButton('ControllerDirectionXUpRadioButton', query = True, select = True): locatorUp = '90 0 0' if cmds.radioButton('ControllerDirectionYUpRadioButton', query = True, select = True): locatorUp = '0 90 0' if cmds.radioButton('ControllerDirectionZUpRadioButton', query = True, select = True): locatorUp = '0 0 90' for curJoint in joints: joint_grp = curJoint + '_GRP' joint_ctrl = curJoint + '_CTRL' ctrls.append(joint_ctrl) cmds.group(empty = True, name = joint_grp) if cmds.checkBox('CreateSDKGroupCheckBox', query = True, value = True): joint_sdk = curJoint + '_SDK' cmds.group(empty = True, name = joint_sdk) cmds.parent(joint_sdk, joint_grp) mel.eval(SundayLocatorToolPy.SundayLocatorToolGetLocator(joint_ctrl, locatorType, locatorUp)) cmds.parent(joint_ctrl, joint_sdk) else: mel.eval(SundayLocatorToolPy.SundayLocatorToolGetLocator(joint_ctrl, locatorType, locatorUp)) cmds.parent(joint_ctrl, joint_grp) print cmds.iconTextRadioCollection('ltColorCollection', query = True, select = True) cmds.setAttr(joint_ctrl + '.overrideEnabled', 1) cmds.setAttr(joint_ctrl + '.overrideColor', int(cmds.iconTextRadioCollection('ltColorCollection', query = True, select = True).split('_')[1])) cmds.select(curJoint, joint_grp) cmds.pointConstraint(name = joint_grp + '_tempJOINTPointConstraint') cmds.orientConstraint(name = joint_grp + '_tempJOINTOrientConstraint') cmds.delete(joint_grp + '_tempJOINTPointConstraint*') cmds.delete(joint_grp + '_tempJOINTOrientConstraint*') if cmds.checkBox('CreateConstraintCheckBox', query = True, value = True): cmds.parentConstraint(joint_ctrl, curJoint) if cmds.checkBox('CreateParentConstraintCheckBox', query = True, value = True): cmds.select(curJoint) cmds.pickWalk(direction = 'up') if cmds.ls(selection = True)[0] != curJoint: cmds.select(joint_grp, add = True) cmds.ParentConstraint() cmds.ls(selection = True)[0] != curJoint cmds.select(ctrls) else: SundayDialogPy.SundayDialogConfirm('Error ', 'No joints selected', 'OK')
def cleanScene(self): deleteList = "nurbsCurve","nurbsSurface","unknownTransform","animCurveTU","wire","brush","unknown","choice","unitToTimeConversion","displayLayer" skippList = [u'time1', u'sequenceManager1', u'renderPartition', u'renderGlobalsList1', u'defaultLightList1', u'defaultShaderList1', u'postProcessList1', u'defaultRenderUtilityList1', u'defaultRenderingList1', u'lightList1', u'defaultTextureList1', u'lambert1', u'particleCloud1', u'initialShadingGroup', u'initialParticleSE', u'initialMaterialInfo', u'shaderGlow1', u'dof1', u'defaultRenderGlobals', u'defaultRenderQuality', u'defaultResolution', u'defaultLightSet', u'defaultObjectSet', u'defaultViewColorManager', u'hardwareRenderGlobals', u'hardwareRenderingGlobals', u'characterPartition', u'defaultHardwareRenderGlobals', u'ikSystem', u'hyperGraphInfo', u'hyperGraphLayout', u'globalCacheControl', u'dynController1', u'persp', u'perspShape', u'top', u'topShape', u'front', u'frontShape', u'side', u'sideShape', u'lightLinker1', u'brush1', u'strokeGlobals', u'layersFilter', u'objectTypeFilter74', u'animLayersFilter', u'objectTypeFilter75', u'notAnimLayersFilter', u'objectTypeFilter76', u'defaultRenderLayerFilter', u'objectNameFilter4', u'renderLayerFilter', u'objectTypeFilter77', u'objectScriptFilter10', u'renderingSetsFilter', u'objectTypeFilter78', u'relationshipPanel1LeftAttrFilter', u'relationshipPanel1RightAttrFilter', u'layerManager', u'defaultLayer', u'renderLayerManager', u'defaultRenderLayer'] skippList = skippList + cmds.ls("m*", type = "mesh") assetTypeList = cmds.ls(type=deleteList) ###Rename shaders with m to shaderm to remove errors... list = "layeredShader","blinn","phongE" mShaders = cmds.ls("m*",type=list) print mShaders for each in mShaders: try: print each cmds.rename(each, "shader"+each) except: pass ###delete stuff we dont want... for asset in assetTypeList: if not asset in skippList: try: cmds.delete(asset) except: pass else: print "asset" pass ###delete object with locked visibility to off all = cmds.ls(type=["transform","mesh"]) print all for each in all: try: if not cmds.getAttr(each+".v"): deleteThis = cmds.pickWalk( each, direction='up' ) moveHere = cmds.pickWalk( deleteThis, direction='up' ) cmds.parent(each,moveHere,shape=True) cmds.setAttr( each+".v", lock=False) cmds.setAttr( each+".v", 1) cmds.delete(deleteThis) except: pass ###delete empty transforms... all = cmds.ls(type="transform") for each in all: try: if cmds.pickWalk(each, direction='down')[0] == each: cmds.delete(each) except: pass print "Done cleaning"
def addToLightGroup(lightGroup): name = 'lightGroup' attrName = 'mtoa_constant_' + name cmds.pickWalk(d="down") selected = cmds.ls(sl=1, long=1) addAOVlightGroup(lightGroup) for member in selected: if cmds.attributeQuery(attrName, node=member, exists=True): print 'attribute ' + attrName + ' already exist!' else: cmds.addAttr(member, ln=attrName, nn=name, at='long') cmds.setAttr(member + '.' + attrName, int(lightGroup))
def Color_Rnm_rightCtrls(): #renames the group of the controls and color codes them right_controls = cmds.ls(sl=True) #select/lists all the objects selected for all in right_controls: #for all the controls selected: cmds.select(all) cmds.pickWalk(d='Up') #tranverses up in the hierarchy sel_grpSDK = cmds.ls(sl=True) cmds.rename(sel_grpSDK[0],'grpSDK_'+all) #renames the group cmds.pickWalk(d='Up') sel_grpOri = cmds.ls(sl=True) cmds.rename(sel_grpOri[0],'grp_Ori'+all) all_shape = cmds.listRelatives(type= 'shape all') #selects all the objects of type shape cmds.setAttr(all_shape[0]+".overrideEnabled",1) cmds.setAttr(all_shape[0]+".overrideColor",18) # changes the color
def createCube(self, *args): i = 0 j = 0 k = 1 posX = 0 cubeStock = [] dupCubeStock = [] self.cubeNumX = self.numX_input() self.cubeNumZ = self.numZ_input() while i < self.cubeNumX : cmds.polyCube( w = 10, h = 10, d = 10, sx = self.divX_input(), sy = self.divY_input(), sz = self.divZ_input(), ax = (0, 1, 0), cuv = 4, ch = 1) cmds.move(15 * i, 0, 0) self.cubeName = str(cmds.pickWalk(d = "up")) self.splittedCubeName = self.cubeName.split("'")[1] self.cubeFinalName = unicode(self.splittedCubeName) print("cubeFinalName : " + self.cubeFinalName) cubeStock.append(self.cubeFinalName) i += 1 while j < self.cubeNumZ : posX = cmds.getAttr(str(cubeStock[j]) + ".translateX") cmds.select(cubeStock[j], r = True) dup = cmds.duplicate(cubeStock[j]) cmds.move(posX, 0, 15 * k) j += 1 k += 1
def createControl(self, *args): """ Create FK control for selected joint, or it's hierarchy """ #Store values prefix = mc.textFieldGrp(self.prefixField, query=True, text=True) rootJnt = mc.textFieldButtonGrp(self.jntField, query=True, text=True) control = mc.textFieldButtonGrp(self.controlField, query=True, text=True) selection = mc.radioButtonGrp(self.selectionField, query=True, sl=True) #Main Chain if (selection == 1): mc.select(rootJnt, r=True, hi=True) else: mc.select(rootJnt, r=True) sel = mc.ls(sl=True, fl=True) #Duplicate FK control, parent it to selected joints for each in sel: #Duplicate control tempCnt = mc.duplicate(control) #Select the shape tempShp = mc.pickWalk(tempCnt, direction='down') mc.parent(tempShp, each, r=True, s=True)
def create_text(text): cmds.textCurves(ch=0, t=text) print(text) cmds.ungroup() cmds.ungroup() curves = cmds.ls(sl=True) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) shapes = curves[1:] cmds.select(shapes, r=True) cmds.pickWalk(d='Down') cmds.select(curves[0], tgl=True) cmds.parent(r=True, s=True) cmds.pickWalk(d='up') cmds.delete(shapes) cmds.xform(cp=True) return cmds.ls(sl=True)[0]
def make_fk_control(self, joints, color): # create fk chain for obj in joints: obj_control = cmds.circle(n=obj + '_Ctl', nr=[1, 0, 0], r=5) cmds.setAttr(obj_control[0] + '.lineWidth', 2) self.override_colors(obj_control[0], color) obj_control_group = cmds.group(obj_control, n=obj + '_Ctl_Null') cmds.matchTransform(obj_control_group, obj, pos=True, rot=True) cmds.orientConstraint(obj_control, obj) cmds.parent(obj_control_group, 'controls') parentOBJ = cmds.pickWalk(obj, direction='up') if parentOBJ[0] == obj: pass else: cmds.parentConstraint(parentOBJ, obj_control_group, mo=True) #hide controls if its ik mode condition = cmds.shadingNode('condition', asUtility=True, n='condition_node' + obj_control[0]) cmds.connectAttr(self.ik_fk_control + '.ikfk', condition + '.firstTerm') cmds.connectAttr(condition + '.outColorR', obj_control[0] + '.visibility') self.controls.append(obj_control_group)
def setup(self): #duplicate given joints cmds.duplicate(self.oldJoint1, n=self.dupJoint1, po=True) cmds.duplicate(self.oldJoint2, n=self.dupJoint2, po=True) cmds.parent(self.dupJoint2, self.dupJoint1) cmds.parent(self.dupJoint1, w=True) #create rp ik ik = cmds.ikHandle(sol='ikRPsolver', sj=self.dupJoint1, ee=self.dupJoint2, n=self.ik)[0] #zero pole vectors cmds.setAttr("{0}.poleVectorX".format(self.ik), 0) cmds.setAttr("{0}.poleVectorY".format(self.ik), 0) cmds.setAttr("{0}.poleVectorZ".format(self.ik), 0) #parent to bindJoint cmds.select(self.oldJoint1) clav = cmds.pickWalk(d='Up') cmds.parent(self.ik, self.oldJoint1) cmds.parent(self.dupJoint1, clav) #hide ik cmds.setAttr('{0}.v'.format(ik), 0) # hide them they ugly cmds.setAttr("{0}.v".format(self.dupJoint1), 0) cmds.setAttr("{0}.v".format(self.dupJoint2), 0)
def clavSel(scaleClav): # Select clavicle Joint moving up and put it at the top of the chain clavJoint = cmds.pickWalk(ogChain[0], d="up")[0] #ogChain.insert(0, clavJoint) clavController = createClav2(clavJoint + "_anim") # Import coordinates from ctrlUI_lib cmds.delete(cmds.pointConstraint(clavJoint, clavController)) # Create offset group, FDH and move up clavControllerGrp = cmds.group(n=clavController + "_grp", em=1) cmds.delete(cmds.parentConstraint(clavJoint, clavControllerGrp)) cmds.parent(clavController, clavControllerGrp) fixedScale = scaleClav/4 cmds.scale(fixedScale, fixedScale, fixedScale, clavController) cmds.makeIdentity(clavController, a=1) cmds.move(0,10,0, clavControllerGrp, ws=1, r=1) cmds.color(clavController, rgb=controllerColor) # Move pivots on clavicle joint piv = cmds.xform(clavJoint, q=True, ws=True, t=True) cmds.xform(clavController, ws=True, piv=piv) cmds.xform(clavControllerGrp, ws=True, piv=piv) cmds.orientConstraint(clavController, clavJoint) # Parent ik and fk chain under clavicle controller cmds.parent((ogChain[0]+"_fk_anim_grp"),(ogChain[0] + "_ik"), (ogChain[0] + "_fk"), clavController) cmds.parent(clavControllerGrp, ctrlGrp)
def check_transforms(objects): ''' Check joints to insure they have no rotation values. ''' invalid = [] cmds.select(objects) new_objects = cmds.pickWalk(d='up') t_r_xform = ['t', 'r'] scale_xform = 's' axis = ['x', 'y', 'z'] for obj in new_objects: #check translates rotates and scales for trans in t_r_xform: #check each axis for ax in axis: trans_rot = cmds.getAttr('%s.%s%s' % (obj, trans, ax)) if trans_rot != 0: invalid.append(obj) break for ax in axis: scale = cmds.getAttr('%s.%s%s' % (obj, scale_xform, ax)) if scale != 1: invalid.append(obj) break return invalid
def createFollicle(node, name="follicle"): u = 0.5 v = 0.5 sel = node cmds.select(node) cv = cmds.filterExpand(sm=28, fp=True) if cv: node = node.split(".")[0] shape = cvshapeinverter.get_shape(node) folShape = cmds.createNode("follicle", n="{0}_FOLShape".format(name)) buffer = cmds.pickWalk(d="Up")[0] fol = cmds.rename(buffer, "{0}_FOL".format(name)) cmds.setAttr("{0}.parameterU".format(folShape), u) cmds.setAttr("{0}.parameterV".format(folShape), v) cmds.connectAttr("{0}.local".format(shape), "{0}.inputSurface".format(folShape)) cmds.connectAttr("{0}.worldMatrix[0]".format(shape), "{0}.inputWorldMatrix".format(folShape)) cmds.connectAttr("{0}.outRotate".format(folShape), "{0}.rotate".format(fol)) cmds.connectAttr("{0}.outTranslate".format(folShape), "{0}.translate".format(fol)) if cv: # snap the follicle to the selection snapFollicleToCv(sel, shape, folShape) return fol
def testSubD(self): trans = MayaCmds.polyPlane(n='plane', sx=1, sy=1, ch=False)[0] shape = MayaCmds.pickWalk(d='down')[0] MayaCmds.addAttr(attributeType='bool', defaultValue=1, keyable=True, longName='SubDivisionMesh') MayaCmds.select(trans+'.vtx[0:3]', r=True) MayaCmds.move(0, 1, 0, r=True) MayaCmds.currentTime(1, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(2, update=True) MayaCmds.move(0, 5, 0, r=True) MayaCmds.setKeyframe() self.__files.append(util.expandFileName('testSubDInterpolation.abc')) MayaCmds.AbcExport(j='-fr 1 2 -root %s -file %s' % (trans, self.__files[-1])) MayaCmds.AbcImport(self.__files[-1], mode='open') MayaCmds.currentTime(1.004, update=True) ty = MayaCmds.getAttr(shape+'.vt[0]')[0][1] self.failUnlessAlmostEqual(1.02, ty) setTime = MayaCmds.currentTime(1.422, update=True) alpha = (setTime - 1) / (2 - 1) ty = MayaCmds.getAttr(shape+'.vt[0]')[0][1] self.failUnlessAlmostEqual(ty, (1-alpha)*1.0+alpha*6.0, 3)
def Color_Rnm_leftCtrls(): #works similar to Color_rnm_rightControls left_controls = cmds.ls(sl=True) for all in left_controls: cmds.select(all) cmds.pickWalk(d='Up') sel_grpSDK = cmds.ls(sl=True) cmds.rename(sel_grpSDK[0],'grpSDK_'+all) cmds.pickWalk(d='Up') sel_grpOri = cmds.ls(sl=True) cmds.rename(sel_grpOri[0],'grp_Ori'+all) all_shape = cmds.listRelatives(type='shape_all') cmds.setAttr(all_shape[0]+".overrideEnabled",1) cmds.setAttr(all_shape[0]+".overrideColor",17) print "Colored renamed on left circle"
def testSubD(self): trans = MayaCmds.polyPlane(n='plane', sx=1, sy=1, ch=False)[0] shape = MayaCmds.pickWalk(d='down')[0] MayaCmds.addAttr(attributeType='bool', defaultValue=1, keyable=True, longName='SubDivisionMesh') MayaCmds.select(trans + '.vtx[0:3]', r=True) MayaCmds.move(0, 1, 0, r=True) MayaCmds.currentTime(1, update=True) MayaCmds.setKeyframe() MayaCmds.currentTime(2, update=True) MayaCmds.move(0, 5, 0, r=True) MayaCmds.setKeyframe() self.__files.append(util.expandFileName('testSubDInterpolation.abc')) MayaCmds.AbcExport(j='-fr 1 2 -root %s -file %s' % (trans, self.__files[-1])) MayaCmds.AbcImport(self.__files[-1], mode='open') MayaCmds.currentTime(1.004, update=True) ty = MayaCmds.getAttr(shape + '.vt[0]')[0][1] self.failUnlessAlmostEqual(1.02, ty) setTime = MayaCmds.currentTime(1.422, update=True) alpha = (setTime - 1) / (2 - 1) ty = MayaCmds.getAttr(shape + '.vt[0]')[0][1] self.failUnlessAlmostEqual(ty, (1 - alpha) * 1.0 + alpha * 6.0, 3)
def CreateGroups(self): cmds.select(self.fkJoint) self.masterGrp = cmds.pickWalk(direction="up") self.fkJntGrp = cmds.group(empty=True, n=self.jointName.replace( "01_FK_Jnt", "FK_Grp"), parent=cmds.rename(self.masterGrp, self.masterGrp)) cmds.parent(self.fkJoint, self.fkJntGrp) self.ikJntGrp = cmds.group(empty=True, n=self.jointName.replace( "01_FK_Jnt", "IK_Grp"), parent=cmds.rename(self.masterGrp, self.masterGrp)) cmds.parent(self.ikJoint, self.ikJntGrp) self.rkJntGrp = cmds.group(empty=True, n=self.jointName.replace( "01_FK_Jnt", "RK_Grp"), parent=cmds.rename(self.masterGrp, self.masterGrp)) cmds.parent(self.jointNamePartion, self.rkJntGrp) self.fkCtrlGrp = cmds.group(empty=True, n=self.jointName.replace( "01_FK_Jnt", "FK_Ctrl_Grp"), parent=cmds.rename(self.masterGrp, self.masterGrp)) cmds.parent(self.fkCtrlGrp, w=True) self.ikCtrlGrp = cmds.group(empty=True, n=self.jointName.replace( "01_FK_Jnt", "IK_Ctrl_Grp"), parent=cmds.rename(self.masterGrp, self.masterGrp)) cmds.parent(self.ikCtrlGrp, w=True)
def check_transforms(objects): """ Check joints to insure they have no rotation values. """ invalid = [] cmds.select(objects) new_objects = cmds.pickWalk(d="up") t_r_xform = ["t", "r"] scale_xform = "s" axis = ["x", "y", "z"] for obj in new_objects: # check translates rotates and scales for trans in t_r_xform: # check each axis for ax in axis: trans_rot = cmds.getAttr("%s.%s%s" % (obj, trans, ax)) if trans_rot != 0: invalid.append(obj) break for ax in axis: scale = cmds.getAttr("%s.%s%s" % (obj, scale_xform, ax)) if scale != 1: invalid.append(obj) break return invalid
def addStringAttr(*args): stringAttrName = cmds.textFieldGrp('stringText', q=True, text=True).split(' ') cmds.pickWalk(d="down") selected = cmds.ls(sl=1, long=1) for member in selected: for i in stringAttrName: if cmds.attributeQuery("mtoa_constant_" + i, node=member, exists=True): print 'attribute ' + i + ' already exist!' else: cmds.addAttr(member, ln="mtoa_constant_" + i, nn=i, dt='string')
def renameFamily(name=''): sel = mc.ls(sl=True) for obj in sel: nameCtrl = name + '_CTL' # print(nameCtrl) mc.rename(obj, nameCtrl) mc.pickWalk(direction='up') auto = mc.ls(sl=True)[0] nameAuto = name + '_OFFSET' # print(nameAuto) mc.rename(auto, nameAuto) mc.pickWalk(direction='up') root = mc.ls(sl=True)[0] nameRoot = name + '_ROOT' # print(nameRoot) mc.rename(root, nameRoot)
def getMeshList(self): cmds.select(self.charName) objectList = cmds.ls(sl=True, type='mesh', dag=True) for i in objectList: p = cmds.pickWalk(i, direction='up') self.meshList.append(p[0]) self.meshList = list(set(self.meshList))
def SpineTopCOntrol(name): mel.eval( "curve -n " + name + " -d 1 -p 0 -5 0 -p -2 -3 0 -p -1 -3 0 -p -1 -1 0 -p -3 -1 0 -p -3 -2 0-p -5 0 0 -p -3 2 0 -p -3 1 0 -p -1 1 0 -p -1 3 0 -p -2 3 0 -p 0 5 0 -p 2 3 0-p 1 3 0 -p 1 1 0 -p 3 1 0 -p 3 2 0 -p 5 0 0 -p 3 -2 0 -p 3 -1 0 -p 1 -1 0 -p 1 -3 0 -p 2 -3 0 -p 0 -5 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9-k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24;" ) cmds.pickWalk(d="down") cmds.rename(name + "Shape") cmds.delete(name + "Shape", ch=True) cmds.rotate(90, 0, 0, name) cmds.makeIdentity(name, apply=True, t=1, s=1, r=1) curveG = name + "_GRP" curveG2 = name + "_GRP2" cmds.group(name, n=curveG) cmds.xform(os=True, piv=(0, 0, 0)) cmds.group(curveG, n=curveG2) cmds.xform(os=True, piv=(0, 0, 0)) pass
def petal(core=None, xyz=[0, 0, 0], rot=[0, 0, 0]): myname = "petalObj" if core: myname = "flowerPetalObj" # build the petal, position it UNUSED = cmds.sphere(name=myname, axis=[0, 1, 0]) if core: cmds.move(0, 0, -1.6) else: cmds.move(*xyz) # unpack xyz cmds.scale(0.7, 0.3, 1.7) if core: cmds.FreezeTransformations() cmds.ResetTransformations() p = cmds.ls(sl=True)[0] if core: cmds.parent(p, core) cmds.select(p) cmds.pickWalk(direction="down") myPetalShape = cmds.ls(sl=True) # move the tip of the petal cmds.select(p + ".cv[3][7]") cmds.move(0, 2, 0, relative=True) # Select the inner part of the petal pull down # One loop for the U direction for uCV in xrange(5, 7): # These numbers are for vCV in xrange(0, 8): # not arbitrary. suffix = ".cv[%i][%i]" % (uCV, vCV) cmds.select(p + suffix) cmds.move(0, -0.4, 0, relative=True) if rot: cmds.select(p) cmds.rotate(*rot, relative=False) return p
def selcetPoly(*arg): polyList = [] #查询所有在mesh的列表 #geo = cmds.ls( type='geometryShape') mesh = cmds.ls(type='mesh') if len(mesh) > 0: #选择列表中的模型 cmds.select(mesh) #向上一级选择 cmds.pickWalk(d="up") #把选择的物体成为列表 polygon = cmds.ls(sl=True) #print len(polygon) for i in polygon: polyList.append(i) return polyList else: Prompt('No mesh in scene. ')
def getTopPos(self, objs): obj = objs[0] while True: curObj = cmds.pickWalk(obj, direction='up') if curObj[0] not in objs or obj == curObj[0]: break obj = curObj[0] return obj
def getTextureFromShader(*args): cmds.pickWalk(d="down") sel = cmds.ls(sl=1, long=1) for i in sel: getAiAttrName = cmds.textFieldGrp('getAiAttrField', q=True, text=True) shadingGroup = cmds.listConnections(i, type='shadingEngine') shader = cmds.ls(cmds.listConnections(shadingGroup), materials=1) imageFile = cmds.listConnections(shader[0], type='file') if not imageFile: print 'No shader assigned' else: texture = cmds.getAttr(imageFile[0] + '.fileTextureName') texture = texture.replace('/', '\\') texture = texture.split('sourceimages\\')[1] cmds.setAttr(i + '.mtoa_constant_' + getAiAttrName, texture, type='string')
def createLocator(): shape = MayaCmds.createNode("locator") name = MayaCmds.pickWalk(shape, d="up") MayaCmds.setAttr(shape + '.localPositionX', 0.962) MayaCmds.setAttr(shape + '.localPositionY', 0.731) MayaCmds.setAttr(shape + '.localPositionZ', 5.114) MayaCmds.setAttr(shape + '.localScaleX', 5) MayaCmds.setAttr(shape + '.localScaleY', 1.44) MayaCmds.setAttr(shape + '.localScaleZ', 1.38) return name[0], shape
def edge_loop_to_curve(edge_name, delete_edges=False): cmds.select(edge_name) cmds.pickWalk(edge_name, type="edgeloop", d="right") curve_name, shape_name = cmds.polyToCurve(form=2, degree=3) cvs = cmds.getAttr("{}.spans".format(curve_name)) curve_points = [] for cv_id in range(cvs): cv_name = "{}.cv[{}]".format(curve_name, cv_id) pos = get_position(cv_name) curve_points.append(Component(cv_name, *pos)) if delete_edges: cmds.select(edge_name) cmds.pickWalk(edge_name, type="edgeloop", d="right") cmds.polyDelEdge(cv=True) cmds.select(curve_name) cmds.Delete() return curve_points
def setGeo(sceneGeo): #Freeze transformations cmds.select(sceneGeo) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) #Merges objects if more than one object to catch shadows if len(sceneGeo) > 1: for obj in sceneGeo: noUnicode = unicode(obj) newObjName = noUnicode + "_mergedForShadowCatcher" print newObjName print "More than one object. Merging objects" cmds.select(sceneGeo) hideMe = cmds.polyUnite(sceneGeo, n=newObjName) cmds.hide(hideMe[0]) sillyString = "connectAttr -f {}Shape.outMesh shadowCatcherShape.inMesh;".format( newObjName) #Hide the original geo in all layers renderlayers = cmds.ls(type="renderLayer") print renderlayers if u'default_light_rig:defaultRenderLayer' in renderlayers: renderlayers.remove(u'default_light_rig:defaultRenderLayer') print renderlayers """ # for legacy render-layers setup for layer in renderlayers: cmds.editRenderLayerGlobals( currentRenderLayer=layer ) cmds.hide( newObjName ) """ #otherwise do just the one else: print "Only one object selected" noUnicode = cmds.pickWalk(d='Down') noUnicode = str(noUnicode[0]) sillyString = "connectAttr -f {}.outMesh shadowCatcherShape.inMesh;".format( noUnicode) #Hide the original geo in all layers renderlayers = cmds.ls(type="renderLayer") print renderlayers if u'default_light_rig:defaultRenderLayer' in renderlayers: renderlayers.remove(u'default_light_rig:defaultRenderLayer') print renderlayers print sillyString mel.eval(sillyString)
def selectVerts(walklist, *args): vertList = [] sel = cmds.ls(sl=True, fl=True)[0] vertList.append(sel) for x in range(0, len(walklist)): thisv = cmds.pickWalk(d=walklist[x])[0] vertList.append(thisv) cmds.select(vertList, r=True)
def testAddNewPrimWithDelete(self): cmds.file(new=True, force=True) # Create a proxy shape with empty stage to start with. import mayaUsd_createStageWithNewLayer mayaUsd_createStageWithNewLayer.createStageWithNewLayer() # Create a ContextOps interface for the proxy shape. proxyShapePath = ufe.Path( [mayaUtils.createUfePathSegment("|world|stage1|stageShape1")]) proxyShapeItem = ufe.Hierarchy.createItem(proxyShapePath) contextOps = ufe.ContextOps.contextOps(proxyShapeItem) # Add a new Xform prim. cmd = contextOps.doOpCmd(['Add New Prim', 'Xform']) self.assertIsNotNone(cmd) ufeCmd.execute(cmd) # The proxy shape should now have a single UFE child item. proxyShapehier = ufe.Hierarchy.hierarchy(proxyShapeItem) self.assertTrue(proxyShapehier.hasChildren()) self.assertEqual(len(proxyShapehier.children()), 1) # Using UFE, delete this new prim (which doesn't actually delete it but # instead makes it inactive). cmds.pickWalk(d='down') cmds.delete() # The proxy shape should now have no UFE child items (since we skip inactive). self.assertFalse(proxyShapehier.hasChildren()) self.assertEqual(len(proxyShapehier.children()), 0) # Add another Xform prim (which should get a unique name taking into # account the prim we just made inactive). cmd = contextOps.doOpCmd(['Add New Prim', 'Xform']) self.assertIsNotNone(cmd) ufeCmd.execute(cmd) # The proxy shape should now have a single UFE child item. self.assertTrue(proxyShapehier.hasChildren()) self.assertEqual(len(proxyShapehier.children()), 1)
def createNUL(): sel = cmds.ls(sl=1) cmds.select(deselect=1) for d in sel: sel_nameList = d.split('_') del sel_nameList[-1] sel_reName = '_'.join(sel_nameList) createNUL = cmds.group(em=1, n='%s_NUL' % sel_reName) cmds.parentConstraint(d, createNUL, mo=0) sel_cn = cmds.pickWalk(d='down') cmds.delete(sel_cn) cmds.parent(d, createNUL)
def create_text(text, font): print(font) if font == '': cmds.textCurves(ch=0, t=text, font=default_font) else: cmds.textCurves(ch=0, t=text, font=font) cmds.ungroup() cmds.ungroup() curves = cmds.ls(sl=True) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) shapes = curves[1:] cmds.select(shapes, r=True) cmds.pickWalk(d='Down') cmds.select(curves[0], tgl=True) cmds.parent(r=True, s=True) cmds.pickWalk(d='up') cmds.delete(shapes) cmds.xform(cp=True) cmds.rename(text.lower() + "_crv") return cmds.ls(sl=True)[0] print(' ') # Clear Warnings
def getDeformers(self): cmds.pickWalk(d='down') geomNode = cmds.ls(selection=True)[0] self.defchain = mel.eval('getChain "{}"'.format(geomNode)) ffds = cmds.ls(type='ffd') blends = cmds.ls(type='blendShape') tweaks = cmds.ls(type='tweak') skinclusters = cmds.ls(type='skinCluster') muscles = cmds.ls(type='cMuscleSplineDeformer') muscles += cmds.ls(type='cMuscleSystem') muscles += cmds.ls(type='cMuscleMultiCollide') muscles += cmds.ls(type='cMuscleStretch') maskeddefs = ffds + blends + tweaks + skinclusters + muscles for md in maskeddefs: if md in self.defchain: self.defchain.remove(md) self.lw.clear() for i in self.defchain: qlitem = QtGui.QListWidgetItem() qlitem.setText(i) self.lw.addItem(i)
def ProxyAim(self, name): self.ProxyBase(name) cmds.curve(n="%s_Aim" % name, d=1, p=[(-0.25, 0, 0), (-0.25, 0, -1), (-0.5, 0, -1), (0, 0, -1.5), (0.5, 0, -1), (0.25, 0, -1), (0.25, 0, 0)], k=[0, 1, 2, 3, 4, 5, 6]) pw = cmds.pickWalk(d="down") cmds.rename(pw[0], "%s_AimShape" % name) PCons = cmds.pointConstraint(name, "%s_Aim" % name) cmds.delete(PCons) cmds.makeIdentity("%s_Aim" % name, apply=True, t=1, r=1, s=1) cmds.parent("%s_AimShape" % name, name) cmds.delete("%s_Aim" % name)
def assignPREVShader(*args): cmds.pickWalk(d="down") sel = cmds.ls(sl=1, long=1) for i in sel: shapeName = '' shapeName = i texture, nameFull = textureName(i) if cmds.objExists('PREV_' + texture): cmds.sets(i, e=1, forceElement='PREV_' + texture + 'SG') else: if texture == 'BLANK': previewShader = cmds.shadingNode('lambert', asShader=True, n='PREV_' + texture) previewSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, n=previewShader + 'SG') cmds.connectAttr(previewShader + '.outColor', previewSG + '.surfaceShader') cmds.sets(i, e=1, forceElement=previewSG) else: previewShader = cmds.shadingNode('lambert', asShader=True, n='PREV_' + texture) previewIF = cmds.shadingNode('file', asTexture=True, n='PREV_IF_' + texture) previewSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, n=previewShader + 'SG') cmds.connectAttr(previewIF + '.outColor', previewShader + '.color') cmds.connectAttr(previewShader + '.outColor', previewSG + '.surfaceShader') cmds.setAttr(previewIF + '.fileTextureName', nameFull, type="string") cmds.sets(i, e=1, forceElement=previewSG)
def FootTilt(self, side): sign = 1 sideindex = 0 if side == "L": sign = 1 sideindex = 0 else: sign = -1 sideindex = 1 Ankle = self.Proxies_Ankles[sideindex] Ball = self.Proxies_Balls[sideindex] BallG = Ball + "_GRP" FootG = "Proxies_" + side + "_Foot_GRP" FootInTilt = "Proxies_" + side + "_FootInTilt" FootInTiltShape = "%sShape" % FootInTilt FootOutTilt = "Proxies_" + side + "_FootOutTilt" FootOutTiltShape = "%sShape" % FootInTilt FootHeelPivot = "Proxies_" + side + "_FootHeelPivot" FootHeelPivotShape = "%sShape" % FootHeelPivot mel.eval( "curve -n " + FootInTilt + " -d 1 -p 0 0 -1 -p 0 0 1 -p 0 0 0 -p 1 0 0 -p -1 0 0 -p 0 0 0 -p 0 1 0 -p 0 -1 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 ;" ) cmds.pickWalk(d="down") cmds.rename(FootInTiltShape) cmds.move(0.5 * sign, 0, 2.26, FootInTilt) cmds.makeIdentity(FootInTilt, apply=True, t=1, r=1, s=1) mel.eval( "curve -n " + FootOutTilt + " -d 1 -p 0 0 -1 -p 0 0 1 -p 0 0 0 -p 1 0 0 -p -1 0 0 -p 0 0 0 -p 0 1 0 -p 0 -1 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 ;" ) cmds.pickWalk(d="down") cmds.rename(FootOutTiltShape) cmds.move(3 * sign, 0, 2.26, FootOutTilt) cmds.makeIdentity(FootOutTilt, apply=True, t=1, r=1, s=1) cmds.parent(FootOutTilt, FootInTilt, BallG) mel.eval( "curve -n " + FootHeelPivot + " -d 1 -p 0 0 -1 -p 0 0 1 -p 0 0 0 -p 1 0 0 -p -1 0 0 -p 0 0 0 -p 0 1 0 -p 0 -1 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 ;" ) cmds.pickWalk(d="down") cmds.rename(FootHeelPivotShape) cmds.move(1.72 * sign, 0, -1.079, FootHeelPivot) cmds.makeIdentity(FootHeelPivot, apply=True, t=1, r=1, s=1) cmds.group(Ball, FootHeelPivot, n=FootG) cmds.parent(FootG, self.Main) AnklePosition = cmds.xform(Ankle, q=True, ws=True, rp=True) cmds.move(AnklePosition[0], 0, AnklePosition[2], "%s.scalePivot" % FootG, "%s.rotatePivot" % FootG) cmds.pointConstraint(Ankle, FootG, mo=True, skip="y") cmds.orientConstraint(Ankle, FootG, mo=True, skip=['x', 'z']) cmds.scaleConstraint(Ankle, FootG, offset=[1, 1, 1], skip='y') pass
def ctrl_orb(): mel.eval( 'circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 1 -d 3 -ut 0 -tol 0.01 -s 8 -ch 1' ) base_circle = cmds.ls(sl=True) cmds.duplicate(rr=True) dup1 = cmds.ls(sl=True) cmds.setAttr(dup1[0] + '.rotateX', 90) cmds.duplicate(rr=True) dup2 = cmds.ls(sl=True) cmds.setAttr(dup2[0] + '.rotateY', 90) cmds.duplicate(rr=True) dup3 = cmds.ls(sl=True) cmds.setAttr(dup3[0] + '.rotateY', 45) print 'Curves have been created and positioned.' cmds.select(base_circle, dup1, dup2, dup3) cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) print 'Freezing transforms on curves.' cmds.select(dup1, dup2, dup3, r=True) curves = cmds.ls(sl=True) cmds.pickWalk(d='Down') cmds.select(base_circle, add=True) cmds.parent(r=True, s=True) print 'Curve list has been parented into single curve.' cmds.select(curves, r=True) mel.eval('doDelete') print 'Unused groups have been deleted.' cmds.select(base_circle) mel.eval('CenterPivot') print( 'End result curve have been selected and its pivot has been centered.')
def check_curve_hist(objects): ''' Check so see if controls have construction history on them. ''' invalid = [] shapes = cmds.filterExpand(objects, sm=9) cmds.select(shapes) new_list = cmds.pickWalk(d='up') hist = [] return invalid