Как добавить переопределение шейдера для рендеринга слоя в Maya 2018 с использованием Python - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу добавить переопределение шейдера, скажем, шейдера 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)

1 Ответ

0 голосов
/ 03 июня 2019

вот код, протестированный в 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")
...