Exemplo n.º 1
0
 def copyAndLayout(self):
     self.currentMap = cmds.optionMenuGrp(self.uvSetChoice, q=True, v=True)
     cmds.polyCopyUV(self.selFace, cm=True, uvi=self.currentMap, uvs=self.inputLightmap)
     cmds.polyMultiLayoutUV(scale=1, rotateForBestFit=2, layout=2, ps=3.2, uvs=self.inputLightmap)
     cmds.TextureViewWindow()    #opens uv texture editor
     cmds.select(self.sel)        #selects original objects to get out of face selection
     cmds.deleteUI(self.optionWindow)
Exemplo n.º 2
0
def jointify(name=''):
	from maya.cmds import *
	# get mesh transforms
	import ezLib.transform
	mTrfs = ezLib.transform.get(shape='mesh')
	if not mTrfs:
		raise IOError, 'No mesh shapes found!'

	if not name:
		p = mTrfs[0].split('|')[1]
		if p[0:14] == 'cryExportNode_':
			name = p.split('_')[1]
		else:
			name = 'jointify'

	js = []
	counts = []
	for mt in mTrfs:
		sn = mt.split('|')[-1]
		# create joints at transform positions
		pos = xform(mt, q=1, t=1, ws=1)
		j = createNode('joint', n=(sn + 'joint'))
		xform(j, t=pos)
		js.append(j)
		
		# plug each channel driver into the appropriate joint
		for t in 'trs':
			for d in 'xyz':
				input = listConnections((mt + '.' + t + d), p=1)
				if input:
					connectAttr(input[0], (j + '.' + t + d))
		# collect nr of verts - this method collects also children if any
		counts.append(len(ls(polyListComponentConversion(mt, tv=1), fl=1)))

	dupMesh = duplicate(mTrfs, renameChildren=1)
	dupMesh = polyUnite(dupMesh, ch=0)

	# check for multiple UVsets
	uvSets = polyUVSet(dupMesh, q=1, allUVSets=1)
	for i in range(1,len(uvSets)):
		# for each set other than the 1st: set it, copy to 1st, delete it
		polyUVSet(dupMesh, currentUVSet=1, uvSet=uvSets[i])
		polyCopyUV(dupMesh[0] + '.map[*]', uvSetNameInput=uvSets[i], uvSetName=uvSets[0])
		polyUVSet(dupMesh, uvSet=uvSets[i], delete=1)
	# cleanup history crap
	delete(dupMesh, ch=1)

	sc = skinCluster(js, dupMesh)[0]
	vtxNr = 0
	for i in range(len(js)):
		vtxSel = dupMesh[0] + '.vtx[' + str(vtxNr) + ':' + str(vtxNr + counts[i] - 1) + ']'
		skinPercent(sc, vtxSel, transformValue=[js[i], 1])
		vtxNr += counts[i]

	root = createNode('joint', n=name + 'rootjoint')
	setAttr(root + '.drawStyle', 2)
	parent(js, root)
	select(root, dupMesh)
Exemplo n.º 3
0
    def tryMakeUVSet(self, inNode, inName):

        sets = cmds.polyUVSet(inNode.mNode, q=True, auv=True)

        # We need a source UV set to copy from
        if sets is None:
            raise Exception('%s has no sets' % inNode.mNode)

        if inName not in sets:
            cmds.polyUVSet(inNode.mNode, create=True, uvSet=inName)
        
        cmds.polyCopyUV(inNode.mNode, uvi=sets[0], uvs=inName)
