列出Maya中的所有外部资产

乔克·马蒂尼(JokerMartini)

在Maya中是否可以列出文件中正在使用的所有外部资产,例如纹理或其他引用的场景?

理想情况下,这将使用python完成。我对3ds max较为熟悉,所以我不确定maya是否具有等效于3ds max的功能,您可以通过以下操作简单地执行此操作...

收集类类型为Texturemap的所有资产,该资产返回文件路径。然后收集类类型为xref的所有资产,这将返回引用的场景,仅此而已!

威尼博士

您可以列出场景中所有引用的纹理,然后使用:cmds.ls(“ REF_NAME:*”,type =“ file”)

查询所有引用:cmds.file(q = 1,r = 1)

---编辑---我有时间写一个完整的代码示例:

import maya.cmds as cmds
import glob

files = cmds.ls(type=["file", "imagePlane"])
result = []
for i in files:
    if cmds.objectType(i) == "file":
        #animated ?
        testAnimated = cmds.getAttr("{0}.useFrameExtension".format(i))
        if testAnimated:
            # Find the path
            fullpath= cmds.getAttr("{0}.fileTextureName".format(i))

            # Replace /path/img.padding.ext by /path/img.*.ext
            image = fullpath.split("/")[-1]
            imagePattern = image.split(".")
            imagePattern[1] = "*"
            imagePattern = ".".join(imagePattern)

            # You could have done a REGEX with re module with a pattern name.padding.ext
            # We join the path with \\ in order to be Linux/Windows/Apple format
            folderPath = "\\".join(fullpath.split("/")[:-1] + [imagePattern])

            # Find all image on disk
            result+=(glob.glob(folderPath))
        else:
            result.append(cmds.getAttr("{0}.fileTextureName".format(i)))
    elif cmds.objectType(i) == "imagePlane":
        #animated ?
        testAnimated = cmds.getAttr("{0}.useFrameExtension".format(i))
        if testAnimated:
            # Find the path
            fullpath= cmds.getAttr("{0}.imageName".format(i))
            # Replace /path/img.padding.ext by /path/img.*.ext
            image = fullpath.split("/")[-1]
            imagePattern = image.split(".")
            imagePattern[1] = "*"
            imagePattern = ".".join(imagePattern)

            # You could have done a REGEX with re module with a pattern name.padding.ext
            # We join the path with \\ in order to be Linux/Windows/Apple format
            folderPath = "\\".join(fullpath.split("/")[:-1] + [imagePattern])

            # Find all image on disk
            result+=(glob.glob(folderPath))
        else:
            result.append(cmds.getAttr("{0}.imageName".format(i)))
#clear multiple instance
result = list(set(result))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

预装所有资产

来自分类Dev

列出Linux中的所有安装

来自分类Dev

列出elasticsearch索引中的所有字段?

来自分类Dev

列出COMobject中的所有方法

来自分类Dev

列出COMobject中的所有方法

来自分类Dev

列出多个目录中的所有文件

来自分类Dev

如何列出QListWidget中的所有项目

来自分类Dev

列出缓冲通道中的所有元素

来自分类Dev

列出SceneKit场景中的所有材质

来自分类Dev

列出Hibernate中的所有表

来自分类Dev

MAYA中的PYTHON:获取所有属性

来自分类Dev

列出云端硬盘中的所有文件

来自分类Dev

列出iOS中的所有相册

来自分类Dev

列出Python类中的所有变量

来自分类Dev

如何列出make中的所有目标?

来自分类Dev

列出Android中的所有应用

来自分类Dev

列出多个目录中的所有文件

来自分类Dev

如何列出make中的所有目标?

来自分类Dev

在ListView中列出所有激活的通知

来自分类Dev

在约束中列出所有可能的总和

来自分类Dev

列出SceneKit场景中的所有材质

来自分类Dev

列出缓存中存在的所有文件

来自分类Dev

MAYA中的PYTHON:获取所有属性

来自分类Dev

列出jQuery中的所有表头

来自分类Dev

在Django中列出所有用户

来自分类Dev

如何在屈臣氏数据科学经验中列出目录中的所有资产?

来自分类Dev

列出/获取 Outlook 中的所有 SentOnBehalfNames

来自分类Dev

列出 Swift 中的所有窗口名称

来自分类Dev

列出查询中的所有星期几