smoothBinding without any joints.
# this demo binds locator bones only.
def _getSkinClusterNode(mesh):
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[*]",sm=31);
for v in vtx: mc.skinPercent(sC,v,tv=[j1,0.0]);
mc.skinCluster(sC,e=1,ri=j1);
mc.delete(j1);
mc.select(poly);
_demo_addRemoveInf();
Comments
Post a Comment