def createUv(self,mesh): cmds.polyForceUV(mesh, unitize = True) edges = cmds.polyEvaluate(mesh, e = True) cmds.select('%s.e[2:%s]' %(mesh, (edges-1)), r=True) cmds.StitchTogether() bbox = cmds.polyEvaluate(mesh, bc2 = True) if bbox[0]>bbox[1]: cmds.polyEditUV (mesh, r = True, a = 90) cmds.polyNormalizeUV(mesh,normalizeType = 1, pa = True, cot = False, nd = 1) cmds.unfold(mesh, i = 5000, ss=0.001, gb = 0, pub = False, ps = False, oa = 1, us = False) cmds.select(cl=True)
def main(log=None): if not log: import logging log = logging.getLogger() allObj = cmds.ls(dag=True,type = 'mesh') for x in allObj: try: cmds.polyNormalizeUV(x, nt = 1, pa = False) #log.debug("normalize %s uv to 0-1 range successful" %x) except: log.warning("normalize %s uv to 0-1 range error" %x)
def main(log=None): if not log: import logging log = logging.getLogger() allObj = cmds.ls(dag=True, type='mesh') for x in allObj: try: cmds.polyNormalizeUV(x, nt=1, pa=False) #log.debug("normalize %s uv to 0-1 range successful" %x) except: log.warning("normalize %s uv to 0-1 range error" % x)
def ImportToMaya(vertexArray, polygonConnects, uvArray, texturePath, texture): global g_Mesh_Index printMessage("Creating mesh...") polygonCounts = OpenMaya.MIntArray(polygonConnects.length() / 3, 3) mesh = OpenMaya.MFnMesh() transform = mesh.create(vertexArray.length(), polygonCounts.length(), vertexArray, polygonCounts, polygonConnects) printDebug("connects cnt {}".format(polygonConnects.length())) printDebug("cnt {}".format(polygonCounts.length())) printDebug("u cnt {}".format(uvArray[0].length())) printDebug("v cnt {}".format(uvArray[1].length())) # UV map. printMessage("Mapping UVs...") mesh.setUVs(uvArray[0], uvArray[1]) try: mesh.assignUVs(polygonCounts, polygonConnects) except RuntimeError: printDebug("mesh.assignUVs() failed. Assign manually...") for i in range(0, polygonConnects.length()): try: mesh.assignUV(i / 3, i % 3, polygonConnects[i]) except RuntimeError: printMessage("AssignUV failed: " + "[{}] = {}".format(i, polygonConnects[i])) # Rename mesh. printMessage("Renaming mesh...") transformDagPath = OpenMaya.MDagPath() OpenMaya.MDagPath.getAPathTo(transform, transformDagPath) meshName = cmds.rename(transformDagPath.fullPathName(), "NinjaMesh_{}".format(g_Mesh_Index)) g_Mesh_Index = g_Mesh_Index + 1 # Apply textures. printMessage("Applying textures...") shader = cmds.shadingNode("lambert", name="NinjaTexture_{}".format(g_Mesh_Index), asShader=True) cmds.select(meshName) cmds.hyperShade(assign=shader) colorMap = cmds.shadingNode("file", name="{}_colorMap".format(texture), asTexture=True) cmds.connectAttr("{}.outColor".format(colorMap), "{}.color".format(shader)) cmds.setAttr("{}.fileTextureName".format(colorMap), "{}/{}".format(texturePath, texture), type='string') # Set vertex color to White. printMessage("Forcing vertex color to white...") cmds.select(meshName) cmds.polyColorPerVertex(cdo=True, rgb=[1, 1, 1]) # Apply transformations. printMessage("Applying transformations...") cmds.setAttr("{}.rotateX".format(meshName), g_ninjarotX) cmds.setAttr("{}.rotateY".format(meshName), g_ninjarotY) cmds.setAttr("{}.rotateZ".format(meshName), g_ninjarotZ) cmds.setAttr("{}.scaleX".format(meshName), mdlscaler) cmds.setAttr("{}.scaleY".format(meshName), mdlscaler) cmds.setAttr("{}.scaleZ".format(meshName), mdlscaler) # Freeze transformations. printMessage("Zeroing new transform values...") cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0, pn=1) # Scale UVs. printMessage("Scaling UVs...") uvs = cmds.polyListComponentConversion(meshName, tuv=True) cmds.select(uvs) cmds.polyEditUV(su=uvscaler, sv=uvscaler * g_flipUV) # Normalize UV. if g_normalizeUV: printMessage("Normalizing UVs...") cmds.polyNormalizeUV(nt=1, pa=True, centerOnTile=True) # Merge duplicates. printMessage("Removing duplicate vertex...") cmds.select(cl=True) cmds.select(meshName) cmds.polyMergeVertex(d=0.01, am=True, ch=1) cmds.polyMergeUV(d=0.01, ch=True) # Reverse normals (First met in MWR) if g_reverseNormals: printMessage("Reversing normals...") cmds.select(cl=True) cmds.select(meshName) cmds.polyNormal(meshName, ch=1) cmds.select(cl=True) print("Import done for mesh '{}'".format(meshName))
def polyNormalizeUV(*args, **kwargs): res = cmds.polyNormalizeUV(*args, **kwargs) if not kwargs.get('query', kwargs.get('q', False)): res = _factories.maybeConvert(res, _general.PyNode) return res
def ImportToMaya(vertexArray, polygonConnects, uvArray, texturePath, texture): global g_Mesh_Index printMessage("Creating mesh...") polygonCounts = OpenMaya.MIntArray(polygonConnects.length() / 3, 3) mesh = OpenMaya.MFnMesh() transform = mesh.create( vertexArray.length(), polygonCounts.length(), vertexArray, polygonCounts, polygonConnects ) printDebug("connects cnt {}".format(polygonConnects.length())) printDebug("cnt {}".format(polygonCounts.length())) printDebug("u cnt {}".format(uvArray[0].length())) printDebug("v cnt {}".format(uvArray[1].length())) # UV map. printMessage("Mapping UVs...") mesh.setUVs(uvArray[0], uvArray[1]) try: mesh.assignUVs(polygonCounts, polygonConnects) except RuntimeError: printDebug("mesh.assignUVs() failed. Assign manually...") for i in range(0, polygonConnects.length()): try: mesh.assignUV(i / 3, i % 3, polygonConnects[i]) except RuntimeError: printMessage("AssignUV failed: " + "[{}] = {}".format(i, polygonConnects[i])) # Rename mesh. printMessage("Renaming mesh...") transformDagPath = OpenMaya.MDagPath() OpenMaya.MDagPath.getAPathTo(transform, transformDagPath) meshName = cmds.rename( transformDagPath.fullPathName(), "NinjaMesh_{}".format(g_Mesh_Index) ) g_Mesh_Index = g_Mesh_Index + 1 # Apply textures. printMessage("Applying textures...") shader = cmds.shadingNode( "lambert", name="NinjaTexture_{}".format(g_Mesh_Index), asShader=True ) cmds.select(meshName) cmds.hyperShade(assign=shader) colorMap = cmds.shadingNode( "file", name="{}_colorMap".format(texture), asTexture=True ) cmds.connectAttr( "{}.outColor".format(colorMap), "{}.color".format(shader) ) cmds.setAttr( "{}.fileTextureName".format(colorMap), "{}/{}".format(texturePath, texture), type='string' ) # Set vertex color to White. printMessage("Forcing vertex color to white...") cmds.select(meshName) cmds.polyColorPerVertex(cdo=True, rgb=[1, 1, 1]) # Apply transformations. printMessage("Applying transformations...") cmds.setAttr("{}.rotateX".format(meshName), g_ninjarotX) cmds.setAttr("{}.rotateY".format(meshName), g_ninjarotY) cmds.setAttr("{}.rotateZ".format(meshName), g_ninjarotZ) cmds.setAttr("{}.scaleX".format(meshName), mdlscaler) cmds.setAttr("{}.scaleY".format(meshName), mdlscaler) cmds.setAttr("{}.scaleZ".format(meshName), mdlscaler) # Freeze transformations. printMessage("Zeroing new transform values...") cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0, pn=1) # Scale UVs. printMessage("Scaling UVs...") uvs = cmds.polyListComponentConversion(meshName, tuv=True) cmds.select(uvs) cmds.polyEditUV(su=uvscaler, sv=uvscaler*g_flipUV) # Normalize UV. if g_normalizeUV: printMessage("Normalizing UVs...") cmds.polyNormalizeUV(nt=1, pa=True, centerOnTile=True) # Merge duplicates. printMessage("Removing duplicate vertex...") cmds.select(cl=True) cmds.select(meshName) cmds.polyMergeVertex(d=0.01, am=True, ch=1) cmds.polyMergeUV(d=0.01, ch=True) # Reverse normals (First met in MWR) if g_reverseNormals: printMessage("Reversing normals...") cmds.select(cl=True) cmds.select(meshName) cmds.polyNormal(meshName, ch=1) cmds.select(cl=True) print("Import done for mesh '{}'".format(meshName))
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)