使用attributeAffects
函數可以鏈接Maya節點的兩個屬性。例如,輸入屬性x
可以鏈接到輸出屬性y
。這意味着當更改x
時,Maya將在給定節點上運行compute()
回調函數,以計算y
。轉換節點更改時強制計算(Maya插件)
但是,據我所知,只有節點本身上的屬性才能從插件內部這樣連接。
在我的插件中,我擴展了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)
我找不到任何有關如何做到這一點的文檔!有沒有人做過/知道如何?有一種方法在腳本編輯器(蟒蛇)執行以下操作來破解這樣的:
import maya.cmds as cmds
# Creates CustomNode1, which is linked to transform1 in the DG.
cmds.createNode("CustomNode")
cmds.connectAttr("transform1.translateX", "CustomNode.out")
cmds.connectAttr("transform1.translateZ", "CustomNode.out")
很好的回答。我不太清楚Maya節點背後的語義,但現在對我來說這更清晰 - 你說的話很有意義。 謝謝! – rykardo 2012-08-12 03:27:26
還有一件事可以讓你知道。如果你正確地組織你的代碼,那就是你只計算每個請求的最小數量的插槽,即使在內部時也是m輸入和輸出。這意味着您檢查Maya要求的內容。然後,您可以創建一個緩存結果而無需執行此操作的節點,並且它總是以正確的順序進行評估。它允許你在節點內部計算之間注入不同的節點。您可以使用許多Maya工廠節點(如運動路徑方位計算)來執行此操作,即使所有計算都在節點內部進行。所以節點中的節點。 – joojaa 2012-08-12 18:19:54