我将所有形状分配给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
有什么可以改变我的函数的最后两行来使它工作?
以下是使用cmds.sets()分配着色器的示例:
all = cmds.ls(type='mesh')
shadingEngine = 'initialShadingGroup'
cmds.sets(all, e=True, forceElement=shadingEngine)
您可以猜测,使用材质查询网格:
lamb1_mshs = cmds.sets(shadingEngine, q=True)
我得到它与:
for materialClass in materialClassList:
sets(materialClass.occlusionShadingGroup, e = True, forceElement = materialClass.meshList)
我现在创建materialClass时收集网格,这比为每个渲染层选择它们更有意义。