Posts

Showing posts from July, 2017

smoothBinding without any joints.

# this demo binds locator bones only. def _getSkinClusterNode(mesh): import maya.cmds as mc; sC = mc.ls(mc.listHistory(mesh,f=0),type="skinCluster"); if len(sC): sC = sC[0]; else: sC = False; return(sC); def _spaceLocator(pos): import maya.cmds as mc; mc.spaceLocator(); sL = mc.ls(sl=1)[0]; mc.xform(sL,ws=1,t=pos); return(sL); def _demo_addRemoveInf(): import maya.cmds as mc; import maya.mel as mm; mc.select(cl=1); mc.joint(); j1 = mc.ls(sl=1,l=1)[0]; mc.xform(j1,ws=1,t=[1,2,3]); mc.polyCube(w=10,h=10,d=10,sx=1,sy=1,sz=1,ax=[0,1,0],cuv=4,ch=0); poly = mc.ls(sl=1)[0]; mc.select(j1,poly); mm.eval("SmoothBindSkin;"); sLs = []; sLs.append( _spaceLocator([2,3,-4]) ); sLs.append( _spaceLocator([4,2,1]) ); sLs.append( _spaceLocator([-2,-1,-2]) ); sC = _getSkinClusterNode(poly); mc.skinCluster(sC,e=1,ai=sLs); vtx = mc.filterExpand(poly+".vtx[*]...

Speed Test: range() vs enumerate() on Maya

def _speed1(): import maya.cmds as mc; import time; col = []; count = 0; #st = time.time(); sel = mc.ls(sl=1); verts = mc.filterExpand(sel,sm=31); num = len(verts); st = time.time(); for i in range(0,num): for j in range(0,num): col.append(verts[j]); count += (i+1)*(j+1); et = time.time(); print et - st; print "#"+str(st); print "#"+str(et); def _speed2(): import maya.cmds as mc; import time; col = []; count = 0; #st = time.time(); verts = mc.ls(os=1,fl=1); st = time.time(); for i,v1 in enumerate(verts): for j,v2 in enumerate(verts): col.append(v2); count += (i+1)*(j+1); et = time.time(); print et - st; print "#"+str(st); print "#"+str(et); _speed1(); # winner _speed2();