Exemplo n.º 4
0
def Delete_UvsetApply():
    renamecheckbox = cmds.checkBox('rm_cbox_UI', q=1, v=1)
    SelectObjects = cmds.ls(sl=1, l=1)
    if SelectObjects:
        for item in SelectObjects:
            firstUvSet = cmds.getAttr(item + '.uvSet[0].uvSetName')
            cmds.polyCopyUV(item, uvs=firstUvSet)
            for uvset in cmds.polyUVSet(q=1, auv=1):
                if uvset != firstUvSet:
                    cmds.polyUVSet(item, d=1, uvs=uvset)
            if renamecheckbox:
                cmds.polyUVSet(e=1, rn=1, uvs=firstUvSet, nuv="map1")
 def copyAndLayout(self):
     global preScale
     percentageSpace = cmds.floatSliderGrp(self.shellSpacingSlider, q=True, v=True)    #get percentage space from slider
     
     self.currentMap = cmds.optionMenuGrp(self.uvSetChoice, q=True, v=True)
     cmds.polyCopyUV(self.selFace, cm=True, uvi=self.currentMap, uvs=self.inputLightmap)
     #cmds.polyMultiLayoutUV(psc=2, scale=1, rotateForBestFit=2, layout=2, ps=percentageSpace, uvs=self.inputLightmap) Default settings
     cmds.polyMultiLayoutUV(psc=preScale, scale=layoutScale, lm=layoutMapping, rotateForBestFit=layoutRotate, layout=shellLayout, ps=percentageSpace, uvs=self.inputLightmap)
     cmds.TextureViewWindow()    #opens uv texture editor
     cmds.select(self.sel)        #selects original objects to get out of face selection
     cmds.deleteUI(self.optionWindow)
     print preScale
     print shellLayout
Exemplo n.º 6
0
    def uv_sets(self, fix):
        """
        First line.

        Description.
        """

        problems = False
        details = False

        # lists all the mesh type objects
        objects = cmds.ls(type='mesh')
        objects_len = len(objects)

        if objects_len:
            for o in objects:
                # checks if there are more than one UV set
                uv_set = cmds.polyUVSet(o, q=1, auv=1)
                uv_set_len = len(uv_set)
                if not details:
                    details = True
                    self.details.append("UV set problems")
                self.details.append("\t" + str(o))
                if uv_set_len > 1:
                    if not fix:
                        problems = True
                    else:
                        # deletes all the extra UV sets
                        for current_set in uv_set:
                            original_uv_set = cmds.polyUVSet(o, q=1, cuv=1)
                            cmds.polyUVSet(o, cuv=1, uvs=current_set)
                            converted_uvset = cmds.polyListComponentConversion(
                                o + '.vtx[0]', fv=1, tuv=1)
                            cmds.polyUVSet(o, cuv=1, uvs=original_uv_set[0])
                            if current_set != uv_set[0]:
                                if converted_uvset:
                                    cmds.polyCopyUV(o,
                                                    uvi=current_set,
                                                    uvs=uv_set[0])
                                cmds.polyUVSet(o, d=1, uvs=current_set)
                        if uv_set[0] != 'map1':
                            cmds.polyUVSet(o, uvs=uv_set[0], rn=1, nuv='map1')

        if problems:
            if fix:
                self.posible_fix.append("UV sets fixed")
            else:
                self.posible_fix.append("UV sets problems")
        else:
            self.posible_fix.append("UV sets clear")
Exemplo n.º 7
0
 def deleteUV(self):
     # print(self.uvSetAll)
     # print(self.uvSetAll)
     if len(self.uvSetAll) > 1 and self.delUVFlag:  # UVセットが複数あったら削除処理
         cmds.polyUVSet(self.mesh,
                        uvSet=self.uvSetAll[0],
                        e=True,
                        currentUVSet=True)  # カレントを1に
         dummy = common.TemporaryReparent().main(mode="create")
         for var in range(1, len(self.uvSetAll)):
             # print(self.uvSetAll[var])
             # tempUV = cmds.polyUVSet(self.mesh, q=True, allUVSets=True)
             # for uv in tempUV:
             # print(u'UV名確認用 : '+str(uv))
             if self.uvSetAll[var] == self.currentSet[0]:
                 # 親子付けしたまま親のノードを処理するとなぜかUVSet名で処理できないので退避しておく
                 common.TemporaryReparent().main(self.mesh,
                                                 dummyParent=dummy,
                                                 mode="cut")
                 # カレントUVを1番目にコピー
                 cmds.polyCopyUV(self.mesh,
                                 uvi=self.uvSetAll[var],
                                 uvs=self.uvSetAll[0])
                 # 親子付けを戻す
                 common.TemporaryReparent().main(self.mesh,
                                                 dummyParent=dummy,
                                                 mode="parent")
             if self.uvSetAll[var].split(".")[-1] in self.exclusion:
                 print("Skip UV in Exclusion List :", self.uvSetAll[var])
                 continue
             # 最初のUVセット以外は削除
             try:
                 print("Delete UV Set : " + self.mesh + "." +
                       self.uvSetAll[var])
                 cmds.polyUVSet(self.mesh,
                                uvSet=self.uvSetAll[var],
                                delete=True)
             except:
                 print("Delete UV Set Error : " + self.mesh + "." +
                       self.uvSetAll[var] + " is not exsist\n" +
                       "Skip this mesh object")
         # ダミー削除
         common.TemporaryReparent().main(dummyParent=dummy, mode="delete")
         # ヒストリ削除
         cmds.bakePartialHistory(self.shapes, ppt=True)
