Example #1
0
    def doIt(self, args):

        if args.length() < 1:
            raise RuntimeError("have to specify 'insert'/'remove'!")

        if args.asString(0) == "double":
            multiplier = 2.0
        elif args.asString(0) == "half":
            multiplier = 0.5
        else:
            raise RuntimeError("have to specify 'double'/'half'!")

        (dagPath, comp) = mt.selected_dagPath_component()
        dagPath.extendToShape()

        meshFn = om.MFnMesh(dagPath)
        nFV = om.MIntArray()
        F = om.MIntArray()
        meshFn.getVertices(nFV, F)

        edgeIt = om.MItMeshEdge(dagPath, comp)

        outMeshAttr = meshFn.attribute("outMesh")
        outMeshPlug = om.MPlug(dagPath.node(), outMeshAttr)
        plugArray = om.MPlugArray()
        outMeshPlug.connectedTo(plugArray, True, True)

        foundTCC = False
        for k in range(0, plugArray.length()):
            TCCnode = plugArray[k].node()
            TCCDepNode = om.MFnDependencyNode(TCCnode)
            if TCCDepNode.typeName() == "TCC":
                foundTCC = True
                break

        if not foundTCC:
            raise Exception('did not find TCC node')

        eqc = cmds.getAttr(TCCDepNode.name() + ".eqc")
        itv = cmds.getAttr(TCCDepNode.name() + ".itv")

        he = mt.halfedges(dagPath, edgeIt.index())
        he = he[0]

        targetEqc = mt.get_halfedge_data(dagPath, eqc, he)

        for k in range(len(eqc)):
            if eqc[k] == targetEqc: itv[k] = itv[k] * multiplier

        cmds.setAttr(TCCDepNode.name() + ".itv", itv, type="doubleArray")
Example #2
0
    def doIt(self, args):

        if args.length()<1:
            raise RuntimeError("have to specify 'insert'/'remove'!");
            
        if args.asString(0)=="double":
            multiplier = 2.0;
        elif args.asString(0)=="half":
            multiplier = 0.5;
        else:
            raise RuntimeError("have to specify 'double'/'half'!");
    
        (dagPath, comp) = mt.selected_dagPath_component();
        dagPath.extendToShape();
        
        meshFn = om.MFnMesh(dagPath);
        nFV = om.MIntArray(); F = om.MIntArray(); 
        meshFn.getVertices(nFV, F);
        
        edgeIt = om.MItMeshEdge(dagPath, comp);
        
        
        outMeshAttr = meshFn.attribute( "outMesh" );
        outMeshPlug = om.MPlug(dagPath.node(), outMeshAttr );
        plugArray = om.MPlugArray(); outMeshPlug.connectedTo(plugArray, True, True);
                    
        foundTCC = False;
        for k in range(0, plugArray.length()):
            TCCnode = plugArray[k].node();
            TCCDepNode = om.MFnDependencyNode( TCCnode );
            if TCCDepNode.typeName() == "TCC":
                foundTCC = True; break;
                
        if not foundTCC: 
            raise Exception('did not find TCC node');

        eqc = cmds.getAttr(TCCDepNode.name()+".eqc");
        itv = cmds.getAttr(TCCDepNode.name()+".itv");
        
        he = mt.halfedges(dagPath, edgeIt.index()); he = he[0];
        
        targetEqc = mt.get_halfedge_data(dagPath, eqc, he);

        for k in range(len(eqc)): 
            if eqc[k]==targetEqc: itv[k] = itv[k] * multiplier;
            
        cmds.setAttr(TCCDepNode.name()+".itv", itv, type="doubleArray");
Example #3
0
def knot_modifier(modType):
    (dagPath, component) = mt.selected_dagPath_component()

    meshFn = om.MFnMesh(dagPath)

    tccNode = mt.get_TCC_DGnode(dagPath)

    itv = cmds.getAttr(tccNode.name() + ".itv")
    T = cmds.getAttr(tccNode.name() + ".T")

    ve = build_knot_removal_data(dagPath)

    R = []

    for (v, e) in ve.items():
        (he, v) = get_CV_line(dagPath, v, e[0], e[1])

        i = []
        for k in range(6):
            i.append(mt.get_halfedge_data(dagPath, itv, he[k]))

        p = []
        for k in range(1, 6):
            pk = om.MPoint()
            meshFn.getPoint(v[k], pk)
            p.append(Vec3(pk.x, pk.y, pk.z))

        if modType == KnotModifier.Insert:
            (p2, p3, p4) = compute_knot_insertion(p, i)
        elif modType == KnotModifier.Remove:
            (p2, p3, p4) = compute_knot_removal(p, i)
        else:
            raise Exception("Unknown Modifier")

        R.append((v[2], p2))
        R.append((v[3], p3))
        R.append((v[4], p4))

    return R
Example #4
0
def knot_modifier(modType):    
    (dagPath, component) = mt.selected_dagPath_component();
    
    meshFn = om.MFnMesh(dagPath);
    
    tccNode = mt.get_TCC_DGnode(dagPath);
    
    itv = cmds.getAttr(tccNode.name()+".itv");
    T = cmds.getAttr(tccNode.name()+".T");
    
    ve = build_knot_removal_data(dagPath);

    R = [];

    for (v,e) in ve.items():
        (he, v) = get_CV_line(dagPath, v, e[0], e[1]);

        i = [];
        for k in range(6):
            i.append(mt.get_halfedge_data(dagPath, itv, he[k]));
            
        p = [];
        for k in range(1,6):
            pk = om.MPoint(); meshFn.getPoint(v[k], pk); 
            p.append(Vec3(pk.x, pk.y, pk.z));

        if modType == KnotModifier.Insert:
            (p2, p3, p4) = compute_knot_insertion(p, i);
        elif modType == KnotModifier.Remove:
            (p2, p3, p4) = compute_knot_removal(p, i);
        else:
            raise Exception("Unknown Modifier");

        R.append( (v[2], p2) )
        R.append( (v[3], p3) )
        R.append( (v[4], p4) )
    
    return R;