使用attributeAffects
函数可以链接Maya节点的两个属性。例如,输入属性x
可以链接到输出属性y
。这意味着当x
发生更改时,Maya将在给定节点上运行compute()
回调函数,以计算y
。在
然而,据我所知,只有节点本身的属性可以像这样从插件内部连接。在
在我的插件中,我扩展了一个MPxLocator
,并使输出属性out
。我想做以下事情:
# replace <...> with transform node name.
attributeAffects(CustomNode.out, <custom node's tranform node>.translateX)
attributeAffects(CustomNode.out, <custom node's tranform node>.translateZ)
我根本找不到任何关于如何做到这一点的文档!有人做过吗/知道怎么做吗?有一种方法可以通过在脚本编辑器(python)中执行以下操作来解决此问题:
^{pr2}$
按设计,一个节点不应该知道其他节点。也就是说,如果节点有一些它需要的数据,那么这些数据需要是内部的,或者在创建或由用户创建时连接进来。这使得Maya变得高效。并不是说Maya实际上执行了这一点,但是忽略了这个设计思想会让您非常不高兴,因为您一直在与Maya抗争(加上它更容易出错,需要维护的代码)。在
所以这给你留下了两个选择:
这些是你唯一明智的选择。但如果你真的必须这样做,你也可以做你所要求的,但你将做你自己的事件监测之上的免费性能优化一个玛雅提供。这是一个额外的代码和更多的调试部分,它将在所有方面都是低劣的。在
注:你的破解之所以奏效,是因为Maya对连接的求值方式与它们的生成方式相反,因此如果你使输出变脏,并且要求Maya评估输出,则Maya将启动计算
*与时间一样,如果创建名为time of time type的属性,则Maya将在不询问和显示的情况下为您连接该属性,除非您将其连接到其他对象。着色主要基于这些连接。在
相关问题 更多 >
编程相关推荐