Exemplo n.º 8
0
def removeExtraUVSets():
	from maya.cmds import polyUVSet, polyCopyUV
	import ezLib.transform
	mts = ezLib.transform.get(shape='mesh')
	for m in mts:
		uvSets = polyUVSet(m, q=1, allUVSets=1)
		for i in range(1,len(uvSets)):
			# for each set other than the 1st: set it, copy to 1st, delete it
			polyUVSet(m, currentUVSet=1, uvSet=uvSets[i])
			polyCopyUV(m + '.map[*]', uvSetNameInput=uvSets[i], uvSetName=uvSets[0])
			polyUVSet(m, uvSet=uvSets[i], delete=1)
			
# copy vertexColorsWithoutTransferNode
#obj = ls(sl=1, tr=1)
#vtxs = ls(obj[0] + '.vtx[*]', fl=1)
#for v in vtxs:
#    vtx = '.' + v.split('.')[1]
#    rgb = polyColorPerVertex(obj[0] + vtx, q=1, rgb=1) 
#    a = polyColorPerVertex(obj[0] + vtx, q=1, a=1)[0]
#    polyColorPerVertex(obj[1] + vtx, a=a, rgb=rgb)
Exemplo n.º 9
0
def createPoEmByShaderAndObjList(includeObjects, shaderList, **kwargs):
    '''{'del_path':'Dynamics/Particles/Emitter/createPoEmByShaderAndObjList()ONLYSE',
'icon':':/emitter.png',
'tip':'指定某些材质的面创建pointEmitter',
'usage':'\
    ########## No creation new uvsets##########\\n\
    objectList = cmds.ls(sl=True)\\n\
    for obj in objectList:\\n\
        fCount = cmds.polyEvaluate(obj,f=True)\\n\
        cmds.polyProjection("%s.f[0:%s]"%(obj,fCount), ch=False, type="Planar", ibd=False, cm=False, md="x")\\n\
    ##########################################\\n\
includeObjects = cmds.ls(sl=True,exactType="transform")\\n\
shaderList = cmds.ls(sl=True,mat=True)\\n\
$fun(includeObjects, shaderList, uvSetName="forEm", plannarMapping=False,mapDirectionValue="x")\\n\\n\
shaderList = cmds.ls(sl=True,mat=True)\\n\
includeObjects = cmds.listRelatives(cmds.ls(sl=True)[0],type="transform")\\n\
$fun(includeObjects, shaderList, uvSetName="forEm", plannarMapping=False,mapDirectionValue="x")'
}
'''
    if isinstance(includeObjects, str) or isinstance(includeObjects, unicode):
        includeObjects = [includeObjects]
    if isinstance(shaderList, str) or isinstance(shaderList, unicode):
        shaderList = [shaderList]


    defalutKwargs = dict(\
                         uvSetName='forEm', \
                         plannarMapping=False,\
                         mapDirectionValue='x'\
                         )

    execStr = __check_kwargs(defalutKwargs, kwargs)
    exec execStr
    print plannarMapping, uvSetName

    cmds.constructionHistory(toggle=False)

    includeObjects += cmds.listRelatives(includeObjects, type='mesh')
    #create ramp for emitter of textureRate
    if not cmds.objExists(
            "uvEmMap"):  #and not cmds.objectType('uvEmMap')=="ramp":
        emitMat = cmds.shadingNode('ramp', asTexture=True, n="uvEmMap")
        cmds.removeMultiInstance(emitMat + '.colorEntryList[2]', b=True)
        cmds.setAttr(emitMat + '.interpolation', 0)
        cmds.setAttr(emitMat + '.colorEntryList[0].color',
                     0,
                     0,
                     0,
                     type='double3')
        cmds.setAttr(emitMat + '.colorEntryList[1].position', 0.05)
        cmds.setAttr(emitMat + '.colorEntryList[1].color',
                     1,
                     1,
                     1,
                     type='double3')
    else:
        emitMat = "uvEmMap"

    for inSideShader in shaderList:
        cmds.hyperShade(objects=inSideShader)
        faceList = cmds.ls(sl=True)

        cmds.select(cl=True)
        emitObjList, faceSet = [], []

        for faceGrp in faceList:
            emitObj = re.split(r'\.f', faceGrp)[0]
            #worldarea = cmds.polyEvaluate( emitObj, wa=True )
            #if emitObj not in emitObjList and worldarea>maxArea:
            if emitObj not in emitObjList and emitObj in includeObjects:
                emitObjList.append(emitObj)
                #print emitObj
                #append list to faceSet List
                faceSet.append([])

            if emitObj in emitObjList:
                faceSetIndex = emitObjList.index(emitObj)
                #add faceGrp to faceSet[]
                faceSet[faceSetIndex].append(faceGrp)

        #create uvSet for pointEmitter and create pointEmitter for emitObj
        for objFaceGrp in faceSet:
            emitObjIndex = faceSet.index(objFaceGrp)

            parEmit = cmds.emitter(emitObjList[emitObjIndex],
                                   type='surf',
                                   nsp=.1,
                                   tsp=1,
                                   srn=1,
                                   n='shtterEmit##')[1]

            if objFaceGrp[0] != emitObjList[emitObjIndex]:
                #Delete uvSetName uvset if it exists
                temp = cmds.polyUVSet(emitObjList[emitObjIndex],
                                      q=True,
                                      allUVSets=True)
                if temp != None and uvSetName in temp:
                    cmds.polyUVSet(emitObjList[emitObjIndex],
                                   delete=True,
                                   uvSet=uvSetName)

                #create new uvsets
                if plannarMapping:
                    cmds.polyProjection(objFaceGrp,
                                        ch=False,
                                        type='Planar',
                                        ibd=False,
                                        cm=True,
                                        uvSetName=uvSetName,
                                        md=mapDirectionValue)
                #copy uv to uvSetName from map1
                else:
                    emitterUVSet = cmds.polyUVSet(emitObjList[emitObjIndex],
                                                  create=True,
                                                  uvSet=uvSetName)[0]
                    cmds.polyCopyUV(objFaceGrp,
                                    uvi='map1',
                                    uvs=emitterUVSet,
                                    ch=False)

                    firstUVSet = cmds.polyUVSet(emitObjList[emitObjIndex],
                                                q=True,
                                                allUVSets=True)[0]
                    cmds.polyUVSet(emitObjList[emitObjIndex],
                                   currentUVSet=True,
                                   uvSet=firstUVSet)

                cmds.setAttr(parEmit + '.enableTextureRate', 1)
                cmds.connectAttr(emitMat + '.outColor',
                                 parEmit + '.textureRate')
                geoConnectNodeList = cmds.ls(cmds.listHistory(
                    emitObjList[emitObjIndex], f=True, levels=1),
                                             exactType='geoConnector')
                if geoConnectNodeList != []:
                    for geoConnectNode in geoConnectNodeList:
                        cmds.setAttr(geoConnectNode + '.guv',
                                     uvSetName,
                                     type='string',
                                     l=True)

    cmds.constructionHistory(toggle=True)
Exemplo n.º 10
0
def polyCopyUV(*args, **kwargs):
    res = cmds.polyCopyUV(*args, **kwargs)
    if not kwargs.get('query', kwargs.get('q', False)):
        res = _factories.maybeConvert(res, _general.PyNode)
    return res
Exemplo n.º 11
0
import maya.cmds as cmds
selObjList = cmds.ls(sl=True)
for sel in selObjList:
    try:
        cmds.polyCopyUV( sel,uvi="UVChannel_1",uvs="map1" ,ch=1)
    except:
        pass
Exemplo n.º 12
0
def copyUVsToMap1(*args):
    sel = cmds.ls(sl=True, fl=True)
    for obj in sel:
        cmds.polyCopyUV(obj, uvSetNameInput="", uvSetName="map1", ch=1)