示例#1
0
def copyUV(object, toAssign):
    """Copy UVs from one mesh to a list of other objects"""
    for i in toAssign:
        if not cmds.polyCompare(object, i):
            cmds.polyTransfer(object, vertices=True, vertexColor=False, uvSets=1, alternateObject=i)
        else:
            logger.error('The mesh %s do not share the same topology with %s. Skipped' % (i, object))
示例#2
0
文件: uv.py 项目: akoon/OldPipeline
def uv_trans_multi():
    sel_objects = mc.ls(sl=True)
    if len(sel_objects) < 2:
        return False
    for t in sel_objects[1:]:
        mc.polyTransfer(t, vc=False, uv=True, v=False, ao=str(sel_objects[0]))
    return True
示例#3
0
def importUVs():

    meshes = mc.ls(selection=True)
    currentWorkspace = mc.workspace(fullName=True)
    baseDirectory = os.path.join(currentWorkspace, 'scripts')

    if not meshes:
        print 'Select at least one object to import the UVs on'

    else:

        currentFile = mc.fileDialog2(fileMode=1, startingDirectory=baseDirectory)
        reference = mc.file(currentFile[0], reference=True, namespace='UVTransfer')

        referenceNodes = mc.ls('UVTransfer:*')

        for node in referenceNodes:
            if mc.objectType(node) == 'mesh':

                mc.select(node, replace=True)
                transformNode = mc.listRelatives(parent=True)[0]

                for mesh in meshes:
                    try:
                        mc.polyTransfer(mesh, uvSets=True, alternateObject=transformNode)
                        #mc.bakePartialHistory(mesh, prePostDeformers=True)
                    except:
                        print 'Object has not the same topology'

                break

        mc.file(currentFile[0], removeReference=True)
示例#4
0
 def TransferUV(self):
     dobj = cmds.ls(sl=1)
     if cmds.polyEvaluate(dobj[0], v=1) != cmds.polyEvaluate(dobj[1], v=1):
         dupobj = cmds.duplicate(dobj[1], rr=1)
         cmds.transferAttributes(dobj[0], dupobj, pos=0, nml=0, uvs=2, col=2, spa=0, sus="map1", tus="map1", sm=3, fuv=0, clb=1)
         cmds.delete(dupobj, ch=1)
         cmds.polyTransfer(dobj[1], uv=1, ao=dupobj[0])
         cmds.delete(dupobj)
     else:
         cmds.polyTransfer(dobj[1], uv=1, ao=dobj[0])
示例#5
0
    def uv_transfer(self):

        suffix_source = self.line_edit_source.text()
        suffix_target = self.line_edit_target.text()

        list_sel = mc.ls(sl=True,
                         long=True,
                         dag=True) or []
        list_mesh = mc.listRelatives(list_sel,
                                     shapes=True,
                                     type="mesh",
                                     fullPath=True) or []
        list_mesh_source = []
        list_mesh_target = []
        dict_mesh = {}  # {source: target}

        if len(list_sel) == 0:
            om.MGlobal.displayWarning("Please select geos!")
        else:
            # get "list_mesh_source"
            for i in list_mesh:
                # i_shape = i.split("|")[-1]
                i_transform = i.split("|")[-2]
                if suffix_source in i_transform:
                    list_mesh_source.append(i)
            # get "list_mesh_target"
            for i in list_mesh:
                # i_shape = i.split("|")[-1]
                i_transform = i.split("|")[-2]
                if suffix_target in i_transform:
                    list_mesh_target.append(i)
            # check if two groups of geo have some piece counts
            if len(list_mesh_source) != len(list_mesh_target):
                count_source = "sources " + str(len(list_mesh_source))
                count_target = "targets " + str(len(list_mesh_target))
                warning = "Two groups of geos have different numbers of pieces:"
                om.MGlobal.displayWarning(' '.join((warning, count_source, count_target)))
            else:
                # get "dict_mesh"
                for i in list_mesh_source:
                    # i_shape = i.split("|")[-1]
                    i_transform = i.split("|")[-2]
                    prefix = i_transform[:-(len(suffix_source)+1)]
                    # print prefix
                    for j in list_mesh_target:
                        if prefix in j:
                            dict_mesh[i] = j
                for source, target in dict_mesh.items():
                    # do uv transfer
                    mc.polyTransfer(target,
                                    vertices=0,
                                    vertexColor=0,
                                    uvSets=1,
                                    alternateObject=source)
