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