如何在Maya 2018中使用python将着色器覆盖添加到渲染层



我想在渲染层中添加一个着色器覆盖,比如一个名为"myBlinn"的着色器。到目前为止,我已经能够创建一个渲染层,并创建一个由场景中所有对象组成的集合。我现在不知道如何使用python创建着色器覆盖。你们能帮忙吗?

这是迄今为止的代码。

import maya.app.renderSetup.model.override as override
import maya.app.renderSetup.model.selector as selector
import maya.app.renderSetup.model.collection as collection
import maya.app.renderSetup.model.renderLayer as renderLayer
import maya.app.renderSetup.model.renderSetup as renderSetup
rs = renderSetup.instance()
rl = rs.createRenderLayer("MyRenderSetupLayer")
c1 = rl.createCollection("meshCollection")
c1.getSelector().setPattern('**')
rs.switchToLayer(rl)

这是在maya 2019.1 中测试的代码

import maya.cmds as cmds
import maya.app.renderSetup.model.override as override
import maya.app.renderSetup.model.selector as selector
import maya.app.renderSetup.model.collection as collection
import maya.app.renderSetup.model.renderLayer as renderLayer
import maya.app.renderSetup.model.renderSetup as renderSetup
rs = renderSetup.instance()
try: rl = rs.getRenderLayer("myRenderSetupLayer")
except: rl = rs.createRenderLayer("myRenderSetupLayer")
try: c1 = rl.getCollectionByName("meshCollection")
except:  c1 = rl.createCollection("meshCollection")
# shading group filter
try: c2 = c1.getCollectionByName("SGs")
except:  c2 = c1.createCollection("SGs")
sl2= c2.getSelector()
sl2.setFilterType(11)   # Collection Filters = Shading engines
sl2.setPattern('*') # 從上層 Collection 繼承的所有對象
# Shader Override
try: so = c2.getOverrides()[0]  # 返回 Collection 下的 Override 列表
except: so = c2.createOverride("anyName", "shaderOverride")
# assign shader
so.setShader("myBlinn")

最新更新