您知道如果更改表达式中的nodeName,它也会更改其中的名称吗?好吧,我们如何为像pointPosition这样的东西做这个,其中nodeName在一个字符串里面?
例如:
vector $v = `pointPosition -world "outputCloth1.vtx[11]"`;
如果将outputCloth1的名称更改为myCloth,则表达式将停止工作,因为该字符串仍然显示为outputCloth1!
答案 0 :(得分:1)
不幸的是,简短的回答是你不能(很容易)..节点中的表达式可能是Maya的一部分,因为它存在于Maya主动监控框架的一部分内。你的脚本也不能这样说,因为对于Maya而言,它只是一堆文本,只要你告诉它就会读取和处理......有两种选择可供选择:
(如果可能)您可以重写表达式以动态引用对象例如,如果您知道outputCloth1始终是masterObjectGroup15的子代,则可以改为选择第一个孩子,而不是按名称引用。
进入PyMEL 。这类似于#1,因为您将引用该对象,如果更改名称,对该对象的引用仍然有效。这可能(好吧,它)超出了答案的范围,但我强烈建议你看一下PyMEL getting started docs,因为它们首先给出了一个很好的例子
您还可以考虑通过Maya API构建DG节点 - 与脚本相比,它的设置工作要多得多,但您正在做的是构建适合标准Maya框架的东西(它是一个自定义节点,基本上) - 这意味着您可以利用Maya为您所做的所有内部管理工作。耶!
答案 1 :(得分:0)
我认为你可以通过message属性实现你想要的东西。消息用于在Maya中将节点链接在一起,其中(以及其他内容)可以形成脚本的基础,这些脚本在重命名节点时自动更新名称。
抱歉,我没有更具体的示例atm,但请查看消息 - 这应该让您朝着正确的方向前进。