Example #1
0
def main(filename, outname, width, height):

    img = MayaImage(filename)

    verts = []
    faces = []
    cmds.constructionHistory(tgl='off')

    faceIndex = int(0)
    xstep = width / float(img.width)
    zstep = height / float(img.height)

    sz = -height / 2.0
    h = int(img.height)
    w = int(img.width)

    for y in range(0, h - 1):
        sx = -width / 2.0
        for x in range(0, w):
            pixel1 = img.getRGB(x, y)
            pixel2 = img.getRGB(x, y + 1)
            pixel3 = img.getRGB(x + 1, y)
            pixel4 = img.getRGB(x + 1, y + 1)
            verts.append((sx, float(pixel1[0]) * 0.1, sz))
            verts.append((sx, float(pixel2[0]) * 0.1, sz + zstep))
            verts.append((sx + xstep, float(pixel4[0]) * 0.1, sz + zstep))
            verts.append((sx + xstep, float(pixel3[0]) * 0.1, sz))
            sx += xstep
            faces.append(
                (faceIndex, faceIndex + 1, faceIndex + 2, faceIndex + 3))
            faceIndex += 4
        sz += zstep
    create(verts, faces)
    #cmds.select(all=True)
    cmds.file(outname, type="OBJexport", pr=True, es=True)
Example #2
0
    def freezetransform(self, *args):
        """Deletes the history and freezes the transformations of the selected object.

        Args:
            *args: Ignored

        Returns:
            None
        """
        cmds.makeIdentity(apply=True, translate=1, rotate=1, scale=1, normal=0)
        cmds.constructionHistory(query=True, toggle=True)
Example #3
0
    def __collectNodeState(self):
        self._fDagPath.extendToShape()
        meshNodeShape = self._fDagPath.node()

        depNodeFn = om.MFnDependencyNode(meshNodeShape)

        inMeshPlug = depNodeFn.findPlug("inMesh")
        self._fHasHistory = inMeshPlug.isConnected()

        self._fHasTweaks = False

        tweakPlug = depNodeFn.findPlug("pnts")

        if not tweakPlug.isNull():
            if not tweakPlug.isArray():
                raise Exception(
                    u"tweakPlug.isArray() -- tweakPlug is not an array plug")

            numElements = tweakPlug.numElements()

            for i in range(numElements):
                tweak = tweakPlug.elementByPhysicalIndex(i)
                if not float3PlugValueIsZero(tweak):
                    self._fHasTweaks = True
                    break

        self._fHasRecordHistory = cmds.constructionHistory(q=True, tgl=True)
    return nodeName


basicFilter = "*.*"

filename = cmds.fileDialog2(caption="Please select imagefile",
                            fileFilter=basicFilter,
                            fm=1)

img = MayaImage(str(filename[0]))

verts = []
faces = []
width = 200.0
height = 200.0
cmds.constructionHistory(tgl='off')

faceIndex = int(0)
xstep = width / float(img.width())
zpos = -1.0
zstep = height / float(img.height())
sz = -10.0
h = img.height()
w = img.width()
"""
-1 -1
-1  1
 1  1
 1 -1

"""
Example #5
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)
Example #6
0
 def getConstructionHistory(self):
     return cmds.constructionHistory(q=True, tgl=True)
Example #7
0
 def setConstructionHistory(self, state):
     cmds.constructionHistory(tgl=state)
 def deleteHistory(self, *_):
     sels = cmds.ls(sl=True)
     cmds.constructionHistory(query=True, toggle=True)
     cmds.delete(ch=True)
