根据nameSpace赋指定材质

来源:互联网 发布:三菱plc编程手册哪里有 编辑:程序博客网 时间:2024/05/16 08:13

在cg制作中,我们总会直接使用已经保存好的材质,因为如果材质或者物体过多的情况下,会出现重复的情况,这里使用了namespace来避开这个情况,下面是我从公司td那里获得的一小段脚本。

#################################################################
def setShader_func(shaderPath, obj) :
    "from gy"
    def stripDigit(name):
        for n in xrange(len(name), 0, -1):
            if not name[n-1].isdigit():
                return name[:n]
    def getUniqueNamespace(namespace):
        namespace = cmds.namespace(vn = namespace)
        if cmds.namespace(ex = namespace):
            num = 1
            namespace = stripDigit(namespace)
            while cmds.namespace(ex = "%s%d" % (namespace, num)):
                num += 1
            namespace = "%s%d" % (namespace, num)
        return namespace
    namespace = getUniqueNamespace("myShader")
    cmds.file(shaderPath, i = 1, ns = namespace)
    nodes = cmds.namespaceInfo(namespace, ls = 1)
    shadingGroup = cmds.ls(nodes, typ = "shadingEngine")[0]
    cmds.sets(obj, e = 1, fe = shadingGroup)
    cmds.namespace(mv = (namespace, ":"), f = 1)
    cmds.namespace(rm = namespace)

1 0
原创粉丝点击