【发布时间】:2014-06-26 03:09:30
【问题描述】:
我想知道是否可以重新选择 rsList 中的每一项? 我在下面引用了一个简单的例子,但我正在查看场景中的数百个项目,因此下面是我能够根据我对 Python 的有限知识提出的最简单的编码形式
rsList = cmds.ls(type='resShdrSrf')
# Output: [u'pCube1_GenShdr', u'pPlane1_GenShdr', u'pSphere1_GenShdr']
我尝试使用以下 cmds.select,但它考虑了我的最后一个选择(在内存中) - pSphere1_GenShdr,而忘记了其他 2 个,即使在 UI 中看到所有三个项目都被选中。
尝试使用列表和追加,但它似乎也没有工作,选择保持不变......
list = []
for item in rsList:
list.append(item)
cmds.select(items)
#cmds.select(list)
因此,我是否可以对每个项目单独执行cmds.select?
【问题讨论】:
-
所以你的说法:
rsList.select(list, replace=True)不选择项目?您的循环本身毫无意义,您没有项目变量。对象名称是否有可能在两者之间发生变化。 -
@joojaa 对象名称没有变化。情况是这样的:
rexShaderSrf- 它们是自定义着色器,但由于某些原因,除非我手动选择每个着色器,否则我会得到黑色渲染。如果我使用上面的代码,尽管它会在 hypershade 中打印并突出显示所有 3 个,但在再次重新渲染时,它只会渲染列表中的最后一个选择。因此,除非我必须手动重新选择其他 2 个,否则我将能够获得正确的渲染。因此,我认为可能有一些方法可以对列表中的所有项目再次进行强制选择 -
听起来更像是影响网络的问题。在这种情况下,刷新的不是选择,而是他 gui。由于 gui 不会在您的循环中刷新,因此它什么也不做。重新设计节点初始化。
-
@joojaa 你是什么意思?自定义着色器本身不是我创建的。有什么方法可以在 Maya 中或通过脚本解决它?
-
或者是否有任何类型的文档可以让我阅读更多相关信息?