示例#6
0
def copyUV(object, toAssign):
    """Copy UVs from one mesh to a list of other objects"""
    for i in toAssign:
        if not cmds.polyCompare(object, i):
            cmds.polyTransfer(object,
                              vertices=True,
                              vertexColor=False,
                              uvSets=1,
                              alternateObject=i)
        else:
            logger.error(
                'The mesh %s do not share the same topology with %s. Skipped' %
                (i, object))
示例#7
0
def delUVTransferAttributesNode(obj):
    SH = cmds.listRelatives(obj, s=True, f=True, ni=True, type='mesh')
    allSH = cmds.listRelatives(obj, s=True, f=True, type='mesh')
    orgSH = []
    deformers = []
    inputType    = ('skinCluster', 'blendShape', 'ffd', 'wrap', 'cluster', 'nonLinear', 'sculpt', 'jiggle', 'wire', 'groupParts', 'groupId')
    deformerType = ('skinCluster', 'blendShape', 'ffd', 'wrap', 'cluster', 'nonLinear', 'sculpt', 'jiggle', 'wire')
    hist = cmds.listHistory(obj)
    for histIt in hist:
        ListNode = cmds.nodeType(histIt)
        if (deformerType.count(ListNode) and deformers.append(histIt)):
            pass

    for itSH in allSH:
        if (cmds.getAttr((itSH + '.intermediateObject')) and (cmds.listConnections(itSH, d=False) == None)):
            orgSH.append(itSH)

    if (len(SH) == 1):
        imputNode = cmds.listConnections((SH[0] + '.inMesh'), d=False, sh=True)
        if (len(imputNode) and (inputType.count(cmds.nodeType(imputNode)) != True)):
            if len(orgSH):
                mesh = cmds.createNode('mesh')
                for orgIt in orgSH:
                    cmds.connectAttr((SH[0] + '.outMesh'), (mesh + '.inMesh'), f=True)
                    cmds.refresh()
                    cmds.disconnectAttr((SH[0] + '.outMesh'), (mesh + '.inMesh'))
                    cmds.polyTransfer(orgIt, v=False, vc=False, uv=True, ao=mesh)
                    transfer = cmds.listConnections(orgIt, d=False)
                    NewOrg = cmds.listConnections((transfer[0] + '.inputPolymesh'), d=False, sh=True)
                    cmds.delete(NewOrg)

                if cmds.delete(cmds.listRelatives(mesh, p=True, f=True)):
                    pass
                
                n = True
                while n:
                    inputNode = cmds.listConnections((SH[0] + '.inMesh'), d=False, sh=True)
                    if (len(inputNode) is None):
                        n = False
                        break
                    breakWhile = []
                    selINode = cmds.nodeType(inputNode)
                    breakWhile.append(str(selINode))
                    if (inputType.count(breakWhile) == True):
                        n = False
                        break
                    cmds.delete(inputNode)
                    n = False
示例#8
0
def transmitFileUVCmd(maPath,uvPath,logPath,openLog=False,longName=True):
    '''
    after used 'transmitFileUVBackStage'
    '''
    import maya.cmds as cmds
    # open  ma file
    cmds.file(maPath, force=True, open=True, prompt=False,ignoreVersion=True)
    # reference UV
    filename = os.path.basename(uvPath)
    ns = os.path.splitext(filename)[0]
    refPath = cmds.file(uvPath, reference=True, ignoreVersion=True,
                        groupLocator=True, mergeNamespacesOnClash=False, 
                        options="v=0;",namespace=ns)
    
    allReferenceMesh = cmds.ls(type="mesh",referencedNodes=True,dag=True)
    allRefObj = [cmds.listRelatives(m,p=True,fullPath=True)[0] for m in allReferenceMesh if not cmds.getAttr("%s.intermediateObject"%m)]

    namespace = cmds.referenceQuery(refPath, namespace=True)
    namespace = namespace.lstrip(':')
    # passing data
    for uvObj in allRefObj:
        obj = uvObj.replace('|%s:'%namespace,'|')
        # obj:  "|mesh"
        obj = obj[1:]
        if not longName:
            obj = obj.rsplit('|',1)[0]
        
        if cmds.objExists(obj):
            transmit=uvObj
            receive=obj
            
            print [transmit,receive]
            # transmit uv 
            if cmds.listRelatives(receive): # judge the object if is None
                cmds.polyTransfer(receive,
                                  uv=1,
                                  ch=0,
                                  ao=transmit,
                                  constructionHistory=False)
    
    # remove reference
    cmds.file(refPath, removeReference=True)
    # save       
    cmds.file(force=True, save=True, prompt=False)
