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[*]",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

Popular posts from this blog

HIK: Getting current character and current source.