如何使用Python将所选对象添加到Maya 2017中的renderLayerSetup?

时间:2019-05-01 14:46:46

标签: python maya

我正在尝试制作Python代码以仅在Maya中渲染所选对象,并且想知道如何在Maya 2017中将所选对象添加到renderLayerSetup?

我尝试使用发现的一些代码

import maya.app.renderSetup.model.renderSetup as renderSetup
rs = renderSetup.instance()
test = rs.createRenderLayer('render')
scene_Assets = test.createCollection('scene_Assets')
scene_Assets.getSelector().setPattern('name')

但是此代码要求我使用对象名称添加到集合中

我希望输出结果能够将对象添加到集合中,而不必重命名所有名称。

2 个答案:

答案 0 :(得分:2)

当我正在四处寻找自己的小头痛的解决方案时,偶然发现了一条旧线程,并认为我可以提供帮助。 (如果有人对如何获取集合中的集合对象有任何提示,请给我一条消息。我可以找到该模式,但找不到通过添加或拖放添加的模式。)

无论如何,我实际上对编程还是有点陌生​​,所以这可能不是最佳的解决方案,但它在Maya 2018.6中有效(上面的答案对我不起作用),因此它可能对某人有帮助:

import maya.app.renderSetup.model.renderSetup as renderSetup
import maya.cmds as mc

rs = renderSetup.instance()

#taking the selection and bring it through a for loop to format it.
selectionLi = mc.ls(sl=1)
selection=""
for each in selectionLi:
    selection += each +", "

test = rs.createRenderLayer('render')
scene_Assets = test.createCollection('scene_Assets')
scene_Assets.getSelector().setPattern(str(selection))

答案 1 :(得分:0)

这是我的代码,它适用于Maya 2019.1

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
import maya.cmds as cmds

# 連接 render setup,如無,則新建
rs = renderSetup.instance()

# 連接 render layer,如無,則新建
try: rl = rs.getRenderLayer("previewLayer") # 如成功:返回實例;如失敗:拋出異常
except: rl = rs.createRenderLayer("previewLayer")

# 連接對象集合 collection,如無,則新建
try: c1 = rl.getCollectionByName("previewCollection")
except:  c1 = rl.createCollection("previewCollection")

# 連接選擇器 selector
sl = c1.getSelector()

# staticSelection
ss = sl.staticSelection

# add the selection to list
ss.add(cmds.ls(sl=1))

# remove all static selection from the list
ss.remove(ss.asList())