maya如何知道MPxNode的输出网格是什么?

时间:2017-05-10 14:51:42

标签: python c++ maya

使用PolyModifierNode时,该节点有inMeshoutMesh属性/插件,隐藏inMesh并替换为outMesh 。 但是一般的MPxNode可能有许多输入和输出,可以以复杂的方式联网。

我在理解MPxNode结构时遇到的问题是,我没有看到maya知道哪种方式,输入中的哪些对象被转换为哪些输出对象。 我希望图中最后一个节点的outMesh与某个SceneRenderer.inputMeshes插件相连,但maya似乎会以某种方式自动检测应该呈现哪些未使用的outMesh插头。

最后,我想编写一个节点,它获取一个输入网格数组和一个额外的控制网格,并应输出一个修改过的网格数组,它取代了原始网格。

我正在使用计算,其中组中的所有对象相互影响,因此不能一个接一个地完成。每个输入可以使用一个节点,但计算功能也需要在所有其他输入网格上触发计算。

1 个答案:

答案 0 :(得分:3)

Maya没有检测到未连接的插头。相反,它会在节点网络中的某些内容发生变化时按需评估,并在必要时强制重新评估。使用MPxNode::attributeAffects()或其等效的Python初始化节点时,可以设置它关心的条件。输入的更改将根据需要由其他节点向下游推送;当更改进入您的节点时,它将调用MPxNode::compute compute()传递相应的插件作为参数。然后,您的节点将更新其输出,并将它们沿着链路传递到其他节点。

您可能不希望让您的节点获取输入节点数组并返回输出数组。制作一次只修改一个节点的节点更简单,更具有可能性。这有助于在依赖图中本地化chnges并使场景运行得更快。