Example #9
0
The operation will temporatly dissable construction history.
If you only select one object the object will be seperated then recombined
TODO
Handel multiple selection that need seperation
Scale uvs to fill entire quadrant
Work directly on UV islands (not seperating mesh)
Port to Blender
Replace is statments in for loop with case
OPtions for tileing by n#
'''

import maya.cmds as cmds
import random

#Dissable construction history
CH = cmds.constructionHistory(q=True, tgl=True)
if CH is True:
  cmds.constructionHistory(toggle=False)
else:
  selection = cmds.ls(selection=True)
  name = selection[0]
  count = -1
  
#Handel for invalid selection
SelList = len(selection)
if SelList == 0:
  print("Error, no selection")
  pass
else:
  #seporate object if combined
  if SelList == 1:
Example #10
0
def readK2P():
    mc.constructionHistory(toggle=False)
    mc.select(all=True)
    mc.delete()

    counterMin = 1;
    counter=counterMin;
    counterMax = 200;
    mc.playbackOptions(minTime=counterMin, maxTime=counterMax)

    skipCounterMin = 1;
    skipCounter=skipCounterMin;
    skipCounterMax = 6;


    path = "/Users/nick/Development/Maya/readxml"
    fileName = "mocapData1.xml"
    #trackPoint = ["l_foot","l_knee","l_hip","r_foot","r_knee","r_hip","l_hand","l_elbow","l_shoulder","r_hand","r_elbow","r_shoulder","torso","neck","head"]
    trackPoint = ["head"]
    scaler = 10
    grav = mc.gravity()

    xmlFile = xd.parse(path + "/" + fileName)
    print("loaded: " + fileName)

    for t in trackPoint:    
        joint = xmlFile.getElementsByTagName(t)
        jointCounter = 0;
        cubeName = t
        #mergeName = t + "Merge"

        for j in joint:
            counter=counterMin;
            x = scaler * float(j.getAttribute("x"))
            y = scaler * float(j.getAttribute("y"))
            z = scaler * float(j.getAttribute("z"))
            
            if(x!=0 and y!=0 and z!=0):
                mc.currentTime(counter)
                counter+=1
                if(skipCounter<skipCounterMax):
                    jointCounter+=1
                    mc.polyCube(name=cubeName+str(counter))
                    #polyCube(sx=2, sy=2, sz=2, name=cubeName+str(counter))
                    #polySmooth(dv=1)
                    mc.connectDynamic(f=grav) #adds gravity
                    mc.move(x, y, z)
                    mc.rotate(rnd.uniform(-1 * scaler, scaler),rnd.uniform(-1 * scaler, scaler),rnd.uniform(-1 * scaler, scaler))
                    skipCounter+=1
                else:
                    skipCounter=skipCounterMin

        print("cubes made: " + str(jointCounter))
        
        #select(all=True)
        #polyUnite(constructionHistory=False) #1=union, 2=difference, 3=intersection

    floor = mc.polyPlane(w=30,h=30)
    mc.rigidBody(passive=True)
    mc.move(0,0,0)

    print("...script complete.")
Example #11
0
def cachedObjToTransform(*args):
    '''{'ath':'Animation/Transform/cachedObjToTransform( )',
'ath':'Dynamics/RBD',
'icon':':/transform.svg',
'usage':"""
#将缓存物体bake成关键帧物体。
$fun(  )""",
}
'''
    if len(args):
        cachedObj = qm.checkArg(args[0], nodeType='mesh', tryToShape=True)
    else:
        cachedObj = qm.checkArg(nodeType='mesh', tryToShape=True)

    cmds.constructionHistory(toggle=False)
    #cachedObj = cmds.ls(sl=True,l=True)[0]
    #sepratate cachedObj
    minTime = int(cmds.playbackOptions(q=True, min=True))
    cmds.currentTime(minTime)
    temp = cmds.polySeparate(cachedObj, ch=True)[0]
    rbdGrp = cmds.listRelatives(temp, p=True, f=True)[0]
    childGrp = cmds.duplicate(rbdGrp, rr=True)[0]
    parentList = cmds.listRelatives(rbdGrp, type='transform', f=True)
    childList = cmds.listRelatives(childGrp, type='transform', f=True)
    cmds.delete(cmds.listRelatives(childGrp, f=True), ch=True)

    forRemove = []
    for obj in parentList:
        meshNode = cmds.listRelatives(obj, type='mesh', f=True)
        if meshNode == [] or cmds.getAttr(meshNode[0] +
                                          '.intermediateObject') == 1:
            forRemove.append(obj)
    if obj in forRemove:
        parentList.remove(obj)

    forRemove = []
    for obj in childList:
        meshNode = cmds.listRelatives(obj, type='mesh', f=True)
        if meshNode == [] or cmds.getAttr(meshNode[0] +
                                          '.intermediateObject') == 1:
            forRemove.append(obj)
    if obj in forRemove:
        childList.remove(obj)
    cmds.delete(forRemove)

    unfreeze(childList)

    folGrp = cmds.group(em=True, n=rbdGrp + '_FoGrp')

    for papa in parentList:
        index = parentList.index(papa)
        child = childList[index]
        meshShape = cmds.listRelatives(papa, type='mesh', f=True)[0]

        faceCount = cmds.polyEvaluate(papa, f=True) - 1
        if faceCount > 10:
            faceCount = 10

        newFace = '%s.f[0:%s]' % (papa, faceCount)
        cmds.select(newFace)
        mel.eval('polySplitTextureUV')

        mel.eval('PolySelectConvert 4')
        map = cmds.ls(sl=True)

        cmds.polyNormalizeUV(map, normalizeType=0, preserveAspectRatio=False)

        cmds.polyEditUV(map, pu=.5, pv=.5, su=2, sv=2)

        #create follicle and set attribute
        folShape = cmds.createNode("follicle")

        folTransform = cmds.listRelatives(folShape, p=True, f=True)[0]
        cmds.setAttr(folTransform + '.intermediateObject', 1)

        cmds.setAttr(folShape + '.parameterU', .5, l=True)
        cmds.setAttr(folShape + '.parameterV', .5, l=True)
        cmds.setAttr(folShape + ".simulationMethod", 0)
        cmds.setAttr(folShape + ".collide", 0)
        cmds.setAttr(folShape + ".degree", 1)
        cmds.setAttr(folShape + ".sampleDensity", 0)

        #connection follicles
        cmds.connectAttr(meshShape + '.worldMatrix[0]',
                         folShape + '.inputWorldMatrix',
                         f=True)
        cmds.connectAttr(meshShape + '.outMesh',
                         folShape + '.inputMesh',
                         f=True)
        cmds.connectAttr(folShape + '.outRotate',
                         folTransform + '.rotate',
                         f=True)
        cmds.connectAttr(folShape + '.outTranslate',
                         folTransform + '.translate',
                         f=True)

        parentConNode = cmds.parentConstraint(folTransform, child, mo=True)[0]

        cmds.parent(folTransform, folGrp)

    minTime = int(cmds.playbackOptions(q=True, min=True))
    maxTime = int(cmds.playbackOptions(q=True, max=True))
    cmds.bakeResults(childList,simulation=True, t=(minTime,maxTime),sampleBy=1,\
                    disableImplicitControl=True, preserveOutsideKeys=True, sparseAnimCurveBake=False, removeBakedAttributeFromLayer=False, \
                    bakeOnOverrideLayer=False,at=['tx','ty','tz','rx','ry','rz'])

    cmds.delete([folGrp, rbdGrp])
    cmds.delete(cmds.listRelatives(childGrp, f=True), ch=True)

    cmds.constructionHistory(toggle=True)