Exemplo n.º 1
0
def lsThroughFilter(*args, **kwargs):
    """
    Modifications:
      - returns an empty list when the result is None
      - returns wrapped classes
    """
    return map(_general.PyNode,
               _util.listForNone(cmds.lsThroughFilter(*args, **kwargs)))
Exemplo n.º 2
0
def updateTextures(txPath, txObjLs=None, updateMaya=True, copy=True):
    """
    Handles copying and updating texture file node paths for incoming txObjLs
    :param txPath: The directory of the new texture file path.
    :param txObjLs: A list of objects.
    :param updateMaya: Updated the file paths in the current scene.
    :param copy: Makes a copy of the textures to the directory txPath
    :return:
        If updateMaya=True: A dictionary of all modified texture 
        file nodes{texture File Node: file path before modification}
        If updateMaya=False: None
    """
    # txFullPath, txRelPath = txPaths
    currentPaths = {}
    if not txObjLs:
        fileNode = mc.itemFilter(byType='file')
        fileNodeLs = mc.lsThroughFilter(fileNode)
    else:
        txObjLsHist = mc.listHistory(txObjLs, f=True)
        txObjLsHist = list(set(txObjLsHist))
        txObjLsShd = mc.listHistory(txObjLsHist)
        txObjLsShd = list(set(txObjLsShd))
        fileNodeLs = mc.ls(txObjLsShd, type='file')
        fileNodeLs = list(set(fileNodeLs))
    if fileNodeLs:
        fileNodeLs = list(set(fileNodeLs))
        for fileNode in fileNodeLs:
            if not mc.getAttr('%s.useFrameExtension' % fileNode):
                filePath = mc.getAttr(fileNode + '.fileTextureName')
                #getting full path from mayaAttributes
                oldFilePath = filePath
                filePath = os.path.expandvars(filePath)
                if os.path.isfile(filePath):
                    fileName = filePath.split('/')[-1]
                    if copy:
                        shutil.copy(filePath, txPath)
                    if updateMaya:
                        currentPaths[fileNode] = oldFilePath
                        #vray does not support relative path env vars in texures. Until this changes full path is written
                        #mc.setAttr(fileNode + '.fileTextureName', os.path.join(txRelPath, fileName), type='string')
                        mc.setAttr(fileNode + '.fileTextureName',
                                   os.path.join(txPath, fileName),
                                   type='string')

    if updateMaya:
        return currentPaths
    else:
        return
Exemplo n.º 3
0
def getRenderNodes():
    """
    List all valid render nodes in scene
    """
    # Get Node Types
    renderTypes = cmds.listNodeTypes('texture')
    renderTypes.extend(cmds.listNodeTypes('utility'))
    renderTypes.extend(cmds.listNodeTypes('imageplane'))
    renderTypes.extend(cmds.listNodeTypes('shader'))

    # Get Nodes by Type
    renderNodes = cmds.ls(long=True, type=renderTypes)
    if not renderNodes: renderNodes = []
    mrRenderNodes = cmds.lsThroughFilter('DefaultMrNodesFilter')
    if not mrRenderNodes: mrRenderNodes = []
    renderNodes.extend(mrRenderNodes)

    # Remove Duplicates
    renderNodes = list(set(renderNodes))

    # Return Result
    return renderNodes
Exemplo n.º 4
0
def getRenderNodes():
    """
    List all valid render nodes in scene
    """
    # Get Node Types
    renderTypes = cmds.listNodeTypes('texture')
    renderTypes.extend(cmds.listNodeTypes('utility'))
    renderTypes.extend(cmds.listNodeTypes('imageplane'))
    renderTypes.extend(cmds.listNodeTypes('shader'))

    # Get Nodes by Type
    renderNodes = cmds.ls(long=True, type=renderTypes)
    if not renderNodes: renderNodes = []
    mrRenderNodes = cmds.lsThroughFilter('DefaultMrNodesFilter')
    if not mrRenderNodes: mrRenderNodes = []
    renderNodes.extend(mrRenderNodes)

    # Remove Duplicates
    renderNodes = list(set(renderNodes))

    # Return Result
    return renderNodes
Exemplo n.º 5
0
def getTypeNode(nodeType, nodeList):
    """ Return all the nodes of a specific type from a list of node """
    filterName = cmds.itemFilter(byType=nodeType, uniqueNodeNames=True)
    result = cmds.lsThroughFilter(nodeList, item=filterName)
    return result
Exemplo n.º 6
0
def getTypeNode(nodeType, nodeList):
    """ Return all the nodes of a specific type from a list of node """
    filterName = cmds.itemFilter(byType=nodeType, uniqueNodeNames=True)
    result = cmds.lsThroughFilter(nodeList, item=filterName)
    return result