示例#9
0
mc.polyExtrudeEdge(sx=0, sz=0, ty=0.02 * r)
mc.polyMergeVertex(d=0.001 * r)
bs = mc.blendShape(kliao, craft_bon)[0]

# สร้าง uv ให้แต่ละส่วนแยกกัน โดยจัดทำ uv ที่โหนดวัตถุเบลนด์เชป แล้วค่อยคัดลอกมาที่วัตถุหลัก
at = 'pcx pcy pcz rx ry rz phs pvs'.split()
ppj1 = mc.polyProjection(kliao + '.f[%d:%d]' % (nf1, nf2 - 1),
                         t='spherical')[0]
ppj2 = mc.polyProjection(kliao + '.f[%d:%d]' % (nf2, nf3 - 1),
                         t='spherical')[0]
for a, k1, k2 in zip(at, [0, 5, 0, 90, 0, 0, 130, 130],
                     [0, -2, 0, -90, 0, 0, 160, 160]):
    mc.setAttr(ppj1 + '.' + a, k1)
    mc.setAttr(ppj2 + '.' + a, k2)
mc.polyAutoProjection(kliao + '.f[%d:%d]' % (nf3, nf4 - 1), ps=0.4)[0]
mc.polyTransfer(craft_bon, uv=1, ao=kliao, ch=0)
mc.delete(kliao)

# ใส่สีให้แต่ละหน้าต่างๆกัน
mc.select(craft_bon + '.f[%d:%d]' % (nf1, nf2 - 1))
mc.hyperShade(a=phiu_nuea_nai)
mc.select(craft_bon + '.f[%d:%d]' % (nf2, nf3 - 1))
mc.hyperShade(a=phiu_thian)
mc.select(craft_bon + '.f[%d:%d]' % (nf3, nf4 - 1))
mc.hyperShade(a=phiu_sai_thian)

# ลบหน้าส่วนล่างที่ไม่ได้ใช้
mc.delete(craft_bon + '.f[0:%d]' % (nf1 - 1))
mc.select([craft_bon + '.e[%d]' % i for i in range(121, 166, 4)])
mc.move(0, 0.05 * r, r=1)
示例#10
0
 def transferUVs(self, objects):
     for obj in objects:
         if obj != objects[0]:
             cmds.polyTransfer(obj, ao=objects[0], uv=1, ch=0)
示例#11
0
def polyTransfer(*args, **kwargs):
    res = cmds.polyTransfer(*args, **kwargs)
    if not kwargs.get('query', kwargs.get('q', False)):
        res = _factories.maybeConvert(res, _general.PyNode)
    return res
示例#12
0
import maya.mel as mel
import maya.cmds as cmds

# add this to the function in zTools
sel = cmds.ls(sl=True)
for x in range(1, len(sel)):
    cmds.polyTransfer(sel[i], uv=1, ao=sel[0])

# leave only one bind pose in scene
sc = cmds.ls(type="dagPose")
for s in sc:
    cmds.delete(s)
cmds.dagPose(bp=True, save=True)

#stick a joint in center of verts
import maya.cmds as cmds
import maya.mel as mel
import zTools.rig.zbw_rig as rig

# convert this selection to components?
sel = cmds.ls(sl=True, fl=True)
jnt = cmds.joint(name="CenterJoint")
pos = rig.average_point_positions(sel)
cmds.xform(jnt, ws=True, t=pos)
# cmds.parent(jnt, w=True)