在所有指定的网格上更改着色器,而不使用 hyperShade()
change shader on all assigned meshes, without using hyperShade()
我将所有形状分配给 baseMaterial,select 形状,然后分配 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)
如您所料,使用 material 查询网格:
lamb1_mshs = cmds.sets(shadingEngine, q=True)
我可以使用它:
for materialClass in materialClassList:
sets(materialClass.occlusionShadingGroup, e = True, forceElement = materialClass.meshList)
我现在在创建 materialClass 时收集网格,这比为每个渲染层选择它们更有意义。
我将所有形状分配给 baseMaterial,select 形状,然后分配 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)
如您所料,使用 material 查询网格:
lamb1_mshs = cmds.sets(shadingEngine, q=True)
我可以使用它:
for materialClass in materialClassList:
sets(materialClass.occlusionShadingGroup, e = True, forceElement = materialClass.meshList)
我现在在创建 materialClass 时收集网格,这比为每个渲染层选择它们更有意义。