更改所有已分配网格上的着色器,而不使用hyperShade()

时间:2018-02-28 17:25:56

标签: python maya

我将所有形状分配给baseMaterial,选择形状然后分配occlusionShader。

for materialClass in materialClassList:
    select(materialClass.baseMaterial)
    hyperShade(objects="")
    hyperShade(a=materialClass.occlusionShader)

工作正常,但如果我将它用作预渲染脚本:

  Error: line 0: hyperShade command not supported in batch mode

我可以更改函数的最后两行以使其工作吗?

2 个答案:

答案 0 :(得分:0)

以下是使用cmds.sets()分配着色器的示例:

all = cmds.ls(type='mesh')
shadingEngine = 'initialShadingGroup'
cmds.sets(all, e=True, forceElement=shadingEngine)

你可以猜测,用材料查询网格:

lamb1_mshs = cmds.sets(shadingEngine, q=True)

答案 1 :(得分:0)

我得到了它的工作:

for materialClass in materialClassList:
    sets(materialClass.occlusionShadingGroup, e = True, forceElement = materialClass.meshList)

我现在创建materialClass时收集网格物体,这比为每个渲染层选择它们更有意义。

相关问题