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

How does maya know, what the output mesh of your MPxNode is?

当使用 PolyModifierNode 时,节点有一个 inMesh 和一个 outMesh attribute/plug,其中 inMesh 被隐藏并替换为 outMesh。 但是一般的MPxNode可能有很多输入和输出,可以通过复杂的方式联网。

我在理解 MPxNode 结构时遇到的问题是,我看不出 Maya 以何种方式知道输入中的哪些对象被转换成哪些输出对象。 我本以为图中最后一个节点的 outMesh 连接到某些 SceneRenderer.inputMeshes 插头,但 Maya 似乎以某种方式自动检测应该渲染哪些未使用的 outMesh 插头。

最后我想写一个节点,它得到一个输入网格数组和一个额外的控制网格,并且应该输出一个修改后的网格数组,它替换了原始网格。

我正在使用组中所有对象相互影响的计算,因此无法一一完成。可以为每个输入使用一个节点,但计算函数也需要触发所有其他输入网格的计算。

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

您可能不想让您的节点采用输入节点数组和 return 输出数组。制作一个一次只修改一个节点的节点更简单,更像 maya。这有助于本地化依赖图中的变化并使您的场景 运行 更快。