Beispiel #1
0
def decoupeMesh():
    """
    Extract selected faces via duplicate

    :return: New mesh name
    :rtype: str
    """
    #--- Check Selection ---#
    selObject = mc.ls(sl=True, o=True)
    if not len(selObject) == 1:
        raise IOError("!!! Select only one object !!!")
    #--- Get Selected Components ---#
    selection = mc.ls(sl=True, fl=True)
    selFaces = []
    for sel in selection:
        selFaces.append(int(sel.split('.')[-1].replace('f[', '').replace(']', '')))
    #--- Duplique Object ---#
    tForm = mc.listRelatives(selObject[0], p=True)[0]
    dup = duplicateGeom(selObjects=tForm, name='%s__cut#' % tForm)
    mc.select(cl=True)
    for f in selFaces:
        mc.select('%s.f[%s]' % (dup[0], f), add=True)
    #--- Remove Unselected ---#
    pScene.invertSelection()
    mc.delete()
    #--- Add Info ---#
    pUtil.setNodeAttr(dup[0], 'baseObject', tForm, lock=True)
    mc.select(cl=True)
    return dup[0]
Beispiel #2
0
def decoupeMesh():
    """
    Extract selected faces via duplicate

    :return: New mesh name
    :rtype: str
    """
    # --- Check Selection ---#
    selObject = mc.ls(sl=True, o=True)
    if not len(selObject) == 1:
        raise IOError("!!! Select only one object !!!")
    # --- Get Selected Components ---#
    selection = mc.ls(sl=True, fl=True)
    selFaces = []
    for sel in selection:
        selFaces.append(int(sel.split(".")[-1].replace("f[", "").replace("]", "")))
    # --- Duplique Object ---#
    tForm = mc.listRelatives(selObject[0], p=True)[0]
    dup = duplicateGeom(selObjects=tForm, name="%s__cut#" % tForm)
    mc.select(cl=True)
    for f in selFaces:
        mc.select("%s.f[%s]" % (dup[0], f), add=True)
    # --- Remove Unselected ---#
    pScene.invertSelection()
    mc.delete()
    # --- Add Info ---#
    pUtil.setNodeAttr(dup[0], "baseObject", tForm, lock=True)
    mc.select(cl=True)
    return dup[0]
Beispiel #3
0
def overrideShader(colorIndex, objects=None, matName=None, useExisting=True):
    """
    create display override shader

    :param colorIndex: Maya color index
    :type colorIndex: int
    :param objects: Objects to assign
    :type objects: list
    :param matName: Material name
    :type matName: str
    :param useExisting: Use existing shader
    :type useExisting: bool
    """
    #--- Get Objects ---#
    if objects is None:
        objects = mc.ls(sl=True) or []
    else:
        if isinstance(objects, basestring):
            objects = [objects]
    #--- Get Mat Name ---#
    if matName is None:
        matName = 'mat_overrideColor_%s' % colorIndex
    #--- Assign Shader ---#
    color = pUtil.getColorFromIndex(colorIndex)
    if useExisting:
        if mc.objExists(matName):
            mat = matName
            sg = getShadingEngine(mat)[0]
        else:
            mat, sg = newMat('lambert', matName)
            pUtil.setNodeAttr(mat, 'color', color, dataType='double3')
        assignMat(sg, objects)
    else:
        for obj in objects:
            mat, sg = newMat('lambert', matName)
            pUtil.setNodeAttr(mat, 'color', color, dataType='double3')
            assignMat(sg, [obj])