使用PolyModifierNode时,该节点有inMesh
和outMesh
属性/插件,隐藏inMesh
并替换为outMesh
。
但是一般的MPxNode可能有许多输入和输出,可以以复杂的方式联网。
我在理解MPxNode结构时遇到的问题是,我没有看到maya知道哪种方式,输入中的哪些对象被转换为哪些输出对象。
我希望图中最后一个节点的outMesh
与某个SceneRenderer.inputMeshes
插件相连,但maya似乎会以某种方式自动检测应该呈现哪些未使用的outMesh
插头。
最后,我想编写一个节点,它获取一个输入网格数组和一个额外的控制网格,并应输出一个修改过的网格数组,它取代了原始网格。
我正在使用计算,其中组中的所有对象相互影响,因此不能一个接一个地完成。每个输入可以使用一个节点,但计算功能也需要在所有其他输入网格上触发计算。
答案 0 :(得分:3)
Maya没有检测到未连接的插头。相反,它会在节点网络中的某些内容发生变化时按需评估,并在必要时强制重新评估。使用MPxNode::attributeAffects()
或其等效的Python初始化节点时,可以设置它关心的条件。输入的更改将根据需要由其他节点向下游推送;当更改进入您的节点时,它将调用MPxNode::compute compute()
传递相应的插件作为参数。然后,您的节点将更新其输出,并将它们沿着链路传递到其他节点。
您可能不希望让您的节点获取输入节点数组并返回输出数组。制作一次只修改一个节点的节点更简单,更具有可能性。这有助于在依赖图中本地化chnges并使场景运行得更快。