我将所有形状分配给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
我可以更改函数的最后两行以使其工作吗?
答案 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时收集网格物体,这比为每个渲染层选择它们更有意义。