0

我有一个奇怪的问题,我的节点的计算功能以相反的顺序打印出调试信息。

我正在尝试制作一个自定义同步节点,它允许我同步两个输入节点的属性而不锁定这些属性。我的节点有四个通用输入属性,它们将两个属性的原始输入同步,以及每个属性的转换版本,以允许同步不同类型的属性(rawInputA、rawInputB、convertedInputA、convertedInputB)。该节点有两个输出,受每个相应输入的影响:

outputA 受:rawInputA、convertedInputA 影响 outputB 受:rawInputB、convertedInputB

输出连接到虚拟定位器,因为它们实际上仅用于触发节点的计算功能,然后设置输入节点本身的正确属性值(这样做是为了避免循环依赖和属性被锁定)。

如果改变了 inputA 属性,这会导致同步节点计算并设置另一个 inputB 节点的属性值,这会导致同步节点再次计算(尽管这次它不会设置任何值,因为它们已经正确)。我在开始和结束以及中间添加了调试打印语句到计算函数。在第一次计算调用时,它们以正确的顺序打印,但在第二次调用时,它们以相反的顺序打印,这真的很奇怪......

我认为可能相关的一个可能问题是,在同步节点计算之后,rawInput 属性插件之一是脏的(不是每次,它似乎与哪个输入属性 A 或 B 是有关改变)。

我应该注意到属性已正确更新,因此节点似乎可以按预期工作,但我正在尝试通过更新视口预览和同步属性的属性编辑器来解决其他一些错误,这就是我遇到的方式奇怪的问题。

更新 - 这是连接渐变节点颜色条目的位置和一块几何图形的节点设置示例。

测试节点设置

通过在属性编辑器中设置值来更改颜色输入位置会在脚本编辑器中产生以下输出:

setAttr "ramp1.colorEntryList[0].position" 0.5;
SyncNode compute called!
    Plug = aOutputA
    Value changed
        set source plug with 3 double
SyncNode compute finished!

SyncNode compute finished!
    Plug = aOutputB
SyncNode compute called!

TL;DR - 是否有任何东西会导致依赖节点的计算函数中的调试语句在脚本编辑器输出中以相反的顺序打印?

4

0 回答 0