我正在尝试制作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')
但是此代码要求我使用对象名称添加到集合中
我希望输出结果能够将对象添加到集合中,而不必重命名所有名称。
答案 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())