2017-05-24 58 views
0

我想验证我的自定义MPxEmitterNode属性。Maya插件属性验证

我有force_min和force_max属性是maya说法中double3类型,基本上是包含双[3]数据的两个对象。

我想确保force_min小于3个组件的每个组件的force_max。我想通过在属性编辑器中的属性中输入一个值,或者为这些属性调用mels setAttr,然后通过“最大< max”检查,只交换最小值和最大值来做到这一点。

我已经尝试设置force_min,force_max和它们各自的组件x,y,z对象之间的ATTRIBUTE_AFFECTS关系。这似乎会导致一个循环问题导致玛雅崩溃。我也尝试编辑派生MPxEmitterNode的自定义计算函数,因此它将force_min和force_max值设置为交换。在这种情况下,force_ *属性似乎从不计算。

任何帮助将不胜感激。

回答

1

一般来说,'Maya'这样做的方法是让输出看起来错误,如果最小和最大值设置不正确。你不知道谁会设置这些属性 - 它可能是连接或脚本,甚至可能会在动画帧之间重置 - 所以最好让dag评估流过即使结果是无稽之谈。这就像在球体节点上设置半径为零 - 即使认为它是错误的,它是“正确的”。

但是,您可以交换compute()方法中的值,以获得与交换值无关的重复插入值本身的效果。从内部计算设置输入插头是一个坏主意,因为它会在dag评估流程中引入一个循环。 Dag节点必须是非循环的(这就是dag中的“a”:定向非循环图