- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
hello. I work in Python. This probleme makes me crazy from several days.
I want to create a render layers with different collections each of them having a shader override.
but each time a new override come, it overwrite the others. someone can tell me where I'm wrong ?
I post this exemple:
import maya.cmds as cmds
from maya.app import renderSetup
import maya.api.OpenMaya as OpenMaya
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: rLyr = rs.getRenderLyyer("colourLayer")
except: rLyr = rs.createRenderLayer("colourLayer")
listRED=('pCo*1')
listGREEN=('pTo*1')
listBLUE=('pCu*1')
listNOIR=('pCy*1')
listWHITE=('pSp*1')
mel.eval('polyCone -r 1 -h 2 -sx 20 -sy 1 -sz 0 -ax 0 1 0 -rcp 0 -cuv 3 -ch 1;polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;polyTorus -r 1 -sr 0.5 -tw 0 -sx 20 -sy 20 -ax 0 1 0 -cuv 1 -ch 1;move -r -os -wd 3.246282 0 2.41639 ;select -r pCone1 ;move -r -os -wd -1.846807 0 2.730534 ;polyCylinder -r 1 -h 2 -sx 20 -sy 1 -sz 1 -ax 0 1 0 -rcp 0 -cuv 3 -ch 1;move -r -os -wd -4.264135 0 -2.713963 ;polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;move -r -os -wd 1.622641 0 -3.675104 ;')
rdm = cmds.shadingNode ('lambert', asShader=True, n='redMat_shd') #red material
[cmds.setAttr( '{}.{}'.format(rdm, channel), 1, 0, 0, type='double3') for channel in ('color','incandescence')]
redColl = rLyr.createCollection('redCollection')
over_red = redColl.createOverride('redOverride', OpenMaya.MTypeId(0x58000386))
redColl.getSelector().setPattern(listRED)
over_red.setShader(str(rdm))
gdm = cmds.shadingNode ('lambert', asShader=True, n='greenMat_shd') #green material
[cmds.setAttr( '{}.{}'.format(gdm, channel), 0, 1, 0, type='double3') for channel in ('color','incandescence')]
greenColl = rLyr.createCollection('greenCollection')
over_green = greenColl.createOverride('greenOverride', OpenMaya.MTypeId(0x58000386))
greenColl.getSelector().setPattern(listGREEN)
over_green.setShader(str(gdm))
bdm = cmds.shadingNode ('lambert', asShader=True, n='blueMat_shd') #blue material
[cmds.setAttr( '{}.{}'.format(bdm, channel), 0, 0, 1, type='double3') for channel in ('color','incandescence')]
blueColl = rLyr.createCollection('blueCollection')
over_blue = blueColl.createOverride('blueOverride', OpenMaya.MTypeId(0x58000386))
blueColl.getSelector().setPattern(listBLUE)
over_blue.setShader(str(bdm))
Solved! Go to Solution.